2012-02-13 81 views
1

我使用與SciPy的蟒蛇編寫一些代碼來收斂笛卡爾座標開普勒元素和其他方式輪。蟒蛇scipy.optimize.newton說,它不收斂,但它似乎因爲它會

用於轉換笛卡爾開普勒我用下面的表達式:

E = scopt.newton(self.f, self.M, self.df, args=(), tol=10^(-10), maxiter=10000) 

self.f = lambda x: x-self.e*scipy.sin(x)-self.M 
self.df= lambda x: 1-self.e*scipy.cos(x) 

當運行整個代碼中,我得到的錯誤:

RuntimeError: Failed to converge after 10000 iterations, value is 5.25182613825 

如果我運行它爲更少的迭代(50),我得到:

RuntimeError: Failed to converge after 50 iterations, value is 5.25182613825 

比較這顯然收斂了兩個值。即使我將容差降低到10 ^( - 2),我仍然會得到相同的運行時錯誤。

有誰知道爲什麼這個錯誤發生?

+0

如果你運行了51次迭代,你會得到相同的值嗎?還是它翻轉了兩個值? – WolframH 2012-02-13 13:12:29

+0

RuntimeError:經過51次迭代後收斂失敗,值爲5.25182613825所以它是相同的值... – 2012-02-13 13:21:24

+1

是5.25182613825是一個正確的解決方案嗎? self.e和self.M的價值是什麼? – 2012-02-13 13:29:36

回答

8

在Python乘方運算符是**。使用tol=10**(-10)1E-10

^是按位異或。

+0

謝謝!這解決了我的問題 – 2012-02-13 13:55:09

相關問題