Одномерная минимизация. Горячев Л.В. - 5 стр.

UptoLike

Составители: 

Рубрика: 

5
В случаях, когда число вычислении значения функции априори задано, следует, что при N =2k
точность вычисления точки минимума функции определяется величиной
ba
2
k+1
+ δ, Замечание: Если
функция дифференцируема и её производные могут быть вычислены, то алгоритм несколько упро-
щается: если f
(
a
k
+b
k
2
) < 0, то, очевидно, что функция f(x) убывает в окрестности точки
a
k
+b
k
2
) и
искомая точка x
лежит правее этой точки, т. е. новый отрезок поиска [
a
k
+b
k
2
,b
k
], если f
(
a
k
+b
k
2
),
то x
[
a
k
+b
k
2
,b
k
]. К недостатком этого метода относится тот факт, что информация о значении
функции в точках x
1
и x
2
используется только на одном шаге. Более подробно с этим методом мож-
но ознакомиться в [1. 2].
Метод золотого сечения
Золотым или гармоническим делением, называется такое деление отрез-
ка [a, b] точкой x на две неравные части, при котором отношение длины всего отрезка к длине его
большой части равно отношению длины большей части к длине меньшей части отрезка, длина боль-
шей части отрезка является средней пропорциональной между длиной всего отрезка и меньшой его
части. Для определения искомых точек необходимо составить уравнения:
ba
xa
=
xa
bx
, если [a, x]-большая часть отрезка, и
ba
bx
=
bx
xa
, если [x, b]-большая часть отрезка.
Отсюда, анализируя эти уравнения, мы получим две точки золотого сечения:
x
1
= a +
3
5
2
(b a) a +0.382(b a) левая точка ()
x
2
= a +
5 1)
2
(b a) a +0.618(b a) правая точка (∗∗)
. При этом само соотношение, золотая пропорция ˜r =
1+
5
2
1.618034 Пользуясь свойством унимо-
дальности функции, сравниваем значения ее в этих точках: если f(x
1
) >f(x
2
), то новый отрезок
поиска есть [a
1
,b
1
]деa
1
= x
1
,b
1
= b, если f(x
1
) <f(x
2
), то новый отрезок поиска имеет концы
a
1
= a, b
1
= x
2
. Можно показать (выполнить в качестве упражнения), что выбранные точки облада-
ют следующими свойствами: 1. Точки x
1
,x
2
лежат на одинаковом расстоянии от середины отрезка;
2. Точки x
1
,x
2
расположены к середине отрезка, чем к своим концам; 3. Точка x
1
является точкой
золотого сечения отрезка [a, x
2
], а точка x
2
является точкой золотого сечения отрезка [x
1
,b]з
последнего утверждения следует, что на последующем шаге мы уже будем иметь одну точку золо-
того сечения. Таким образом, на каждой итерации, кроме первой, метод золотого сечения требует
определения лишь одной точки отрезка и одного значения функции, что и определяет большую
эффективность этого метода по сравнению с методом половинного деления при заданной точности.
Если зафиксировать число n вычислений значений функции f(x), то методом золотого сечения
значение x
может быть найдено в 1.144
n
раз точнее, чем методом деления отрезка пополам. Длина
отрезка по методу золотого сечения убывает последующему правилу:
n
=(b a)
5 1
2
n
Приведем схему метода золотого сечения. Пусть ε-требуемая точность вычисления точки миниму-
ма.
0. Начальный шаг: находим точки x
1
и x
2
по формулам (*) (**)
1. Вычисляем f (x
1
),f(x
2
)
если f(x
1
) >f(x
2
)опереходимкшагу4.
если f(x
1
) <f(x
2
)опереходимкшагу3.
если f(x
1
)=f(x
2
)опереходимкшагу2.
2. Получаем новый отрезок [a, b], a = x
1
; b = x
2
.
Находим h =
ba
2
;, если h εоx
a+b
2
,f
min
f(x
) end, в противном случае переход к 0.
3. Получаем новый отрезок [a, b], a = a; b = x
2
.
Находим h =
ba
2
, если h εоx
a+b
2
,f
min
f(x
) end; в противном случае x
2
= x
1
, находим
x
1
по (*), переход к 1.
4. Получаем новый отрезок [a, b], a = x
1
; b = b.
Находим h =
ba
2
, если h εоx
a+b
2
,f
min
f(x
) end; в противном случае x
1
= x
2
, находим
                                                                                                            5

В случаях, когда число вычислении значения функции априори задано, следует, что при N = 2k
точность вычисления точки минимума функции определяется величиной 2b−a             k+1 + δ, Замечание: Если

