Форум программистов, компьютерный форум, киберфорум
Наши страницы
Matlab
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Ромуальд_7
5 / 5 / 2
Регистрация: 11.04.2015
Сообщений: 303
1

Построение кривых второго порядка (окружность, эллипс, парабола, гипербола)

24.11.2015, 20:34. Просмотров 1044. Ответов 5
Метки нет (Все метки)

общее задание: нужно построить гиперболу с заданными "параметрами" a и b, а также оси координат, директрисы, фокусные точки; после чего соединить некоторые элементы.
пример готовой "вещи" на картинке ниже. нужно написать код построения этой самой "вещи".
построение особых вопросов не вызвало, а вот с поворотом на угол через матрицу поворота, прям, беда - поворачиваться - поворачиваются, но уезжают, почему-то, в неизвестном направлении.
Пожалуйста, помогите разобраться в причинах такого поведения прямых на графике.

Примечание: использование высокоуровневых команд для аналогичных построений запрещено.

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
t=linspace(-pi/2,pi/2);
a=4.4; b=1.7; x0=-3; y0=-1;
phi=0*(pi/180);        %поворот на любой некоторый угол (здесь - 0, и всё нормально)
R=[cos(phi) -sin(phi); sin(phi) cos(phi)];
XY = R*[a*sinh(t); b*cosh(t)];  %ввод основного уравнения гиперболы в параметрическом виде
del_x = 12; ax_x = R*[-del_x del_x; 0 0];
del_y = 8; ax_y = R*[0 0; -del_y del_y];
line(XY(1,:)+x0, XY(2,:)+y0, 'color','b') %вывод верхеней ветви гиперболы
line(-XY(1,:)+x0, -XY(2,:)+y0, 'color','b') %вывод нижней ветви гиперболы
line(ax_x(1,:)+x0, ax_x(2,:)+y0,'color','k') %вывод осей: x
line(ax_y(1,:)+x0, ax_y(2,:)+y0,'color','k') %          : y
title('\it\bfGiperbola \rm(\ita\rm=4.4, \itb\rm=1.7)')
axis equal
%c=[0 0;-sqrt(a^2+b^2) sqrt(a^2+b^2)];
c=sqrt(a^2+b^2);
e=c./b;
Focuses = R*[0+x0 0+x0;-c+y0 c+y0];
FocusesText = R*[-c c;0.05*c 0.05*c];
Directrices=R*[-8*b 5*b -8*b 5*b;...
             -b./e+y0 -b./e+y0 b./e+y0 b./e+y0] 
         
%директрисы выводятся и поворачиваются правильно, но сдвигаются в неизвестном направлении
     
line(Directrices(1,1:2), Directrices(2,1:2), 'color', 'g', 'LineWidth',2)
line(Directrices(1,3:4), Directrices(2,3:4), 'color', 'g', 'LineWidth',2)
line(Focuses(1,:), Focuses(2,:), 'Marker','o','MarkerEdgeColor','b','MarkerFaceColor','y', 'LineStyle', 'None')  
 
%с фокусами то же самое
Добавлено через 8 минут
график готовой функции - https://yadi.sk/i/_bhQ3LNSkhgcq
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2015, 20:34
Ответы с готовыми решениями:

Построение кривых второго порядка.Гипербола и парабола
Доброго времени суток! Помогите, пожалуйста, построить гиперболу и параболу. Я не могу построить т....

Построение кривой второго порядка. Гипербола
Помогите,кто может срочно!!!Не Получается нормально вывести директрисы, точки на гиперболе и...

Написать программу для построения графиков кривых второго порядка (гипербола)
Написать программу для построения графиков кривых второго порядка(гипербола). При этом пользователь...

Эллипс, гипербола и парабола
Необходимо составить уравнение: А) эллипса Б) Параболы в) Гиперболы Дано: 1) E=2/3 A(-6;0)...

Построение кривых второго порядка
Доброго времени суток! Написал программу, но она не выводит не одного значения на график, не пойму...

