Помощь - Поиск - Пользователи - Календарь
Полная версия: Кривые второго порядка
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Ivon
С клавиатуры вводится общее уравнение кривой второго порядка. Необходимо определить: является данная кривая гиперболой параболой или элипсом. :molitva:


Эх сессия... Спасите и помогите :molitva: :p2:
volvo
Цитата(Ivon @ 4.06.05 1:09)
С клавиатуры вводится общее уравнение кривой второго порядка.
Пример ввода с клавиатуры приведи, чтобы знать, что может быть введено... А еще лучше - несколько примеров.
Ivon
общее уравнение кривой имеет вид Ax*x+Bxy+Cy*y+Dx+Ey+F=0 или к примеру x*x-2x+4y+y*y-20=0. Ввести я должен 1; 0; -2; 1; 4; -20.
volvo
Цитата(Ivon @ 4.06.05 2:44)
общее уравнение кривой имеет вид Ax*x+Bxy+Cy*y+Dx+Ey+F=0

Ну, так это же канонический вид общего уравнения прямой... Тогда в чем проблема? Я думал, тебе нужно анализировать строку, приводить подобные, и т.д.

Если у тебя уже известны коэффициенты канонического представления кривой, то ее тип определяется так:
если B, D, E = 0 и A, C, F <> 0:
A > 0 и F < 0: Эллипс
A < 0 и F <> 0: Гипербола

если B, C, D = 0 и A, E, F <> 0:
E <> 0: парабола
E = 0: Пара прямых (действительных или мнимых)
Guest
не спрю, если B, D, E = 0 то будет каноническое уравнение. Но вводить надо общее. т.е. данный алгоритм не подходит :p2:
volvo
Нет, ты не понял, вводишь все коэффициенты общего уравнения:
readln(A, B, C, D, E, F);

и потом проверяешь:
Цитата
если B, D, E = 0 и A, C, F <> 0:
A > 0 и F < 0: Эллипс
A < 0 и F <> 0: Гипербола

если B, C, D = 0 и A, E, F <> 0:
E <> 0: парабола
E = 0: Пара прямых (действительных или мнимых)

дело в том, что определить тип кривой можно только в том случае, если она задана канонически, и если B, D, E = 0 не выполняется, то попробуй сам (не программно, и не строя графика, а аналитически) определить тип кривой rolleyes.gif
Guest
Аналитичиски можно. Пробовал получалось. Алгорит там довольно сложный и написать его программно не смогу.
volvo
Тогда опиши алгоритм, поможем реализовать...
Ivon
x2+y2+8x4y-5=0
x2+8x+16-16+y2-4y+4-4-5=0
(x+4)2+(y-2)2=25 – уравнение окружности (эллипса)

В файлах методичка по кривым второго порядка
volvo
А проверь-ка вот это со своими значениями:
const
eps = 0.001;
var
A, B, C, D, E, F: real;

begin
readln(A, B, C, D, E, F);
if abs( C ) > eps then begin { центральные кривые }
if (C > 0) and (F < 0) then writeln('эллипс');

if (C > 0) and (F > 0) then writeln('мнимый эллипс');

if (C < 0) and (abs(F) > eps) then writeln('гипербола');
end
else begin { параболические прямые }
if abs(E) > eps then writeln('парабола')
else begin
writeln('пара прямых (действительных или мнимых)');
end;
end

end.

Что она тебе выдаст на тестовых примерах? (наверняка они у тебя есть ;) )
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.