scipy.optimize.

золотое сечение#

scipy.optimize.золотое сечение(функция, args=(), brack=None, tol=np.float64(1.4901161193847656e-08), full_output=0, maxiter=5000)[источник]#

Возвращает минимизатор функции одной переменной с использованием метода золотого сечения.

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

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

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

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

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

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, опционально

критерий остановки по допуску x

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

Если True, возвращает дополнительные выходные данные.

maxiterint

Максимальное количество итераций для выполнения.

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

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

fvalfloat

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

funcallsint

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

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

minimize_scalar

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

Примечания

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

Примеры

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

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