Issuu on Google+

Матеріал взято з методичних матеріалів Триуса Ю. В. Метод золотого перерізу Розглянемо метод мінімізації унімодальної функції на заданому відрізку, який за своєю структурою є досить простим і дозволяє розв'язати задачу з необхідною точністю при меншій кількості обчислень значень функції порівняно з методом дихотомії. В основу цього методу покладено властивості золотого перерізу відрізка. Поділ відрізка на дві нерівні частини так, що відношення довжини всього відрізка до довжини його більшої частини дорівнює відношенню довжини більшої частини до довжини меншої частини відрізка називається золотим перерізом цього відрізка. Визначимо точки, якi здійснюють золотий перерiз заданого вiдрiзка [a;b] . Очевидно, що таких точок буде двi (рис. 7. а).

u

x

v

a

a

b

u y

v b

б) Рис. 7. Згiдно означення золотого перерiзу, можна скласти два рiвняння вiдносно невiдомих u i v вiдповiдно : a)

ba bu  bu u a

(5)

ba va  va bv

(6) Розв'язок рiвнянь (5) i (6) будемо шукати у виглядi:

u  a  x,v  a  y ,

де x, y  0 і x, y  (b  a) (рис. 7. б). Одержуємо два квадратних рiвняння

x 2  3(b  a) x  (b  a) 2  0 , y 2  (b  a) y  (b  a) 2  0 , коренями яких є

(3  5 ) (3  5 ) (b  a) і x2  (b  a) , 2 2 ( 5  1) ( 5  1) y1  (b  a) і y2  (b  a) . 2 2 Оскільки для точок x2 i y 2 a  x2  b i a  y2  b , то золотi перерiзи визначаються x1 

точками

u  a  x1  a 

(3  5 ) (b  a) = a  0,381966011...(b  a) , 2

(7)

v  a  y1  a 

( 5  1) (b  a)  a  0,618033989...(b  a) . 2

(8) Цi точки розташованi симетрично вiдносно середини вiдрiзка [a;b] i a  u  v  b , при цьому шукане вiдношення мiж довжинами вiдрiзкiв у золотому перерiзi, наприклад, з (5) і (7) дорiвнює


ba  bu

ba   3 5 b   a  (b  a)  2  

2 5 1  1,618034 .  2 5 1

(9) Точка u називається першою точкою золотого перерізу, а точка v – другою. Зауважимо, що точка u є, в свою чергу, другою точкою золотого перерiзу вiдрiзка [a;v] . Дiйсно, iз означення золотого перерiзу i формул (7), (8) маємо нерівність v  u  u  a і рівність u  a  b  v . Тоді, враховуючи (9),

va ua va 5 1 u  a 5 1  .  ,  , тобто ua 2 vu 2 u a v u

Аналогiчно можна показати, що точка v є першою точкою золотого перерiзу вiдрiзка [u;b] . Знаючи одну з точок золотого перерiзу вiдрiзка [a;b] , іншу можна знайти за однiєю з формул: u  a  b  v або v  a  b  u . Використовуючи розглянутi властивостi золотого перерiзу, можна запропонувати такий метод мiнiмiзацii унiмодальної на вiдрiзку [a;b] функції f (x) . Нехай   0 – задана точнiсть вiдшукання точки мiнiмуму. Покладемо на першому кроцi a1  a, b1  b , знайдемо точки u1 i v1 , наприклад, за формулами

u1  a1 

(3  5) (b1  a1 ), v1  a1  b1  u1 , 2

(10) i обчислимо значення функцiї f ( x ) у цих точках: f (u1 ), f (v1 ) . Якщо f (u1 )  f (v1 ) (рис. 8 а)), то покласти a2  a1 , b2  v1 , v2  u1 , f (v2 )  f (u1 ) , знайти u2  a2  b2  v2 i обчислити f (u2 ) .

y

y

f(a1) f(b1)

f(b1) f(a1)

y=f(x)

y=f(x)

f(u1)

f(v1)

f(v1) f*

f(u1) f*

0

a1

u1 x* v1

a2

v2

b2

0

b1 x

a1

u1 x* v1

b1

u2

b2

a2

а)

x

б) Рис. 8.

Якщо f (u1 )  f (v1 ) (рис 8 б)), то покласти a2  u1 , b2  b1 , u2  v1 , f (u2 )  f (v1 ) , знайти v2  a2  b2  u2 i обчислити

f (v2 ) .

В силу унiмодальностi функцiї f ( x ) на [a; b] , вiдрiзок [a2 ; b2 ] має хоча б одну спiльну точку з множиною X * точок мiнiмуму f ( x ) на [a; b] . При цьому довжина вiдрiзка [a2 ; b2 ] дорівнює


b2  a2 

( 5  1) (b  a ). 2

(11) Дійсно, при f (u1 )  f (v1 ) a2  a1 , b2  v1 і тоді

b2  a2  v1  a1  a1 

