我正在使用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),我仍然会得到相同的运行时错误。
有人知道为什么会出现这个错误吗?
答案 0 :(得分:8)
Python中的指数运算符是**
。使用tol=10**(-10)
或1E-10
。
^
是按位异或。