繁体   English   中英

比较python和matlab中的fsolve结果

[英]Comparing fsolve results in python and matlab

我对几天前写的帖子有一个跟进问题,谢谢你以前的反馈:

从python中的非线性方程组中寻找复杂的根

我现在已经在python中设置了设置的非线性方程,因此fsolve将独立处理实部和虚部。 但是,仍然存在python“fsolve”收敛到正确解决方案的问题。 我有完全相同的输入在Matlab中使用,经过双重检查后,方程组也完全相同。 无论我如何设置初始值,Matlab都将始终收敛到正确的解决方案。 然而,使用python,每个初始条件都会产生不同的结果,而不是正确的结果。 在几分之一秒后,python会出现以下警告:

/opt/local/Library/Frameworks/Python.framework/Versions/Current/lib/python2.7/site-packages/scipy/optimize/minpack.py:227: 
RuntimeWarning: The iteration is not making good progress, as measured by the 
improvement from the last ten iterations.
warnings.warn(msg, RuntimeWarning) 

我想知道在python和Matlab中的fsolve之间是否存在一些已知的差异,以及是否有一些已知的方法来优化python中的性能。

非常感谢你

我不认为你应该依赖名称相同的事实。 我从你的另一个问题中看到你指出Matlab的fsolve使用'levenberg-marquardt'算法而不是默认算法。 Python的scipy.optimize.fsolve使用MINPACK的hybrd算法。 Levenberg-Marquardt通过最小化函数的平方和来找到根,并且非常稳健。 它不像默认的'trust-region-dogleg'算法那样真正的根发现方法。 我不知道hybrd方案是如何工作的,但他们声称是对鲍威尔方法的修改。

如果你想要类似于你在Matlab中所做的事情,我会寻找一个实现Levenberg-Marquardt的优化方案,例如scipy.optimize.root ,你也在之前的问题中使用过。 你没有使用它的原因是什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM