Aranymetszet módszer

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt hozzászólók, és jelentősen eltérhet a 2018. február 18-án felülvizsgált verziótól ; az ellenőrzésekhez 10 szerkesztés szükséges .

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.

A módszer leírása

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.

Algoritmus

  1. Az első iterációnál az adott szakaszt elosztjuk két, a középpontjára szimmetrikus ponttal, és ezekben a pontokban kiszámítjuk az értékeket.
  2. Ezt követően a szegmens egyik végét, amelyhez a két újonnan beállított pont közül a maximum értékű (a minimum keresése esetén ) közelebbinek bizonyult, eldobjuk.
  3. A következő iterációnál az aranymetszet fentebb bemutatott tulajdonsága miatt már csak egy új pontot kell keresni.
  4. Az eljárás a megadott pontosság eléréséig folytatódik.

Formalizálás

  1. 1. lépés: A szakasz kezdeti határai és a pontosság beállítása .
  2. 2. lépés : Számítsa ki a kezdeti osztási pontokat: és a bennük lévő célfüggvény értékeit : .
    • Ha (a max kereséséhez módosítsa az egyenlőtlenséget értékre ), akkor
    • Különben .
  3. 3. lépés
    • Ha , akkor hagyja abba.
    • Ellenkező esetben térjen vissza a 2. lépéshez.

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.

Fibonacci számmódszer

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.

Algoritmus

  1. 1. lépés: A szakasz kezdeti határait és az iterációk számát meghatározzuk , a kezdeti osztási pontokat kiszámítjuk: és a bennük lévő célfüggvény értékeit : .
  2. 2. lépés .
    • Ha , akkor .
    • Különben .
  3. 3. lépés
    • Ha , akkor hagyja abba.
    • Ellenkező esetben térjen vissza a 2. lépéshez.

Irodalom

  1. Akulich I. L. Matematikai programozás példákban és feladatokban: Proc. diákgazdasági juttatás. szakember. egyetemek. - M . : Feljebb. iskola, 1986.
  2. Gill F., Murray W., Wright M. Gyakorlati optimalizálás. Per. angolról. - M .: Mir, 1985.
  3. Korshunov Yu. M. A kibernetika matematikai alapjai. - M .: Energoatomizdat, 1972.
  4. Maksimov Yu. A., Filippovskaya EA Algoritmusok nemlineáris programozási problémák megoldására. — M. : MEPhI, 1982.
  5. Maksimov Yu. A. Lineáris és diszkrét programozási algoritmusok. — M. : MEPhI, 1980.
  6. Korn G., Korn T. Matematikai kézikönyv tudósok és mérnökök számára. - M . : Nauka, 1970. - S. 575-576.
  7. Korn G., Korn T. A matematika kézikönyve kutatóknak és mérnököknek . - M . : Nauka, 1973. - S. 832 illusztrációkkal ..
  8. John G. Matthews, Curtis D. Fink. Numerikus módszerek. MATLAB használata. — 3. kiadás. - M., St. Petersburg: Williams, 2001. - S. 716.

Lásd még