scipy.optimize.

brent#

scipy.optimize.brent(функция, args=(), brack=None, tol=1.48e-08, full_output=0, maxiter=500)[источник]#

Для заданной функции одной переменной и возможного интервала вернуть локальный минимизатор функции, изолированный с дробной точностью tol.

Параметры:
функциявызываемая функция f(x,*args)

Целевая функция.

argsкортеж, необязательный

Дополнительные аргументы (если присутствуют).

brackкортеж, необязательный

Либо тройка (xa, xb, xc) удовлетворяющий xa < xb < xc и func(xb) < func(xa) and  func(xb) < func(xc), или пара (xa, xb) для использования в качестве начальных точек для поиска скобки вниз по склону (см. scipy.optimize.bracket). Минимизатор x не обязательно будет удовлетворять xa <= x <= xb.

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

Относительная ошибка в решении xopt допустимый для сходимости.

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

Если True, возвращает все выходные аргументы (xmin, fval, iter, funcalls).

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

Максимальное количество итераций в решении.

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

Оптимальная точка.

fvalfloat

(Необязательный вывод) Оптимальное значение функции.

iterint

(Необязательный вывод) Количество итераций.

funcallsint

(Необязательный вывод) Количество выполненных вычислений целевой функции.

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

minimize_scalar

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

Примечания

Использует обратную параболическую интерполяцию, когда это возможно, для ускорения сходимости метода золотого сечения.

Не гарантирует, что минимум лежит в диапазоне, указанном brack. См. scipy.optimize.fminbound.

Примеры

Мы иллюстрируем поведение функции, когда brack имеет размер 2 и 3 соответственно. В случае, когда brack имеет вид (xa, xb), мы видим, что для заданных значений выход не обязательно лежит в диапазоне (xa, xb).

>>> def f(x):
...     return (x-1)**2
>>> from scipy import optimize
>>> minimizer = optimize.brent(f, brack=(1, 2))
>>> minimizer
1
>>> res = optimize.brent(f, brack=(-1, 0.5, 2), full_output=True)
>>> xmin, fval, iter, funcalls = res
>>> f(xmin), fval
(0.0, 0.0)