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