Найти корень неявной функции в Python - PullRequest
2 голосов
/ 29 июня 2010

У меня есть неявная функция, например:

f(x,y) = x**y + y**y - 3*x

Я хочу решить корень на сетке. Так что f (x, y) = 0

Рисовать решение легко:

x = linspace(-2,2,11)
y = linspace(-2,2,11)
(X,Y) = meshgrid(x,y)

A = X**Y + Y**Y - 3*X
contour(X,Y,A,0)

Это прекрасно работает, у меня есть чертеж нужной мне кривой, однако я хотел бы иметь данные, которые есть на графике, а не только визуальный график. Так как мне найти данные сюжета?

1 Ответ

3 голосов
/ 29 июня 2010

Вы можете получить «данные, которые находятся на графике [matplotlib]», используя:

cs = contour(X,Y,A,0)
data = cs.collections[0].get_paths()[1]

Существует множество алгоритмов для непосредственного расчета контуров, хотя я не знаю ни одного кучи/ scipy версии. Марширующие квадраты - это то, о чем я всегда здесь говорю, хотя алгоритм запатентован и существуют серьезные ограничения на его использование, поэтому я сомневаюсь, что matplotlib его использует. Вот ссылка с небольшим разговором о том, как matplotlib вычисляет контуры.

...