2010-06-28 122 views
2

我有一個隱含的功能,例如:找到隱函數的根在Python

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

我要解決一個meshgrid根。因此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) 

這個偉大的工程,我有曲線,我需要的圖紙,但是我想有是數據在情節中,而不僅僅是視覺情節。那麼如何找到情節的數據呢?

+2

你在找什麼數據?你是否試圖找到函數值爲零的點? – 2010-06-28 22:00:43

+0

它僅限於多項式嗎? – 2010-06-28 22:00:52

+0

NumPy可幫助您找到多項式的根。對於一般的功能,你將不得不使用數字方法...答案可能很簡單,但請告訴我們,如果你只關心一個特殊情況或更多。 http://www.scipy.org/doc/numpy_api_docs/numpy.lib.polynomial.poly1d.html – 2010-06-28 22:04:31

回答

3

你可以使用「也就是在[matplotlib]圖中的數據」:

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

有各種各樣的算法直接計算的輪廓,雖然我不知道任何numpy的中/ scipy版本。 Marching squares是我總是在這裏談論的,雖然算法是專利的,並且它的使用有嚴格的限制,所以我懷疑matplotlib使用它。 Here's關於matplotlib如何計算輪廓的聊天鏈接。

+0

我收到以下錯誤:IndexError:列表索引超出範圍 我在哪裏可以找到此類信息。我想我可以自己弄明白,但不知何故,我無法找到所有類的描述 – Enrico 2010-06-29 07:25:09

+0

它的工作原理:data = cs.collections [0] .get_paths()[0] 非常感謝,我仍然想知道我自己在哪裏找到這些信息,你能告訴我嗎? – Enrico 2010-06-29 07:32:00

+0

確定發現,以及:http://matplotlib.sourceforge.net/api/path_api.html – Enrico 2010-06-29 07:53:32