Gyllene snittmetoden är en metod för att hitta extremumet för en reell funktion av en variabel på ett givet intervall. Metoden bygger på principen om segmentindelning i proportionerna av det gyllene snittet . Det är en av de enklaste beräkningsmetoderna för att lösa optimeringsproblem . Först introducerades av Jack Kiefer 1953.
Låt en funktion ges . Sedan, för att hitta det obestämda värdet av denna funktion på ett givet segment som uppfyller sökkriteriet (låt det vara ett minimum ), delas segmentet i fråga i proportion till det gyllene snittet i båda riktningarna, det vill säga två punkter är valda och sådana att:
, var är andelen av det gyllene snittet .På det här sättet:
Det vill säga att punkten delar segmentet i förhållande till det gyllene snittet. Delar segmentet i samma proportion. Denna egenskap används för att bygga en iterativ process.
Algoritmen är hämtad från Matthews och Finks bok Numerical Methods. Använder MATLAB.
Implementeringen av denna algoritm i F# , där målfunktionens värden återanvänds:
låt phi = 0 . 5 * ( 1 . 0 + sqrt 5 . 0 ) låt minimera f eps a b = let rec min_rec f eps a b fx1 fx2 = om b - a < eps så 0 . 5 * ( a + b ) annars låt t = ( b - a ) / phi låt x1 , x2 = b - t , a + t låt fx1 = matcha fx1 med Some v -> v | Ingen -> f x1 låt fx2 = matcha fx2 med Vissa v -> v | Ingen -> f x2 om fx1 >= fx2 då min_rec f eps x1 b ( Vissa fx2 ) Inga andra min_rec f eps a x2 Ingen ( Vissa fx1 ) min_rec f eps ( min a b ) ( max a b ) Ingen Ingen // Anropsexempel: minimera cos 1 e - 6 0 . 0 6 . 28 |> printfn "%.10g" // = 3,141592794; funktion f anropas 34 gånger. minimera ( kul x -> ( x - 1 . 0 )** 2 . 0 ) 1 e - 6 0 . 0 10 . 0 |> printfn "%.10g" // = 1,000000145; funktion f kallas 35 gånger.På grund av det faktum att inom asymptotik kan gyllene snittmetoden omvandlas till den så kallade Fibonacci -talmetoden . Men på grund av egenskaperna hos Fibonacci-tal är antalet iterationer strikt begränsat. Detta är praktiskt om antalet möjliga anrop till funktionen omedelbart ställs in.
_ | Optimeringsmetoder|
---|---|
En-dimensionell |
|
Noll ordning | |
Första beställning | |
andra beställning | |
Stokastisk | |
Linjära programmeringsmetoder _ | |
Icke -linjära programmeringsmetoder |
gyllene snittet | ||
---|---|---|
"Gyllene" figurer | ||
Andra avsnitt |
| |
Övrig |