Как построить график неявной функции
Алгоритм/принцип построения графика неявной зависимости f(x,y) = 0?
Хабралюди! Подскажите, подкиньте идей!
Нарисовать на canvas, c++, pascal и т.п. график функции y = f(x) — проще простого. Выясняем ОДЗ аргумента и с определенным шагом вычисляем y(x). Ставим точку, и так далее.
А как быть с графиком f(x,y) = 0, если y(x) не выразить? Понимаю, что в общем случае, наверное, можно решить только перебором значений по плоскости. Какие есть частные решения? Нужен что-то вроде brain-storm. Заранее спасибо!
Спасибо gribozavr. (не получилось почему-то в вопросе вставить ссылкой)
Если влоб, то можно воспользоваться градиентным методом. Отображаемая площадь делится на N точек (выше N — больше качество и трудозатратнее). Точки выбираются либо по рандому, либо сеткой с определенным шагом. Далее для каждой точки вычисляется ее градиент. Зная вектор градиента мы знаем примерно в какую сторону нужно перемещать точку, чтобы приблизить ее к z = 0. Величина шага перемещения точки тоже настраивается и зависит от z (ближе — медленнее). Точка перемещается и вся процедура повторяется до тех пор пока либо не достигнем z = 0 с заданной точностью, либо других условий останова (выход за пределы отображаемой области, лимит количества итераций).
Таким образом случайно выбранные точки с течением времени будут перемещаться к контурам пересечения с z = 0 и образовывать эти самые линии.
Немного поразмыслил…
> Зная вектор градиента мы знаем примерно в какую сторону нужно перемещать точку, чтобы приблизить ее к z = 0
Вектор градиента не факт, что ведет к z=0. Ведь z=0 не обязано быть локальным минимумом f(). Кроме того, f(x,y) при разных x и y может быть как положительным, так и отрицательным при одном и том же градиенте…