Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Загребаев Методы матпрограммирования 2007

.pdf
Скачиваний:
124
Добавлен:
16.08.2013
Размер:
10.97 Mб
Скачать

Аналогично, точка x2 производит золотое сечение отрезка

[x1 , b] .

Опираясь на это свойство «золотого сечения» можно предложить следующий метод минимизации унимодальной функции f (x) на отрезке [a, b] .

Идея метода такова. На отрезке [a, b] возьмем точки x1 и x2 , производящие золотое сечение отрезка, и вычислим значения функций f (x1 ) и f (x2 ) в этих точках (рис. 3.6).

Рис. 3.6. Выбор отрезка, содержащего точку минимума

Если f (x1 ) f (x2 ) , то при x > x2 функция не может убывать, т.е. точка минимума лежит на отрезке [a, x2 ] . Если же f (x1 ) > f (x2 ) , то наоборот минимум функции лежит на отрезке

[x1 , b] .

Итак, отрезок, на котором ищется минимум, уменьшился. Процесс повторяется сначала. При этом весьма важно то, что внутри отрезка [a, x2 ] (это справедливо для рассматриваемого примера)

содержится точка x1 с вычисленным значением f (x1 ) , которая производит «золотое сечение» отрезка [a, x2 ] . Следовательно, на

171

данном шаге достаточно вычислить лишь одно значение f (x) во второй, новой точке, производящей золотое сечение.

Аналогично в случае, если выбран отрезок [x1 , b] .

Алгоритм метода золотого сечения.

1.Вычислить длину отрезка [a, b] − ∆ = b a . Взять внутри отрезка две точки:

xл = a + r1, xп = a + (1 r1 ).

2.Вычислить f (xл ) и f (xп) .

3.Если f (xл ) f (xп) перейти к шагу 4, если f (xл ) > f (xп) – к шагу 5.

4.Положить a = a , b = xп . Вычислить ∆ = b a . Если ∆ ≤ ε , то

процесс прекратить. В противном случае положить: xп = xл , f (xп) – известно;

xл = a + r1, f (xл ) – вычислить. Перейти к шагу 3.

5. Положить b = b , a = xл . Вычислить ∆ = b a . Если ∆ ≤ ε , то процесс прекратить. В противном случае положить

xл = xп ,

f (xл ) – известно;

xп = a +(1r1 ),

f (xп) – вычислить.

Перейти к шагу 3.

 

Блок-схема алгоритма изображена на рис. 3.7.

Замечания. 1. После каждого шага длина отрезка уменьшается в 1/ r2 раз. По-

сле n итераций длина отрезка составляет ∆ = r2n (b a).

2. Численная реализация метода обладает существенным недостатком. Так, приближенные значения чисел r1 и r2 порождают накопление ошибок, которое

довольно быстро может привести к нарушению пропорций отрезков в смысле отношения «золотого сечения» и, как следствие, к нарушению условий вложенности отрезков и тем самым к расходимости процесса. Таким образом, метод не является устойчивым по отношению к ошибкам в определении параметров r1 и r2 .

Рекомендации:

с максимально возможной для используемой ЭВМ точностью определять эти параметры и точки деления отрезка;

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

172

 

 

 

 

 

 

 

 

Вход

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод исходных дан-

 

 

 

 

 

 

 

ных: a ,

