EssayAI
Блог
Блог
Математика и алгоритмы

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

11 июня 2026Время чтения: 7 минут
#метод золотого сечения#минимум функции#одномерная оптимизация#унимодальная функция#численные методы

Метод золотого сечения - один из классических алгоритмов одномерной оптимизации: он находит минимум унимодальной функции на отрезке, не вычисляя производную и не требуя аналитического выражения. В основе лежит простое наблюдение: на каждом шаге достаточно двух пробных точек, чтобы гарантированно выбросить часть отрезка, где минимума нет. Попробуйте калькулятор ниже - двигайте ползунок шага и смотрите, как синий отрезок сужается к минимуму; дальше разберём каждую формулу строго.

Принцип метода и золотое число

Пусть на отрезке [a,b][a, b] задана унимодальная функция f(x)f(x) - непрерывная, имеющая ровно один минимум. Мы хотим сузить отрезок неопределённости до заданной точности ε\varepsilon.

Отрезок [a, b] с двумя пробными точками x1 и x2: за каждый шаг отбрасывается правая или левая часть, синий отрезок сужается в phi раз. Красная точка - истинный минимум

На каждом шаге расставляем две пробные точки:

x1=bφ(ba),x2=a+φ(ba),x_1 = b - \varphi(b - a), \quad x_2 = a + \varphi(b - a),

где φ=5120,618\varphi = \dfrac{\sqrt{5} - 1}{2} \approx 0{,}618 - золотое сечение (меньший корень уравнения φ2+φ=1\varphi^2 + \varphi = 1). Дробь φ\varphi делит отрезок в пропорции 1:φ0,382:0,6181 : \varphi \approx 0{,}382 : 0{,}618.

Сравниваем f(x1)f(x_1) и f(x2)f(x_2):

  • если f(x1)<f(x2)f(x_1) < f(x_2) - минимум лежит в [a,x2][a, x_2], поэтому заменяем bx2b \leftarrow x_2;
  • если f(x1)f(x2)f(x_1) \geq f(x_2) - минимум в [x1,b][x_1, b], заменяем ax1a \leftarrow x_1.

Ключевое свойство золотого сечения: после сужения одна из двух новых пробных точек совпадает со старой. Это значит, что на следующем шаге достаточно вычислить ff только в одной новой точке - экономия на 50% по сравнению с произвольным разбиением.

Скорость сходимости

После nn итераций длина отрезка неопределённости равна

bnan=φn(b0a0).|b_n - a_n| = \varphi^n \cdot (b_0 - a_0).

Поскольку φ0,618<1\varphi \approx 0{,}618 < 1, длина убывает геометрически. Чтобы достичь точности ε\varepsilon, достаточно

nln(ε/(b0a0))lnφn \geq \frac{\ln(\varepsilon / (b_0 - a_0))}{\ln \varphi}

итераций. Например, для отрезка [0,1][0, 1] и ε=105\varepsilon = 10^{-5} нужно всего n26n \approx 26 шагов.

Это быстрее метода деления пополам только в теоретическом смысле: дихотомия за два вычисления ff сужает отрезок в 2 раза, тогда как золотое сечение за два вычисления - в 1/φ1,6181/\varphi \approx 1{,}618 раза. Но за одно вычисление (со второй итерации) - в 1/φ1/\varphi; при дорогостоящих ff это решающий довод.

Сходимость метода золотого сечения: длина отрезка [a, b] по шагам убывает по закону phi^n - прямая линия на логарифмической шкале
Сходимость метода золотого сечения: длина отрезка [a, b] по шагам убывает по закону phi^n - прямая линия на логарифмической шкале

На логарифмической шкале убывание длины отрезка - прямая линия с наклоном lnφ0,481\ln\varphi \approx -0{,}481. Именно это свойство делает золотое сечение точно оптимальным для стратегий с одной пробной точкой за шаг.

Шаги алгоритма на примере

