python scipy.optimize.newton说它不会收敛,但它似乎会如此

时间:2012-02-13 12:58:54

标签: python scipy

我正在使用python和scipy编写一些代码来将笛卡尔坐标收敛到Kepler元素,反之亦然。

为了将笛卡儿转换为开普勒,我使用以下表达式:

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),我仍然会得到相同的运行时错误。

有人知道为什么会出现这个错误吗?

1 个答案:

答案 0 :(得分:8)

Python中的指数运算符是**。使用tol=10**(-10)1E-10

^是按位异或。