You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取scipy.optimize.newton()结果中的converged布尔值

使用scipy.optimize.newton()判断迭代收敛状态的问题

我用scipy.optimize.newton()求解函数的根,由于函数十分复杂,设置了固定迭代次数——即使未达到要求精度也保留最终结果,因此需要一个单独的布尔变量来判断迭代是否收敛。

问题在于,当开启full_output=True时,newton()返回的第二个元素是包含多个属性的对象,我无法直接提取其中的converged属性值。

测试代码如下:

from scipy.optimize import newton

def function(x):
    return x**2-1

def fprime(x):
    return 2*x

x0=5

test = newton(function, x0, fprime=None, args=(), tol=1.48e-08, maxiter=5, fprime2=None, x1=None, rtol=0.0, full_output=True, disp=False)

print(test[1])

运行后输出:

converged: False
           flag: 'convergence error'
 function_calls: 7
     iterations: 5
           root: 1.0103336911991998

我希望得到仅包含False(如本示例)的单个布尔变量。


解决方法

直接通过属性访问的方式即可提取converged值,修改后的代码如下:

# 从返回的结果对象中提取收敛状态
is_converged = test[1].converged
print(is_converged)  # 输出: False

newton()返回的第二个元素是OptimizeResult对象,它的所有属性都可以通过.运算符直接访问,除了converged,你也可以用同样方式获取iterations、flag等其他属性。


内容的提问来源于stack exchange,提问作者Reflets de Lune

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:22:11