В конце ссылки SciPy.optimize есть раздел под названием «Устаревшие функции», в котором говорится, что такие методы, как 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)