Az aranymetszet módszere egy változó valós függvényének szélsőértékének meghatározására szolgáló módszer egy adott intervallumon. A módszer az aranymetszet arányaiban történő szegmensosztás elvén alapul . Ez az egyik legegyszerűbb számítási módszer az optimalizálási problémák megoldására . Először Jack Kiefer mutatta be 1953-ban.
Legyen adott függvény . Ezután annak érdekében, hogy egy adott, a keresési feltételnek megfelelő szegmensen megtaláljuk ennek a függvénynek a határozatlan értékét (legyen ez minimum ), a vizsgált szegmenst mindkét irányban az aranymetszet arányában elosztjuk, azaz két pont. úgy vannak kiválasztva , hogy:
, ahol az aranymetszet aránya .Ilyen módon:
Vagyis a pont osztja a szakaszt az aranymetszés viszonylatában. Hasonló módon osztja fel a szegmenst ugyanolyan arányban. Ez a tulajdonság egy iteratív folyamat felépítésére szolgál.
Az algoritmus Matthews és Fink Numerical Methods című könyvéből származik. MATLAB használata.
Ennek az algoritmusnak az F# -ban való megvalósítása, amelyben a célfüggvény értékeit újra felhasználják:
legyen phi = 0 . 5 * ( 1. 0 + sqrt 5. 0 ) legyen f eps minimalizálása a b = legyen rec min_rec f eps a b fx1 fx2 = ha b - a < eps , akkor 0 . _ 5 * ( a + b ) else legyen t = ( b - a ) / phi legyen x1 , x2 = b - t , a + t legyen fx1 = párosítsa az fx1 - t a Some v - > v - vel | Nincs -> f x1 legyen fx2 = párosítsa az fx2 -t a Some v -> v | -vel Nincs -> f x2 if fx1 >= fx2 then min_rec f eps x1 b ( Some fx2 ) Nincs más min_rec f eps a x2 Nincs ( Some fx1 ) min_rec f eps ( min a b ) ( max a b ) Nincs Nincs // Hívási példák: minimalize cos 1 e - 6 0 . 0 6 . 28 |> printfn "%.10g" // = 3,141592794; f függvényt 34-szer hívjuk meg. minimalizálni ( szórakozás x -> ( x - 1 . 0 )** 2 . 0 ) 1 e - 6 0 . 0 10 . 0 |> printfn "%.10g" // = 1,000000145; f függvényt 35-ször hívjuk meg.Tekintettel arra, hogy az aszimptotikában az aranymetszet módszer átalakítható az úgynevezett Fibonacci -számmódszerré . A Fibonacci-számok tulajdonságai miatt azonban az iterációk száma szigorúan korlátozott. Ez akkor kényelmes, ha azonnal beállítja a funkció lehetséges hívásainak számát.
Optimalizálási módszerek | |
---|---|
Egydimenziós |
|
Nulla sorrend | |
Első rendelés | |
másodrendű | |
Sztochasztikus | |
Lineáris programozási módszerek | |
Nemlineáris programozási módszerek |
aranymetszés | ||
---|---|---|
"Arany" figurák | ||
Egyéb szakaszok |
| |
Egyéb |