|
b |
a |
|
z |
a |
или |
b-a |
= |
b-z |
|
(2.1.3) |
|
z |
a |
|
b |
z |
b-z |
z-a |
||||
|
|
|
|
|
|||||||
Золотое сечение отрезка [a,b] производят две точки: |
|
||||||||||
c |
a |
(1 |
)(b |
a) |
||
|
|
|
|
|
|
(2.1.4) |
|
|
|
|
|
||
d |
a |
(b |
a), |
=0.5(1- 5) 0.618, |
||
При этом, точка с производит золотое сечение отрезка [a,d], а точка d - золотое сечение отрезка [c,b].
Вычислим f(с) и f(d). Если f(с)<f(d), то отбрасываем интервал
]d,b[ и полагаем |
|
|
|
|
|
|
|
|
|
a1 = a, b1 |
d , d1 c, c1 |
a1 |
(1 |
)(b1 |
a1 ). |
||||
Если f (c) |
f (d), то полагаем |
|
|
|
|
|
|
|
|
a |
c, b = b, c = d, d = a |
1 |
+ (b -a |
). |
|||||
1 |
1 |
1 |
1 |
|
|
1 |
1 |
|
|
Таким образом, на каждом следующем шаге метода золотого сечения требуется вычислить лишь одно значение унимодальной функции.
Приведем план организации вычислений при поиске точки минимума x* функции f методом золотого сечения с абсолютной
погрешностью . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
1. |
Вычислить с и d по формулам (2.1.4). |
|
|
|
|
|
|
|||||||||
2. |
Вычислить e |
|
f (c) |
f (d). Если e <0, перейти к п.5; если |
||||||||||||
|
e =0, перейти к п.7; если e >0, перейти к п.3. |
|
|
|||||||||||||
3. |
Положить а=с и вычислить h |
b |
a |
|
, при этом если |
|
||||||||||
2 |
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
h |
, то x* |
|
a |
b |
, |
fmin f(x*). |
|
|
|
|
|
|
|
||
|
2 |
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
4. |
Положить c=d и вычислить d по (2.1.4). Перейти к п.2. |
|
||||||||||||||
5. |
Положить b=d и вычислить h |
b |
a |
|
. Если h |
, то |
|
|||||||||
2 |
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x* |
a b |
, |
fmin |
f(x*). |
|
|
|
|
|
|
|
|
|||
|
2 |
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
Положить d=c и вычислить с по (2.1.4). Перейти к п.2. |
|
||||||||||||||
7. |
Положить a=c, b=d и вычислить h |
|
|
|
b a |
. Если h |
, |
|||||||||
|
2 |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
23
то положить x* |
a b |
, fmin f(x*); в противном случае |
|
2 |
|||
|
|
перейти к п.2.
Если количество вычислений n функции f задано, то оптимальной стратегией поиска минимума является метод Фибоначчи. Этот метод связан с последовательностью чисел Фибоначчи {Fk}, определяемой соотношениями
Fk 2 Fk Fk 1 , |
F1 F2 1 |
Первые четырнадцать членов этой последовательности
имеют вид:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377.
Приведем план поиска на отрезке [a,b] точки х*, минимизирующей функцию f, основанный на использовании чисел Фибоначчи. Количество вычислений значения функции задано и равно n.
1.Сравнить 1 и n:
а) если n=1, перейти к п.2; б) если n>1, перейти к п.3.
2. |
Вычислить x* |
|
a |
|
b |
, |
fmin |
f(x*). Конец. |
|
|||
2 |
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|||
3. |
Вычислить |
|
|
|
|
|
|
|
|
|
|
|
|
x a |
|
Fn |
|
(b |
a), x |
|
=a+ |
Fn+1 |
(b-a) |
(2.1.5) |
|
|
|
|
|
2 |
|
|||||||
|
1 |
Fn |
|
|
|
|
|
Fn+2 |
|
|
||
|
|
2 |
|
|
|
|
|
|
|
|||
4.Вычислить f(x1), f(x2).
5.Сравнить 2 и n:
а) если n=2, перейти к п.6; б) если n>2, перейти к п.9.
6.Сравнить f(x1) и f(x2):
а) если f (x1 ) f (x2 ), перейти к п.7; б) если f (x1 ) f (x2 ), перейти к п.8.
7. Положить |
x* |
x1 |
, fmin |
f (x1 ). Конец. |
8. Положить |
x* |
x2 |
, fmin |
f (x2 ). Конец. |
9.Сравнить f(x1) и f(x2):
а) если f (x1 ) f (x2 ), перейти к п.10;
24
б) если f (x1 ) f (x2 ), перейти к п.13.
10. Произвести следующие переобозначения:
x2 = b, x1 = x2, n-1 = n.
11. Вычислить:
x a |
Fn |
|
(b a). |
(2.1.6) |
|
|
|||
1 |
Fn |
|
|
|
|
2 |
|
|
12.Вычислить f(x1) и перейти к п.6.
13.Произвести следующие переобозначения
x1 = a, x2 = x1, n-1 = n.
14. Вычислить:
x |
a |
|
Fn 1 |
(b a). |
(2.1.7) |
|
|
||||
2 |
|
|
Fn 2 |
|
|
|
|
|
|
||
15. Вычислить f(x2) и перейти к п.6. |
|
||||
Погрешность |
|
найденного по методу Фибоначчи значения |
|||
х*, минимизирующего функцию f, имеет оценку:
b a . Fn 2
Для большей наглядности метода Фибоначчи приведем блоксхему вычислений (рис. 2.1.1).
25
Пример. Определить минимум функции
|
1 |
|
|
|
|
f (x) |
|
x |
|||
|
|
||||
x |
|||||
|
|
|
|
||
на отрезке[1,2] с помощью шести вычислений функции. |
|||||
Решение будем искать с помощью методов дихотомии и |
|||||
золотого сечения: |
|
|
|
|
|
а) Метод дихотомии Полученные в процессе вычислений значения переменных
удобно записывать в виде таблицы:
26
a |
b |
δ |
c |
d |
f(с) |
f(d) |
h |
1 |
2 |
0.1 |
1.45 |
1.55 |
1.8938 |
1.890 |
0.275 |
1.45 |
2 |
0.1 |
1.675 |
1.775 |
1.891 |
1.896 |
0.1625 |
1.45 |
1.775 |
0.01 |
1.6075 |
1.6175 |
1.8899 |
1.890 |
0.084 |
1.451.6175
|
|
x* |
1 |
|
(1.45 |
1.6175) |
1.534, |
|
|
|||
|
Ответ: |
2 |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|||
|
|
f (x*) |
1.89034, |
|
0.084. |
|
|
|
||||
|
б) Метод золотого сечения |
|
|
|
|
|||||||
a |
b |
c |
|
|
|
d |
|
f(с) |
f(d) |
e |
h |
|
1 |
2 |
1.382 |
1.618 |
1.89918 |
1.89005 |
e<0 |
0.309 |
|||||
1 |
1.618 |
1.236 |
1.382 |
1.90208 |
1.8992 |
e>0 |
0.191 |
|||||
1.236 |
1.618 |
1.382 |
1.472 |
1.8992 |
1.8926 |
e>0 |
0.118 |
|||||
1.382 |
1.618 |
1.472 |
1.528 |
1.8926 |
1.8906 |
e>0 |
0.073 |
|||||
1.472 |
1.618 |
1.528 |
1.5623 |
1.8906 |
1.88999 |
e>0 |
0.045 |
|||||
1.528 |
1.618 |
|
|
|
|
|
|
|
|
|
|
|
|
Здесь e вычисляется по формуле |
|
|
|
||||||||
|
|
e |
f (c) f (d) |
|
|
|
|
|
||||
|
|
x* |
1 |
(1.528 |
1.618) |
1.573, |
|
|
||||
|
Ответ: |
2 |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
f (x*) |
1.8899, |
0.045. |
|
|
|
|||||
Указанные задачи решить любым из рассмотренных методов.
Задачи для самостоятельного решения
2.1.1. Определить минимальное значение функции: f (x) e x 2 cos x
на отрезке[0;1] с погрешностью |
0.05. |
2.1.2. Вычислить наименьшее значение функции f на отрезке, точку х* определить с точностью до 0,05:
27