функция дифференцируема и её производные могут быть вычислены, то алгоритм несколько упро-
щается: если f  ( ak +b2
                          k
                            ) < 0, то, очевидно, что функция f (x) убывает в окрестности точки ak +b  2
                                                                                                         k
                                                                                                           )и
                    ∗                                                             ak +bk            ak +bk
искомая точка x лежит правее этой точки, т. е. новый отрезок поиска [ 2 , bk ], если f ( 2 ),
то x∗ ∈ [ ak +b
             2
               k
                 , bk ]. К недостатком этого метода относится тот факт, что информация о значении
функции в точках x1 и x2 используется только на одном шаге. Более подробно с этим методом мож-
но ознакомиться в [1. 2].
Метод золотого сечения Золотым или гармоническим делением, называется такое деление отрез-
ка [a, b] точкой x на две неравные части, при котором отношение длины всего отрезка к длине его
большой части равно отношению длины большей части к длине меньшей части отрезка, длина боль-
шей части отрезка является средней пропорциональной между длиной всего отрезка и меньшой его
части. Для определения искомых точек необходимо составить уравнения:
    b−a     x−a                                             b−a     b−x
    x−a = b−x , если [a, x]-большая часть отрезка, и b−x = x−a , если [x, b]-большая часть отрезка.
Отсюда, анализируя эти уравнения, мы получим две точки золотого сечения:
                                         √ 
                                      3− 5
                          x1 = a +            (b − a) ≈ a + 0.382(b − a) − левая точка                     (∗)
                                         2
                                √            
                                     5 − 1)
                     x2 = a +                     (b − a) ≈ a + 0.618(b − a) − правая точка              (∗∗)
                                       2
                                                                  √
. При этом само соотношение, золотая пропорция r̃ = 1+2 5 ≈ 1.618034 Пользуясь свойством унимо-
дальности функции, сравниваем значения ее в этих точках: если f (x1 ) > f (x2 ), то новый отрезок
поиска есть [a1 , b1 ], где a1 = x1 , b1 = b, если f (x1 ) < f (x2 ), то новый отрезок поиска имеет концы
a1 = a, b1 = x2 . Можно показать (выполнить в качестве упражнения), что выбранные точки облада-
ют следующими свойствами: 1. Точки x1 , x2 лежат на одинаковом расстоянии от середины отрезка;
2. Точки x1 , x2 расположены к середине отрезка, чем к своим концам; 3. Точка x1 является точкой
золотого сечения отрезка [a, x2 ], а точка x2 является точкой золотого сечения отрезка [x1 , b]. Из
последнего утверждения следует, что на последующем шаге мы уже будем иметь одну точку золо-
того сечения. Таким образом, на каждой итерации, кроме первой, метод золотого сечения требует
определения лишь одной точки отрезка и одного значения функции, что и определяет большую
эффективность этого метода по сравнению с методом половинного деления при заданной точности.
Если зафиксировать число n вычислений значений функции f (x), то методом золотого сечения
значение x∗ может быть найдено в 1.144n раз точнее, чем методом деления отрезка пополам. Длина
отрезка по методу золотого сечения убывает последующему правилу:
                                                         √         n
                                                                      
                                                             5−1
                                          ∆n = (b − a)
                                                              2

Приведем схему метода золотого сечения. Пусть ε-требуемая точность вычисления точки миниму-
ма.
0. Начальный шаг: находим точки x1 и x2 по формулам (*) (**)
1. Вычисляем f (x1 ), f (x2 )
если f (x1 ) > f (x2 ), то переходим к шагу 4.
если f (x1 ) < f (x2 ), то переходим к шагу 3.
если f (x1 ) = f (x2 ), то переходим к шагу 2.
2. Получаем новый отрезок [a, b], a = x1 ; b = x2 .
Находим h = b−a                        ∗  a+b            ∗
                  2 ;, если h ≤ ε, то x ≈ 2 , fmin ≈ f (x ) end, в противном случае переход к 0.
3. Получаем новый отрезок [a, b], a = a; b = x2 .
Находим h = b−a                        ∗  a+b            ∗
                  2 , если h ≤ ε, то x ≈ 2 , fmin ≈ f (x ) end; в противном случае x2 = x1 , находим
x1 по (*), переход к 1.
4. Получаем новый отрезок [a, b], a = x1 ; b = b.
Находим h = b−a                        ∗  a+b            ∗
                  2 , если h ≤ ε, то x ≈ 2 , fmin ≈ f (x ) end; в противном случае x1 = x2 , находим