золотое сечение#
- 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)