b , ε , f (x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

∆ = b a, xл = a + r1,

xп = a + (1 r1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вычисление fп = f (xп),

 

fл = f (xл)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нет

 

 

 

Да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

fл fп

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a = xл,

 

 

 

 

 

 

 

b = xп,

 

 

∆ = b a,

 

 

 

 

 

 

 

∆ = b a,

 

 

xл = xп,

 

 

 

 

 

 

 

xп = xл,

 

 

xп = a + (1 r1)

 

 

 

 

 

 

 

xл = a + r1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

fл = fп,

 

 

 

 

 

 

 

 

fп = fл,

 

 

fп = f (xп)

 

 

 

 

 

 

 

fл = f (xл)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нет Да

∆ ≤ ε

x

 

xл, f

л

fп;

 

=

x , f

 

> f

.

 

 

 

 

л

 

 

 

п

 

п

Рис. 3.7. Блок-схема алгоритма метода «золотого сечения»

173 Выход

В качестве примеров использования метода «золотого сечения» рассмотрим следующие задачи.

Задача 1. Сколько шагов n метода «золотого сечения» обеспечивают заданную точность ε .

Решение. Как отмечалось выше, условием достижения точности является выполнение неравенства

Поскольку

 

 

 

n ≤ ε .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

= r n (b a) ,

 

то отсюда

 

 

 

2

 

 

 

 

 

 

 

 

 

r n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(b a) ε ,

 

и, как следствие:

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r n

 

ε

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

b a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ε

 

 

 

 

ln(r2n )ln

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

a

 

 

 

n ln r2

 

 

 

 

ε

 

 

 

 

 

ln

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b a

 

так как r2 <1, то ln r2 < 0 . Следовательно,

 

 

ε

 

 

 

 

 

 

 

 

 

 

ε

 

n ln

 

 

 

 

 

ln r2 ≈ −2,1 ln

 

.

 

 

 

 

 

b

a

 

 

 

 

 

 

 

 

 

 

b a

Так как

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ε

 

 

< 0 ,

 

 

то n 2 .

 

ln

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b a

 

 

 

 

 

 

 

 

 

 

 

 

 

Задача 2. Найти методом золотого сечения точку минимума функции f (x) = x 2 x на отрезке [0, 2] с точностью ε = 0,1 .

Решение. Очевидно, данная задача может быть легко решена классическим методом. Взяв производную и разрешив относитель-

но x* полученное уравнение, т.е.:

dfdx = 2x 1 = 0 x = 0,5, f = −0,25.

174

Решим задачу с помощью метода «золотого сечения». В соответствии с рассматриваемым методом, параметры r1 = 0,382 ,

r2 = 0,618 . Учитывая это, результаты пошаговых расчетов можно свести в табл. 3.1.

 

 

 

 

 

 

 

Таблица 3.1

 

 

 

 

 

 

 

 

n

n

bn

an

xл

xп

f (xл)

f (xп)

1

2

0

2

0,764

1,236

–0,180

0,26

2

1,236

0

1,236

0,472

0,764

–0,241

–0,18

3

0,764

0

0,764

0,292

0,472

–0,207

–0,24

4

0,472

0,292

0,764

0,472

0,584

–0,249

–0,2

5

0,292

0,292

0,584

0,404

0,472

–0,241

–0,2

6

0,18

0,404

0,584

0,472

0,515

–0,249216

–0,2

7

0,112

0,472

0,584

0,515

0,541

–0,249775

–0,2

Рис. 3.8. Графическое изображение функции (задача 2)

Как следует из таблицы, x 0,515, f ≈ −0,249775 , что сов-

падает с результатами, полученными с помощью производной. График, соответствующий исследуемой функции, приведен на рис. 3.8.

3.2.3.2.Метод дихотомии

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

175

В основу метода положен тот очевидный факт, что производная унимодальной функции меняет знак на отрезке поиска только один раз – в точке минимума (рис. 3.9).

Рис. 3.9. Характер производной унимодальной функции

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

Это общая идея метода, которая фактически сводит рассматриваемый метод к поиску корня уравнения f (x)= 0 на отрезке [a, b] известным методом дихотомии. Эта идея работает, когда минимум функции f (x) является внутренней точкой отрезка [a, b]. Если x

лежит на границе, то ситуация несколько иная, однако в алгоритме, который будет изложен ниже, эта проблема не затрагивается.

Метод дихотомии дает более быстрое уменьшение отрезка, чем метод «золотого сечения». После n итераций длина отрезка со-

ставляет 0,5n (b a) , тогда как при использовании метода «золото-

го сечения» длина отрезка будет –

r n (b a),

r 0,61 . Приведем

 

2

2

176

таблицу коэффициентов уменьшения исходного отрезка [a, b] после n итераций для методов дихотомии и «золотого сечения»

(табл. 3.2).

 

 

 

 

 

Таблица 3.2

 

 

 

 

 

 

n

1

2

3

10

 

 

 

 

 

 

r n

0,61

0,38

0,23

...

0,0080

2

 

 

 

 

 

0,5n

0,5

0,25

0,125

0,001

Основной недостаток метода заключается в вычислительных трудностях, связанных с определением производных функции f (x) .

Алгоритм метода дихотомии (поиск минимума).

1.Задан отрезок [a, b]. Вычислить длину отрезка ∆ = b a .

2.Вычислить среднюю точку отрезка xc = a + 0,5и значение

производной dfdx (xc ).

Если производная равна нулю (с точностью ε1 ), то вычисления

прекращаются – x xc .

Если производная меньше нуля, перейти к шагу 3. Если производная больше нуля – к шагу 4.

3. Положить a = xc . Вычислить ∆ = b a .

Если ∆ ≤ ε2 , то закончить вычисления, положить x xc . В противном случае – перейти к шагу 2.

4. Положить b = xc . Вычислить ∆ = b a .

Если ∆ ≤ ε2 , то закончить вычисления, положить x xc .

В противном случае – перейти к шагу 2. Блок-схема алгоритма приведена на рис. 3.10.

177

Вход

Исходные данные a, b, ε1, ε2, f (x)

∆ = b a

 

 

 

 

 

 

 

 

xc = a + 0,5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вычисление

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (xc )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (xc )

 

 

≤ ε1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нет

 

Да

 

 

 

 

 

 

b = xc

 

 

 

 

 

 

 

f ′ < 0

 

 

a = xc

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

∆ = b a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Да

 

 

 

 

 

 

 

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

∆≤ε2

 

 

 

 

a = xc

Рис. 3.10. Блок-схема алгоритма метода дихотомии

 

 

 

 

 

 

 

 

 

 

Выход

 

 

 

178

 

 

 

 

 

 

 

 

3.2.3.3. Метод парабол (метод полиномиальной аппроксимации)

Идея метода весьма проста: если на отрезке [a, b] , внутри кото-

рого лежит точка минимума x , функция f (x) достаточно хорошо аппроксимируется многочленом второй степени, то за приближен-

ное значение x целесообразно взять точку минимума этого многочлена. В случае когда функция гладкая и унимодальная, можно

предполагать, что в окрестности точки x она весьма близка к параболе. Ввиду этого метод парабол целесообразно применять после

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

Пусть

известны три значения

x1 < x2 < x3 , таких, что

f (x )> f (x

2

)< f (x

3

). В этом случае x [x , x

3

]. Построим много-

1

 

 

1

 

член второго порядка, который проходит через три данные точки

(рис. 3.11).

Рис. 3.11. Графическое представление функции f (x) = α0 + α1x + α2x2

179

Коэффициенты α0 , α1 , α2 определяются из системы уравнений:

 

 

 

 

 

 

 

 

 

f

(x

 

)= α

0

+ α

1

x

 

 

+ α

2

x 2 ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

1

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x2 )= α0 + α1 x2 + α2 x22 ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x

3

)= α

