SciPy.优化不一致解算器?

2024-06-16 14:47:46 发布

您现在位置:Python中文网/ 问答频道 /正文

SciPy.optimize reference的末尾有一个称为“遗留函数”的部分,该部分指出,可以通过上述接口提供的更新、更一致的接口访问scipy.optimize.broyden1等方法

然而,当使用相同的优化问题测试这些接口时,例如scipy.optimize.root(method='broyden1'),我得到的计算速度要慢10倍,并且对于相同的容差,最终结果也不同

是否有一种方法可以实现scipy.optimize中新函数和旧函数之间的等效性,可能是通过一些选项,或者算法中的差异太大

代码看起来是这样的,尽管我不想详细介绍特定函数,因为我假设结果的差异是由于更一般的原因造成的:

import scipy.optimize

def f(x):
    return abs(a-b)

result1 = scipy.optimize.broyden1(F=f, xin=[0.47], f_tol=1e-6)
result2 = scipy.optimize.root(fun=f, x0=[0.47],method='broyden1', tol=1e-6)

Tags: 方法函数算法选项rootscipy差异method