2009-07-15 4 views
5

Каков обычный метод или алгоритм, используемый для построения неявных уравнений двух переменных?Как построить неявные уравнения

Я говорю об уравнениях, таких как,

грех (х * у) * у = 20

х * х - у * у = 1

Etc.

ли кто-нибудь знает, как это делают Maple или Matlab? Мой целевой язык - C#.

Большое спасибо!

ответ

9

Один из способов сделать это - пробовать функцию на обычной сетке 2D. Затем вы можете запустить алгоритм, например, марширующие квадраты на полученной 2D-сетке, чтобы нарисовать изо-контуры.

В связанном вопросе кто-то также связан с исходным кодом gnuplot. Это довольно сложно, но, возможно, стоит пройти. Вы можете найти его здесь: http://www.gnuplot.info/

+2

Благодарим Вас за предоставление правильных ключевых слов для поиска. Этот поиск (http://www.google.com.sg/search?q=Marching+squares+contours) особенно вызвал некоторые интересные ссылки. – ARV

+0

@ARV, какая из этих интересных ссылок решила вашу проблему. Могли ли вы создать код C# – MySchizoBuddy

5

Итерируйте значение x по всему диапазону, который вы хотите построить. Для каждого фиксированного значения x решайте уравнение численно с использованием метода, такого как interval bisection или Newton-Raphson method (для которого вы можете вычислить производную с использованием неявного дифференцирования или, возможно, дифференцировать численно). Это даст вам соответствующее значение y для данного x. В большинстве случаев вам не понадобится слишком много итераций, чтобы получить точно точный результат, и это очень эффективно в любом случае.

Обратите внимание, что вам необходимо преобразовать уравнение в форму f(x) = 0, хотя это всегда тривиально. Приятная вещь в этом методе заключается в том, что он работает так же хорошо, наоборот, (фиксированный диапазон y и вычисление x за значение).

-3

я думаю,

в MATLAB вы даете массив в качестве входных данных для х.

Затем для каждого x вычисляется y.

затем рисует линию от x0, y0 к x1, y1

затем рисует линию от x1, y1 х2, y2

...

...