0

+ α

1

x

3

 

+ α

2

x 2 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

Минимум полинома определяется из условия

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

df (x)

 

 

= α1

 

+ 2α2 xˆ* = 0 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dx

 

 

 

x=xˆ*

 

 

 

 

 

 

 

 

 

 

Откуда получаем,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xˆ = −

 

α1

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2α2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Найдя α1 и α2

из линейной системы уравнений, получим

 

 

 

 

 

 

 

 

 

 

 

 

 

(x )

 

x 2

 

 

 

 

 

1 x

 

 

f (x

 

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 f

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

1

 

 

1

 

 

 

 

 

 

 

 

 

1

1

 

 

 

 

 

 

 

 

 

 

 

xˆ* = −

 

 

1 f (x2 )

 

x22

 

 

 

 

 

1 x2

f (x2 )

 

=

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

f (x3 )

 

x32

 

 

 

 

 

1

 

 

x3

f (x3 )

 

 

 

 

 

(*)

=

1 (x22 x32 )f (x1 )+ (x32 x12 )f (x2 )+ (x12 x22 )f (x3 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

2

 

(x

2

x

3

)f (x

)+ (x

3

x

 

)f (x

2

)+ (x x

2

)f (x

3

)

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

1

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

Алгоритм метода парабол.

 

 

 

 

 

x1 < x2 < x3 ,

 

 

 

 

 

 

 

 

 

1. Найти

 

 

тройку

 

 

 

 

чисел

 

 

 

 

 

 

 

таких,

что

f (x1 )> f (x2 )< f (x3 ) (это можно сделать, например, используя ал-

горитм поиска отрезка, содержащего точку минимума).

 

 

 

 

2. Вычислить оценку xˆ по формуле (*).

 

 

 

 

 

 

 

 

 

 

 

xˆ* x2

 

≤ ε , закончить процесс, положив x* = xˆ* .

 

3. Если

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ˆ

*

).

 

 

 

 

 

 

 

 

 

 

 

В противном случае – вычислить

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x

 

 

 

 

 

 

 

 

 

 

 

 

4. Из чисел

x ,

x

2

, x

3

, xˆ* выбрать необходимую тройку чисел и

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

перейти к шагу 2.

180