Метод золотого сечения: поиск минимума функции

Метод золотого сечения - это способ численно найти минимум функции одной переменной на отрезке, когда производную считать неудобно или невозможно. Идея простая: мы не вычисляем градиент, а лишь сравниваем значения функции в двух пробных точках и за счёт этого отбрасываем часть отрезка, где минимума точно нет. Точки выбираются не случайно, а в пропорции золотого сечения - именно это позволяет на каждом шаге пересчитывать только одну новую точку и быстро ужимать интервал неопределённости. Ниже разберём, какие условия нужны функции, как вывести формулы пробных точек, почему интервал сужается ровно в раз за шаг, сколько итераций требуется для заданной точности и где студенты чаще всего ошибаются. Чтобы сразу почувствовать механику, покрути калькулятор: он показывает параболу, обе пробные точки и отбрасываемую долю на каждом шаге.
Когда применяют метод золотого сечения
Метод золотого сечения относится к методам одномерной оптимизации нулевого порядка: он использует только значения самой функции, без производных. Это его главное достоинство - функция может быть задана таблицей, результатом эксперимента или громоздкой формулой, для которой производную брать дорого.
Ключевое требование - унимодальность функции на рассматриваемом отрезке . Функция называется унимодальной, если на отрезке у неё ровно один минимум: слева от точки минимума она убывает, справа возрастает. Если внутри отрезка несколько локальных минимумов, метод честно сойдётся к одному из них, но не гарантирует, что найдёт глобальный. Поэтому перед запуском метода важно убедиться, что минимум на отрезке единственный, либо разбить область на участки унимодальности.
Метод золотого сечения часто сравнивают с похожими по идее способами сужения отрезка - например, с методом дихотомии (половинного деления) или методом Фибоначчи. Все они работают по одной логике: держать минимум внутри сужающегося интервала, но золотое сечение даёт удобный компромисс между скоростью и числом вычислений функции.
Формулы пробных точек
Пусть минимум унимодальной функции лежит на отрезке . Возьмём внутри две пробные точки и , расположенные симметрично относительно середины:
где - величина, обратная золотому сечению . По построению , и эти точки делят отрезок в золотой пропорции: каждая из них отсекает от своего края долю длины интервала.
Дальше сравниваем значения функции. Если , то минимум лежит левее точки (правее неё функция уже растёт), и правую долю можно отбросить - новый отрезок становится . Если же , отбрасываем левую долю и переходим к отрезку . В любом случае длина отрезка умножается на , а минимум остаётся внутри.
Почему именно золотое сечение
Главная экономия метода спрятана в свойстве числа . После того как мы отбросили одну долю, внутри нового отрезка одна из старых пробных точек уже стоит ровно там, где должна быть новая пробная точка золотого сечения. Это значит, что на каждом шаге, кроме первого, нужно вычислить функцию только в одной новой точке, а вторую взять из предыдущего шага.
Работает это благодаря определяющему уравнению золотого сечения , или, что то же самое, . Именно из этого соотношения следует, что точка, делящая большой отрезок в пропорции , после сужения делит в той же пропорции и меньший отрезок. Никакая другая пропорция таким самоподобием не обладает, поэтому метод и берёт золотое сечение, а не, скажем, деление пополам.
![Отрезок [a, b] и две пробные точки золотого сечения: каждая отсекает от своего края долю 0,382, а большая часть составляет 0,618 длины интервала](/blog/inline/metod-zolotogo-secheniya-poisk-minimuma-delenie.png)
На схеме видно, как именно делится отрезок: точка отстоит от левого края на , а - на от правого, поэтому большие доли и равны и составляют по всей длины. Эта симметрия и обеспечивает переиспользование точки.
Сколько шагов до нужной точности
Поскольку за каждый шаг длина интервала умножается на , после шагов она равна:
Чтобы зажать минимум в окно точности , нужно решить неравенство относительно числа шагов:
Поскольку , при делении знак неравенства переворачивается, а результат округляют вверх до целого. Например, для стартового отрезка длины и точности нужно шагов, а для - уже . Сходимость линейная: каждый шаг убирает примерно оставшегося интервала. За окончательную оценку минимума обычно берут середину итогового отрезка - так максимальная ошибка не превышает половины ширины интервала.
Сравните это поведение в калькуляторе выше: увеличивайте число шагов и следите, как ширина интервала падает, а оценка минимума приближается к . По той же логике строится и метод касательных Ньютона для корня, только там используется производная, а здесь - лишь значения функции; разбор этой связки есть в статье про метод касательных Ньютона.
Алгоритм по шагам
Чтобы не путаться в индексах, метод удобно записать как короткую последовательность действий:
- Задать отрезок , на котором функция унимодальна, и требуемую точность .
- Вычислить пробные точки и и значения , .
- Если , положить , перенести старую в и вычислить только новую левую точку. Иначе положить , перенести в и вычислить новую правую точку.
- Повторять шаг 3, пока длина отрезка не станет меньше .
- Вернуть середину итогового отрезка как приближение точки минимума.
За счёт переиспользования точки на каждой итерации после первой считается лишь одно новое значение функции - это и делает метод экономичным.
Частые ошибки
- Запуск на неунимодальной функции. Если на отрезке несколько минимумов, метод сойдётся к одному из них, и это может быть локальный, а не глобальный минимум. Сначала убедитесь, что минимум единственный.
- Перепутаны направления отбрасывания. При отбрасывают правую долю, а не левую. Ошибка в этом сравнении уводит интервал в сторону от минимума.
- Пересчёт обеих точек каждый шаг. Главное преимущество метода теряется, если на каждом шаге заново считать и , и . Одна точка всегда наследуется с предыдущего шага.
- Точность путают с числом шагов. Точность - это ширина итогового интервала, а не значение функции в нём. Минимум функции при этом найден лишь приближённо, с погрешностью до .
- Метод применяют к поиску корня. Золотое сечение ищет минимум функции, а не её ноль. Для корня берут другие методы - бисекцию или касательные.
FAQ
Чем метод золотого сечения лучше дихотомии? В методе дихотомии за шаг считают два новых значения функции около середины, а в золотом сечении - только одно (вторая точка наследуется). При сравнимом сужении интервала золотое сечение тратит примерно вдвое меньше вычислений функции, что важно, когда каждое вычисление дорогое.
Можно ли искать максимум этим методом? Да. Поиск максимума сводится к поиску минимума функции : достаточно поменять знак сравнения значений. Логика сужения интервала остаётся той же.
Что делать, если функция не унимодальна? Разбить отрезок на участки, где минимум единственный, и применить метод к каждому, а затем выбрать наименьшее из найденных значений. Либо использовать методы глобальной оптимизации, которые не требуют унимодальности.
Коротко
Метод золотого сечения находит минимум унимодальной функции на отрезке, сравнивая значения в двух пробных точках золотого сечения и отбрасывая долю, где минимума нет. За каждый шаг интервал сужается в раз, а новая точка считается только одна - в этом и экономия. Число шагов до точности задаёт формула , а ответом служит середина итогового отрезка.
Читайте также

Метод золотого сечения: поиск минимума функции
Метод золотого сечения для нахождения минимума функции: принцип работы, формулы x1 и x2, скорость сходимости phi^n, примеры задач и типичные ошибки студентов.

Метод минимального элемента: транспортная задача
Метод минимального элемента в транспортной задаче: пошаговый алгоритм начального плана, таблица тарифов, критерий оптимальности. Примеры и частые ошибки.

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