SciPy.optimize - противоречивые решатели? - PullRequest
0 голосов
/ 31 октября 2019

В конце ссылки 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)
...