( 5  1) ( 5  1) (b1  a1 )  a1  (b  a ) , 2 2

а при f (u1 )  f (v1 ) a2  u1 , b2  b1 і тоді

  ( 5  1) (3  5 ) b2  a2  b1  u1  b1   a1  (b1  a1 )  (b  a ). 2 2   Нехай вже визначений вiдрiзок [an ; bn ] , знайденi точки un , vn , значення f (un ) , f (vn ) , при цьому, в загальному випадку, [an ; bn ]  X *   і  5  1   n  bn  an    2 

n 1

(b  a ).

(12) Якщо bn  an   , то процес обчислень закiнчується, i за наближений розв'язок задачi можна взяти точку x  un , якщо f (un )  f (vn ) , або x  vn , якщо f (un )  f (vn ) , при цьому похибка наближення

x [an ; bn ] , з урахуванням (27.7), не перевищує величину n

 5  1 5 1  (b  a )   . g  max{bn  un , vn  an }  (bn  an )   2  2  (13) Якщо ж bn  an  , то при f (un )  f (vn ) покласти an1  an , bn  vn , vn1  un , f (vn1 )  f (un ) , знайти un1  an1  bn1  vn1 і обчислити f (un1 ) , інакше покласти an1  un , bn1  bn , un1  vn , f (un1 )  f (vn ) , знайти vn1  an1  bn1  un1 i обчислити f (vn1 ) . Пiсля чого треба повторити перевiрку умови bn1  an1   i т.д. Як видно з опису методу, на кожному його кроцi (крім першого) обчислюється лише одне значення функцiї f ( x ) (на вiдмiну вiд методу дихотомії). Кількiсть крокiв n методу золотого перерiзу, яка забезпечує задану точнiсть знаходження наближення до деякої точки x* X * , задовільняє нерiвність (див. (13))

n

   ln   b  a

    2,078087  ln .  b  a 5 1 ln 2

Розглянемо алгоритм, який реалізує описаний метод золотого перерізу. Алгоритм 3 (методу золотого перерізу) Нехай задано   0 i вiдрiзок [a; b] , на якому функція f ( x ) унімодальна. К р о к 1. Знайти точки u:  a 

f v :  f (v) .

(3  5 ) (b  a ), v:  a  b  u і обчислити f u :  f (u) , 2


К р о к 2. Якщо f u  f v , то покласти a:  a, b:  v, x: u , f :  f (u) , v: u , f v : f u , знайти u: a  b  v і обчислити f u :  f (u) ; iнакше ( f u  f v ) покласти a: u , b: b , x: v , f :  f (v) , u: v , f u : f v , знайти v: a  b  u і обчислити f v :  f (v) . К р о к 3. Якщо b  a   , то перейти на виконання кроку 4, iнакше перейти до виконання кроку 2. К р о к 4. Вивести x , f . Кінець алгоритму. З а у в а ж е н н я. На жаль чисельна реалізація описаного алгоритму, а отже і методу золотого перерізу, призводить до того, що він стає практично незастосовним навіть при невеликих

n . Це викликано тим, що значення 5 в ЕОМ обчислюється наближено і вже перші точки ітераційного процесу (див.(27.6)) будуть знайдені з деякою похібкою, яка при збільшенні n досить швидко накопичується, а це призводить до того, що порушується властивість симетричності методу. Розглянемо модифікований алгоритм методу золотого перерізу, який у випадку порушення симетричності методу, а, точніше, коли на деякому кроці n буде vn  un , перераховує для поточного відрізка [an ; bn ] золотий переріз за формулами (27.6), що забезпечує його практичну застосовність до розв’язування задач одновимірної мінімізації та перевагу перед методом дихотомії за кількісттю обчислень значень функції f ( x ) при заданій точності  . Алгоритм 3 (модифікованого методу золотого перерізу) Нехай задано   0 і відрізок [a; b] , на якому функція f ( x ) унімодальна. К р о к 1. Знайти точки u:  a 

f v :  f (v) .

(3  5) (b  a ), v:  a  b  u і обчислити f u :  f (u) , 2

К р о к 2. Якщо f u  f v , то покласти a:  a, b:  v, x: u , f : f u , v: u , f v : f u , знайти u: a  b  v і якщо u  v , то обчислити f u :  f (u) ; інакше ( f u  f v ) покласти a: u , b: b , x: v , f :  f (v) , u: v , f u : f v , знайти v: a  b  u і якщо u  v , то обчислити f v :  f (v) . К р о к 3. Якщо b  a   , то перейти на виконання кроку 5. К р о к 4. Якщо u  v , то перейти до виконання кроку 2, інакше перейти на виконання кроку 1. К р о к 5. Вивести x , f . Кінець алгоритму. З а у в а ж е н н я. Розглянутий алгоритм методу золотого перерізу можна застосовувати на практиці і для більш широкого класу неперервних функцій, але отриманий при цьому розв'язок може виявитися далеким від точку глобального мінімуму.


Gold pereriz