Gyllene snittmetoden

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 18 februari 2018; kontroller kräver 10 redigeringar .

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.

Beskrivning av metoden

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.

Algoritm

  1. Vid den första iterationen delas det givna segmentet med två punkter som är symmetriska kring dess centrum, och värdena vid dessa punkter beräknas.
  2. Därefter kasseras en av ändarna av segmentet, till vilket, bland de två nyinställda punkterna, den med maximalt värde (för fallet med sökning efter minimum ) visade sig vara närmare.
  3. Vid nästa iteration, på grund av egenskapen hos det gyllene snittet som visas ovan, är det redan nödvändigt att leta efter bara en ny punkt.
  4. Proceduren fortsätter tills den specificerade noggrannheten uppnås.

Formalisering

  1. Steg 1. De initiala gränserna för segmentet och noggrannheten ställs in .
  2. Steg 2. Beräkna de initiala divisionspunkterna: och värdena i dem för målfunktionen : .
    • Om (för att söka efter max ändra olikheten till ), då
    • Annars .
  3. Steg 3
    • Om , sluta då.
    • Annars går du tillbaka till steg 2.

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 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 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.

Fibonacci-talmetoden

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.

Algoritm

  1. Steg 1. De initiala gränserna för segmentet och antalet iterationer ställs in , de initiala divisionspunkterna beräknas: och målfunktionens värden i dem : .
  2. Steg 2. .
    • Om , då .
    • Annars .
  3. Steg 3
    • Om , sluta då.
    • Annars går du tillbaka till steg 2.

Litteratur

  1. Akulich I. L. Matematisk programmering i exempel och uppgifter: Proc. bidrag för studenters ekonomi. specialist. universitet. - M . : Högre. skola, 1986.
  2. Gill F., Murray W., Wright M. Praktisk optimering. Per. från engelska. — M .: Mir, 1985.
  3. Korshunov Yu. M. Matematiska grunder för cybernetik. — M .: Energoatomizdat, 1972.
  4. Maksimov Yu. A., Filippovskaya EA Algoritmer för att lösa olinjära programmeringsproblem. — M .: MEPhI, 1982.
  5. Maksimov Yu. A. Linjära och diskreta programmeringsalgoritmer. — M .: MEPhI, 1980.
  6. Korn G., Korn T. Handbok i matematik för vetenskapsmän och ingenjörer. - M . : Nauka, 1970. - S. 575-576.
  7. Korn G., Korn T. En handbok i matematik för forskare och ingenjörer . - M . : Nauka, 1973. - S. 832 med illustrationer ..
  8. John G. Matthews, Curtis D. Fink. Numeriska metoder. Använder MATLAB. — 3:e upplagan. - M., St. Petersburg: Williams, 2001. - S. 716.

Se även