scipy.optimize.

diagbroyden#

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

Найти корень функции, используя диагональную аппроксимацию Якобиана Бройдена.

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

Предупреждение

Этот алгоритм может быть полезен для определённых задач, но его работоспособность может сильно зависеть от конкретной задачи.

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

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

xinarray_like

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

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

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

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='diagbroyden' в частности.

Примеры

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

>>> 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.diagbroyden(fun, [0, 0])
>>> sol
array([0.84116403, 0.15883384])