在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)