Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Кривые второго порядка

Автор: Ivon 4.06.2005 5:09

С клавиатуры вводится общее уравнение кривой второго порядка. Необходимо определить: является данная кривая гиперболой параболой или элипсом. :molitva:


Эх сессия... Спасите и помогите :molitva: :p2:

Автор: volvo 4.06.2005 6:09

Цитата(Ivon @ 4.06.05 1:09)
С клавиатуры вводится общее уравнение кривой второго порядка.
Пример ввода с клавиатуры приведи, чтобы знать, что может быть введено... А еще лучше - несколько примеров.

Автор: Ivon 4.06.2005 6:44

общее уравнение кривой имеет вид Ax*x+Bxy+Cy*y+Dx+Ey+F=0 или к примеру x*x-2x+4y+y*y-20=0. Ввести я должен 1; 0; -2; 1; 4; -20.

Автор: volvo 4.06.2005 13:07

Цитата(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 4.06.2005 15:47

не спрю, если B, D, E = 0 то будет каноническое уравнение. Но вводить надо общее. т.е. данный алгоритм не подходит :p2:

Автор: volvo 4.06.2005 15:58

Нет, ты не понял, вводишь все коэффициенты общего уравнения:

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 4.06.2005 16:21

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

Автор: volvo 4.06.2005 16:25

Тогда опиши алгоритм, поможем реализовать...

Автор: Ivon 4.06.2005 19:54

x2+y2+8x4y-5=0
x2+8x+16-16+y2-4y+4-4-5=0
(x+4)2+(y-2)2=25 – уравнение окружности (эллипса)

В файлах методичка по кривым второго порядка


Эскизы прикрепленных изображений
Прикрепленное изображение Прикрепленное изображение Прикрепленное изображение

Автор: volvo 4.06.2005 20:38

А проверь-ка вот это со своими значениями:

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.

Что она тебе выдаст на тестовых примерах? (наверняка они у тебя есть ;) )