在SciPy中使用optimize.newton时如何手动处理发散失败?

问题描述 投票:1回答:1

我正在使用SciPy的牛顿优化算法来求解方程式,根据最初的猜测,有时解决方案不会收敛并崩溃。

x = optimize.newton(fun,1/1000)

是否可以打印一条消息而不是python崩溃消息来说明收敛失败或使用不同的初始值重试优化?

python scipy-optimize convergence
1个回答
0
投票

documentation

disp:bool,可选

[如果为True,如果算法未收敛,则引发RuntimeError,错误消息中包含迭代次数和当前函数值。否则,收敛状态将记录在RootResults返回对象中。如果x0不是标量,则忽略。注意:这与显示无关,但是disp关键字不能重命名以实现向后兼容。

您应该将disp设置为False,因为默认情况下它已启用:

optimize.newton(fun, 1/1000, disp=False)

您的结果和其他信息将在RootResults对象中。

© www.soinside.com 2019 - 2024. All rights reserved.