python scipy.optimize.newton说它不会收敛,但它看起来会收敛
我正在使用python和scipy编写一些代码,将笛卡尔坐标收敛到开普勒元素,反之亦然 要将笛卡尔坐标转换为开普勒,我使用以下表达式:python scipy.optimize.newton说它不会收敛,但它看起来会收敛,python,scipy,Python,Scipy,我正在使用python和scipy编写一些代码,将笛卡尔坐标收敛到开普勒元素,反之亦然 要将笛卡尔坐标转换为开普勒,我使用以下表达式: E = scopt.newton(self.f, self.M, self.df, args=(), tol=10^(-10), maxiter=10000) 与 在运行整个代码时,我得到一个错误: RuntimeError: Failed to converge after 10000 iterations, value is 5.25182613825
E = scopt.newton(self.f, self.M, self.df, args=(), tol=10^(-10), maxiter=10000)
与
在运行整个代码时,我得到一个错误:
RuntimeError: Failed to converge after 10000 iterations, value is 5.25182613825
如果我以较少的迭代次数(50次)运行它,我会得到:
比较这两个值,它明显收敛。即使我将容差减少到10^(-2),我仍然会得到相同的运行时错误
有人知道为什么会发生此错误吗?Python中的求幂运算符是
**
。使用tol=10**(-10)
或1E-10
^
是按位异或 Python中的求幂运算符是**
。使用tol=10**(-10)
或1E-10
^
是按位异或 如果运行它51次迭代,会得到相同的值吗?或者它翻转了两个值?RuntimeError:在51次迭代后未能收敛,值是5.25182613825,所以它是相同的值…5.25182613825是正确的解决方案吗?self.e和self.M的值是多少?看起来5.25182613825是正确的解决方案。至少我通过设置E=5.25182613825得到的结果似乎是可以的。M=301.14993402*(数学pi/180)和e=0.004932091570(平均异常和偏心率)如果运行51次迭代,是否得到相同的值?或者它翻转了两个值?RuntimeError:在51次迭代后未能收敛,值是5.25182613825,所以它是相同的值…5.25182613825是正确的解决方案吗?self.e和self.M的值是多少?看起来5.25182613825是正确的解决方案。至少我通过设置E=5.25182613825得到的结果似乎是可以的。M=301.14993402*(数学pi/180)和e=0.004932091570(平均异常和偏心率)
RuntimeError: Failed to converge after 10000 iterations, value is 5.25182613825
RuntimeError: Failed to converge after 50 iterations, value is 5.25182613825