scipy.optimize.

anderson#

scipy.optimize.anderson(F, xin, iter=None, alpha=None, w0=0.01, M=5, verbose=False, maxiter=None, f_tol=None, f_rtol=None, x_tol=None, x_rtol=None, tol_norm=None, линейный поиск='armijo', callback=None, **kw)#

Найти корень функции, используя (расширенное) смешивание Андерсона.

Якобиан формируется для «наилучшего» решения в пространстве, порожденном последними M векторов. В результате требуются только инверсии матриц MxM и умножения MxN. [Ey]

Параметры:
Ffunction(x) -> f

Функция, корень которой нужно найти; должна принимать и возвращать объект, подобный массиву.

xinarray_like

Начальное приближение для решения

alphafloat, опционально

Начальное предположение для матрицы Якоби равно (-1/alpha).

Mfloat, опционально

Количество предыдущих векторов для сохранения. По умолчанию 5.

w0float, опционально

Параметр регуляризации для численной устойчивости. По сравнению с единицей, хорошие значения порядка 0.01.

iterint, необязательный

Количество итераций для выполнения. Если опущено (по умолчанию), выполняется столько, сколько требуется для достижения допусков.

verbosebool, необязательно

Выводить статус в stdout на каждой итерации.

maxiterint, необязательный

Максимальное количество итераций для выполнения. Если требуется больше для достижения сходимости, NoConvergence вызывается исключение.

f_tolfloat, опционально

Абсолютная погрешность (в max-норме) для невязки. Если опущена, по умолчанию равна 6e-6.

f_rtolfloat, опционально

Относительная погрешность для невязки. Если опущено, не используется.

x_tolfloat, опционально

Абсолютный минимальный размер шага, определяемый из приближения Якобиана. Если размер шага меньше этого, оптимизация завершается как успешная. Если опущено, не используется.

x_rtolfloat, опционально

Относительный минимальный размер шага. Если опущено, не используется.

tol_normfunction(vector) -> scalar, опционально

Норма для проверки сходимости. По умолчанию используется максимальная норма.

линейный поиск{None, ‘armijo’ (по умолчанию), ‘wolfe’}, опционально

Какой тип линейного поиска использовать для определения размера шага в направлении, заданном приближением Якоби. По умолчанию ‘armijo’.

callbackфункция, необязательный

Необязательная функция обратного вызова. Она вызывается на каждой итерации как callback(x, f) где x является текущим решением и f соответствующий остаток.

Возвращает:
solndarray

Массив (аналогичного типа массива как x0) содержащий итоговое решение.

Вызывает:
NoConvergence

Когда решение не было найдено.

Смотрите также

root

Интерфейс к алгоритмам нахождения корней для многомерных функций. См. method='anderson' в частности.

Ссылки

[Ey]
  1. Eyert, J. Comp. Phys., 124, 271 (1996).

Примеры

Следующие функции определяют систему нелинейных уравнений

>>> def fun(x):
...     return [x[0]  + 0.5 * (x[0] - x[1])**3 - 1.0,
...             0.5 * (x[1] - x[0])**3 + x[1]]

Решение может быть получено следующим образом.

>>> from scipy import optimize
>>> sol = optimize.anderson(fun, [0, 0])
>>> sol
array([0.84116588, 0.15883789])