5
SSC
Эксперт по математике/физике
3142 / 1538 / 465
Регистрация: 09.04.2015
Сообщений: 4,286
25.11.2015, 09:31 2
Ветви и оси Вы сначала поворачиваете, а потом смещаете,
а фокусы и директрисы наоборот
0
Ромуальд_7
5 / 5 / 2
Регистрация: 11.04.2015
Сообщений: 303
27.11.2015, 23:55  [ТС] 3
ваши слова не лишены смысла, однако у меня так и сделано. и это неправильно. подведя промежуточный итог: проблема решена на 0%
0
SSC
Эксперт по математике/физике
3142 / 1538 / 465
Регистрация: 09.04.2015
Сообщений: 4,286
30.11.2015, 09:36 4
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
clc
clear all
t=linspace(-pi/2,pi/2);
a=4.4; b=1.7; x0=-3; y0=-1;
phi=20*(pi/180);        %поворот на любой некоторый угол (здесь - 0, и всё нормально)
%R=[cos(phi) -sin(phi); sin(phi) cos(phi)];
R=[cos(phi) sin(phi); -sin(phi) cos(phi)];
XY = R*[a*sinh(t); b*cosh(t)];  %ввод основного уравнения гиперболы в параметрическом виде
del_x = 12; ax_x = R*[-del_x del_x; 0 0];
del_y = 8; ax_y = R*[0 0; -del_y del_y];
line(XY(1,:)+x0, XY(2,:)+y0, 'color','b') %вывод верхеней ветви гиперболы
line(-XY(1,:)+x0, -XY(2,:)+y0, 'color','b') %вывод нижней ветви гиперболы
line(ax_x(1,:)+x0, ax_x(2,:)+y0,'color','k') %вывод осей: x
line(ax_y(1,:)+x0, ax_y(2,:)+y0,'color','k') %          : y
title('\it\bfGiperbola \rm(\ita\rm=4.4, \itb\rm=1.7)')
axis equal
%c=[0 0;-sqrt(a^2+b^2) sqrt(a^2+b^2)];
c=sqrt(a^2+b^2);
e=c./b;
%Focuses = R*[0+x0 0+x0;-c+y0 c+y0]
Focuses = R*[0 0;-c c]+[x0 x0;y0 y0]
FocusesText = R*[-c c;0.05*c 0.05*c];
%Directrices=R*[-8*b 5*b -8*b 5*b;-b./e+y0 -b./e+y0 b./e+y0 b./e+y0] 
Directrices=R*[-del_x del_x -del_x del_x;-b./e -b./e b./e b./e]+[x0 x0 x0 x0;y0 y0 y0 y0]
         
%директрисы выводятся и поворачиваются правильно, но сдвигаются в неизвестном направлении
     
line(Directrices(1,1:2), Directrices(2,1:2), 'color', 'g', 'LineWidth',2)
line(Directrices(1,3:4), Directrices(2,3:4), 'color', 'g', 'LineWidth',2)
line(Focuses(1,:), Focuses(2,:), 'Marker','o','MarkerEdgeColor','b','MarkerFaceColor','y', 'LineStyle', 'None')  
 
%с фокусами то же самое
Тяжело, когда сами не хотят ничего понять и сделать, даже с подсказки
0
bobah16
30.11.2015, 10:17
  #5

Не по теме:

Цитата Сообщение от SSC Посмотреть сообщение
Тяжело, когда сами не хотят ничего понять и сделать, даже с подсказки
Ага, ведь на форуме все сделают за меня:D
Вообще мне не нравится эта практика, что многие тут получают решение заданий университетских не шевельнув ни извилиной. Пусть сами делают, а тут только подсказки будут получать. С другой стороны отупление таких вот студентов не наша проблема. Пусть как хотят так и учатся.

0
Ромуальд_7
5 / 5 / 2
Регистрация: 11.04.2015
Сообщений: 303
01.12.2015, 20:52  [ТС] 6
кстати, вы зря так говорите. я надеялся, что мне помогут разобраться быстрее, но увы и ах..
всем спасибо, но я разобрался сам. кому интересен итог, могу выложить готовую программу.
0
01.12.2015, 20:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2015, 20:52

кривая второго порядка(парабола)
пожалуйста помогите решить задание!( Дана парабола 4x^2-8x-y+7=0. Найдите координаты фокуса и...

Точки пересечения кривых второго порядка.
Здравствуйте.Подскажите, пожалуйста, формулу нахождения точки пересечения уравнений кривых второго...

Рисование графиков кривых второго порядка
Вообщем сейчас нужно делать Мат Анализ... интегралы... чтобы увидеть пределы интегрирования, нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru