Метод золотого сечения

Метод золотого сечения также являетсяпоследовательным методом минимизации. Этот метод использует найденные значения ¦(x) более рационально, чем метод деления интервала пополам, что позволяет переходить к очередному интервалу, содержащему x после вычисления одного, а не двух значений ¦(x).

Метод золотого сечения тесно связан с числами Фибоначчи, которые определяются с помощью рекуррентного соотношения:

F0 = 0, F1 = 1, Fi = Fi-1 + Fi-2, i ≥ 2.

Таким образом, числа Фибоначчи образуют последовательность, в которой каждое очередное число представляет собой сумму двух предыдущих:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,…

Рассмотрим на исходном отрезке [a; b] точку x и вычислим ¦(x ). Зная значение целевой функции в одной точке, невозможно сузить область поиска точки x*. Поэтому выберем вторую точку x так, чтобы a < x < x < b, и вычислим ¦(x ). Возможен один из следующих двух случаев: ¦(x ) £ ¦(x ) или ¦(x ) ³ ¦(x ).

Согласно свойству унимодальной функции: если ¦(x ) £ ¦(x ), то x < x ; если же ¦(x ) ³ ¦(x ), то x > x ; в первом случае искомая точка x не может быть на отрезке [x ; b], а во втором − на отрезке [a; x ] (эти отрезки на рис. 5.3. отмечены штриховкой). Следовательно, теперь область поиска сужается и следующую точку x следует брать в одном из укороченных отрезков [a; x ] или [x ; b].

 

Рис. 5.3. Уменьшение интервала поиска точки минимума методом золотого сечения

 

Установим, где на исходном отрезке лучше всего выбрать точки x и x . Так как первоначально ничего неизвестно о положении точки x , то оба указанных выше случая равновозможны, т.е. “лишним” может оказаться любой из отрезков [x ; b] и [a; x ]. Отсюда ясно, что точки x и x должны быть расположены симметрично относительно середины отрезка [a; b]. Чтобы максимально сузить область поиска, эти точки должны быть “поближе” к середине исходного отрезка. Если их взять рядом с серединой исходного отрезка, то на втором этапе сужение области поиска будет незначительным (рис. 5.4). На втором этапе сужения области поискапотребуется вычислить лишь одно значение ¦(x ), которое будем сравнивать с уже имеющимся значением ¦(x ) или ¦(x ) в зависимости от того, какой из двух случаев реализовался.

Рис. 5.4. К выбору пробных точек x и x

 

Поэтому, с одной стороны, точки x и x следует выбирать рядом с серединой отрезка, а с другой – слишком близкими их брать нельзя. Для того чтобы найти “золотую середину” используется метод “золотого сечения”.

Поиск с помощью метода золотого сечения основан на разбиении отрезка прямой на две части, известном как “золотое сечение” – отношение длины всего отрезка к большей части равно отношению большей части к меньшей.

Рассмотрим симметричное расположение двух пробных точек на исходном интервале единичной длины (рис. 5.5). Пробные точки x , x отстоят от

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

Рис. 5.5. Поиск пробных точек с помощью метода золотого сечения

 

Предположим, что исключается правый подынтервал. На рис. 5.6. показано, что оставшийся подынтервал длины F содержит одну пробную точку x , расположенную на расстоянии (1 − F) от левой граничной точки. Чтобы точки x = 1 − F и x = F де лили отрезки [0; F] и [0; 1] в одном и том же отношении должно выполняться равенство = или F =1 − F, находим положительное значение F = » 0,62.

 

Рис. 5.6. Интервалы, полученные методом золотого сечения

 

Таким образом, x = 1 − F= » 0,38, x = F= . Дроби F = и F = называются дробями Фибоначчи или числа Фибоначчи (Bonaccio(итал.), сын Боначио − добродушный, простодушный, т.е. сын добряка, сын удачника). Это название им дал Леонардо Фибоначчи из Пизы, который первым открыл их еще в 1202 г., подсчитывая, сколько пар потомства могут дать в год пара кроликов и их последующее потомство.

Для того чтобы симметрия поискового образа сохранялась, расстояние (1 - F) должно составлять F- ю часть длины интервала (которая равна F). При таком выборе F следующая пробная точка x размещается на расстоянии, равном F- й части длины интервала, от правой граничной точки интервала (рис. 5.7.). Отсюда следует, что при выборе F в соответствии с условием 1 − F= F симметрия поискового образца (рис. 5.5) сохраняется при переходе к уменьшенному интервалу (рис. 5.7.). Схема поиска, при которой пробные точки делят интервал в этом отношении, известна под названием поиска с помощью метода золотого сечения.

 

 

Рис. 5.7. Симметрия золотого сечения интервала

 

Для произвольного отрезка [a; b] выражения для пробных точек примут вид

x = a + F (ba), x = a + F (ba) (5.3)

Зная одну из точек золотого сечения отрезка [a; b], другую можно найти по одной из формул

x = a+ bx , x = a+ bx (5.4)

Пусть ¦(xQ[a; b] и требуется найти точку минимума x функции ¦(x) на [a; b]. Построим последовательности {a }, {b } и { }, n = 1,2,…, следующим образом:

a = a , b = x , = x , если ¦(x ) £ ¦(x ); (5.5)

a = x , b = b , = x , если ¦(x ) > ¦(x ), n = 2,3,…,

где a = a, b = b, x и x − первая и вторая точки золотого сечения (5.3) отрезка [a ; b ].

Для определения чисел a , b , , по найденным a , b , необходимо выполнить следующие операции:

1. найти одну из точек золотого сечения отрезка [a ; b ] по известной другой точке , используя формулы (5.4). При определении x с большой точностью, чтобы избежать накопления ошибок округления, обычно точки золотого сечения отрезка [a ; b ] находят по формулам (5.3) и в качестве x и x используют и ту из найденных точек, которая больше отличается от ;

2. вычислить значение ¦(x) во вновь найденной точке золотого сечения (значение в другой точке уже вычислено на одном из предыдущих шагов);

3. сравнить значения ¦(x ) и ¦(x ) и найти a , b и по формулам (5.5).

Таким образом, на каждом шаге определения a , b и n = 2,3,…, требуется вычисление одного значения ¦(x). Положив x » найдем точку минимума x с точностью e :

½x - ½ £ e = [( - 1)/2]n∙(ba),

отсюда следует, что число шагов n метода золотого сечения, обеспечивающее заданную точность e нахождения точки x , должно удовлетворять неравенству

n ³ ln( ) /ln( ) » − 2,1 ln( ) (5.6)

Пример 5.4. Решить пример 5.2. методом золотого сечения.

Вычисления проведем по формулам (5.5), представив результаты в таблице 5.3, где стрелками отмечены сохраняющиеся при переходе к следующему шагу значения.

Таблица 5.3

Значения пробных точек и функции ¦(x)

N e a B x x ¦(x ) ¦(x ) Примечание
0,309 1,5 2,0 1,691 1,809 -92,049 -91,814 ¦(x ) < ¦(x ), b = x
0,191 1,5 1,809 1,618 1,691 -91,464 -92,049 ¦(x ) > ¦(x ), a = x
0,118 1,618 1,809 1,691 1,736 -92,049 -92,138 ¦(x ) > ¦(x ), a = x
0,073 1,691 1,809 1,736 1,764 -92,138 -92,083 ¦(x ) < ¦(x ), b = x
0,045       1,736   -92,138 e < e, точность достигнута

 

Из таблицы 5.3 получаем x » = 1,736, ¦ » ¦( )= − 92,138. Если воспользоваться формулой (5.6), то n можно определить заранее. В нашем случае n ³ 4,79, т.е. n = 5.