Возьмём f(x)=x24x+5f(x) = x^2 - 4x + 5 на [0,5][0, 5], точность ε=0,1\varepsilon = 0{,}1.

Шаг 0. a=0a = 0, b=5b = 5, длина 5.

x1=50,6185=1,910,f(x1)=1,651x_1 = 5 - 0{,}618 \cdot 5 = 1{,}910, \quad f(x_1) = 1{,}651 x2=0+0,6185=3,090,f(x2)=4,549x_2 = 0 + 0{,}618 \cdot 5 = 3{,}090, \quad f(x_2) = 4{,}549

Так как f(x1)<f(x2)f(x_1) < f(x_2), отбрасываем правую часть: b3,090b \leftarrow 3{,}090. Длина стала 3,0903{,}090.

Шаг 1. a=0a = 0, b=3,090b = 3{,}090.

x1=3,0900,6183,090=1,180,f(x1)=2,390x_1 = 3{,}090 - 0{,}618 \cdot 3{,}090 = 1{,}180, \quad f(x_1) = 2{,}390 x2=0+0,6183,090=1,910,f(x2)=1,651x_2 = 0 + 0{,}618 \cdot 3{,}090 = 1{,}910, \quad f(x_2) = 1{,}651

Теперь f(x1)>f(x2)f(x_1) > f(x_2), отбрасываем левую часть: a1,180a \leftarrow 1{,}180.

Так шаг за шагом отрезок сжимается к x=2x^* = 2 (истинный минимум f(2)=1f(2) = 1). Уже через 10 итераций длина не превысит 50,618100,0365 \cdot 0{,}618^{10} \approx 0{,}036 - лучше заданной точности 0,10{,}1.

Условие применимости: унимодальность

Метод гарантирует нахождение глобального минимума только тогда, когда функция унимодальна - имеет ровно один минимум на отрезке. Если у ff два и более локальных минимума, алгоритм «выберет» один из них, но какой именно - непредсказуемо.

Если f(x1) = f(x2), строгое правило сужения не работает: оба конца можно двигать одновременно (a ← x1, b ← x2), но при равном значении это возможно лишь при симметрии. На практике чаще берут любое из двух правил и контролируют ситуацию.

Проверить унимодальность аналитически: достаточно, чтобы f(x)=0f'(x) = 0 имела единственный корень на [a,b][a, b] и f>0f'' > 0 в нём (строгий минимум). Для гладкой строго выпуклой функции (f>0f'' > 0 всюду на [a,b][a, b]) метод работает безусловно.

Связь с золотым сечением и числом Фибоначчи

Название «золотое сечение» не случайно: φ=(51)/2\varphi = (\sqrt{5} - 1)/2 - то самое иррациональное число, которое с древности описывает деление отрезка в «наиболее гармоничном» соотношении. В математической оптимизации его роль другая: это единственная точка деления, при которой метод после каждого шага оставляет такое же относительное расположение пробных точек на новом, меньшем отрезке.

Числа Фибоначчи 1,1,2,3,5,8,13,21,1, 1, 2, 3, 5, 8, 13, 21, \ldots связаны с φ\varphi формулой:

φ=limnFnFn+1,\varphi = \lim_{n \to \infty} \frac{F_n}{F_{n+1}},

а метод Фибоначчи (предшественник золотого сечения) использует конечное число шагов, заранее известное. Для nn \to \infty оба метода совпадают, и коэффициент сужения стремится к φ\varphi.

