Poszukiwanie minimum w kierunku Metoda złotego podziału

Transkrypt

Poszukiwanie minimum w kierunku Metoda złotego podziału
Poszukiwanie minimum w kierunku
Metoda złotego podziału
Wojciech Rafajłowicz
Od starożytności greckiej rozważano podział odcinka tak aby
√
5−1
a+b
= ab = α =
a
2
a
(1)
b
Podział ten występuje w naturze, uważa się go też za źródło piękna w
naturze. My zajmiemy się algorytmem optymalizacji, który wykorzystuje ten
podział.
Rozważmy funkcję f (x) na odcinku [a, b]. Można udowodnić, że dla sprawdzenia gdzie znajduje się ekstremum potrzebna jest znajomość wartości funkcji w dwóch dodatkowych punktach a < x1 < x2 < b. Wybierzmy te punkty
tak, aby
b − x1
x2 − a
=
=α
x1 − a = b − x1 ,
(2)
b−a
b−a
czyli punkty a, x1 , x2 , b oraz x1 , x2 , b mają spełniać złoty podział.
Po tych obserwacjach oczywistym jest, że uzyskany algorytm będzie miał
charakter iteracyjny. Oznacza to, zę w czasie działania generuje kolejne liczby
– chcemy, ay zbiegały się do rozwiązania.
Musimy więc opracować reguły wyboru odcinka, w którym znajduje się
minimum. Jeśli f (x2 ) > f (x1 ) to bk+1 = x2 , ak+1 = axk+1
= x1 , x1k+1 = αb +
2
(1 − α)a), w przeciwnym wypadku ak+1 = x)1, xk+1
= x2 , bk+1 = bk , xk+1
=
1
2
αa + (1 − α)b.
Aby zaproponowana metoda stała się algorytm konieczne jest co najmniej
jedno kryterium stopu. Są różne możliwości
1. wykonanie określonej liczby kroków np. 3 + 5 log b−a
∆
1
2. zmiana |∆τ = b − a| < W opracowaniu potrzebne będą pewne elementy języka Matlab
Definiowanie funkcji Funkcje definiujemy jako odzielne m-pliki funkcyjne
o nazwie pliku takiej jak funkcja
function [g,y,z]=f(x1,...)
Przekazywanie funkcj jako parametru Przy wywołaniu f(@g,...), można
stworzyć tzw. czystą funkcję bez nazyw f(@(x) x+5)
Zadanie: Napisać możliwie najlepszą metodę złotego podziału, uniwersalną tzn. można wywoływać z dowolną funkcję. Przetestować gdzie działa a
gdzie nie działa tzn. dla jakich typów problemów.
2

Podobne dokumenty