在Python中寻找隐函数的根

2 投票
1 回答
3240 浏览
提问于 2025-04-16 00:32

我有一个隐式函数,比如:

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

你可以通过以下方式获取“在[matplotlib]图表中的数据”:

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

有很多算法可以直接计算轮廓,不过我不知道有没有numpy或scipy的版本。我经常听到的一个算法是Marching squares,不过这个算法是有专利的,使用上有很多限制,所以我怀疑matplotlib会用它。这里有个链接,里面聊了一些matplotlib是如何计算轮廓的。

撰写回答