Частые ошибки

  • Забывают проверить унимодальность. Применяют метод к функции с двумя локальными минимумами и удивляются неверному ответу. Сначала убедитесь, что функция унимодальна на выбранном отрезке.
  • Путают x1x_1 и x2x_2. Формулы x1=bφ(ba)x_1 = b - \varphi(b - a) и x2=a+φ(ba)x_2 = a + \varphi(b - a) симметричны относительно середины, но x1<x2x_1 < x_2 всегда. Привязка знака к нижней границе (a+a + \ldots) дает x2x_2, к верхней (bb - \ldots) - x1x_1.
  • Неверно обновляют границу. Если f(x1)<f(x2)f(x_1) < f(x_2), то bx2b \leftarrow x_2 (не x1x_1): отрезок [a,x2][a, x_2] оставляем. Частая ошибка - поставить bx1b \leftarrow x_1, выбросив зону, где минимум ещё может быть.
  • Используют десятичное φ=0,618\varphi = 0{,}618. Округление накапливается за 20-30 итераций. Держите φ=(51)/2\varphi = (\sqrt{5} - 1) / 2 как константу.
  • Останавливаются по числу шагов, а не по ширине отрезка. Критерий остановки - baε|b - a| \leq \varepsilon, а не «сделали nn шагов». При фиксированном nn вы не знаете, достигнута ли нужная точность.

FAQ

Нужна ли производная для метода золотого сечения? Нет. Метод использует только значения f(x1)f(x_1) и f(x2)f(x_2) и не требует производной. Это делает его применимым к «чёрным ящикам» - функциям, для которых формулы нет, но значение можно получить экспериментально или численно.

Чем метод золотого сечения отличается от градиентного спуска? Градиентный спуск использует производную f(x)f'(x) и может применяться к многомерным функциям, но требует её вычисления и может застрять в локальном минимуме. Золотое сечение - строго одномерный метод, работает без производной и при унимодальности гарантирует глобальный минимум. Для одномерных задач без производной золотое сечение обычно предпочтительнее.

Как выбрать начальный отрезок [a,b][a, b]? Отрезок должен содержать минимум. Практически: построить грубый график или оценить по физическому смыслу задачи. Если минимум не попал в [a,b][a, b], алгоритм найдёт «минимум на краю» - либо aa, либо bb. Признак: после сходимости проверьте, что f(x)f(a)f(x^*) \leq f(a) и f(x)f(b)f(x^*) \leq f(b).

Коротко

Метод золотого сечения сужает отрезок неопределённости в φ0,618\varphi \approx 0{,}618 раз за каждый шаг при одном вычислении ff. Формулы пробных точек x1=bφ(ba)x_1 = b - \varphi(b - a) и x2=a+φ(ba)x_2 = a + \varphi(b - a) обеспечивают переиспользование: одна из точек остаётся на следующем шаге. За nn шагов длина отрезка составляет φn(ba)\varphi^n (b - a), убывая геометрически. Условие применимости - унимодальность функции на [a,b][a, b]; без него метод не гарантирует глобального результата.

Доверьте текст нейросети EssayAI

Открыть EssayAI

Бесплатно, на русском языке и без VPN

Читайте также

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

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

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

11 июня 20268 минут
Экстраполяция Ричардсона: как ускорить сходимость метода

Экстраполяция Ричардсона: как ускорить сходимость метода

Экстраполяция Ричардсона простыми словами: как объединить два приближения разного шага, вывести формулу R = (2^p F(h/2) - F(h)) / (2^p - 1) и повысить порядок точности численного метода.

11 июня 20268 минут
Метод половинного деления: решение нелинейного уравнения

Метод половинного деления: решение нелинейного уравнения

Метод половинного деления для решения нелинейного уравнения: условие смены знака, формула середины отрезка, оценка числа итераций и разбор типовой задачи с корнем x^3 - x - 2 = 0.

11 июня 20268 минут
Метод секущих для корня уравнения: формула и шаги

Метод секущих для корня уравнения: формула и шаги

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

11 июня 20269 минут
Схема Кранка-Николсона: устойчивость и точность

Схема Кранка-Николсона: устойчивость и точность

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

11 июня 20266 минут
Вторая интерполяционная формула Ньютона: разбор и формула

Вторая интерполяционная формула Ньютона: разбор и формула

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

11 июня 20268 минут