在Python中寻找隐函数的根
我有一个隐式函数,比如:
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是如何计算轮廓的。