Sei sulla pagina 1di 3

Algoritmo della sezione aurea

Lidea del metodo la seguente. Sia data una terna di numeri (a,b,c) iniziale (a < b < c) che comprende il minimo della funzione f, cio tale che f(b) < f(a) e f(b) < f(c). Cerchiamo un punto x interno allintervallo [a, c] tale che una delle due terne (a, b, x) (nel caso f(b) < f(x)) oppure (b,x,c) (nel caso opposto, f(b) > f(x)) comprende il minimo. Il problema quello di trovare la strategia ottimale per determinare il nuovo punto x. Poniamo (b - a) / (c - a) = W e quindi (c - b) / (c - a) = 1 - W ; inoltre poniamo anche (x - b) / (c - a) = Z. Nel primo caso, corrispondente alla terna (a, b, x) , lintervallo [a, x] ha lunghezza relativa a quello iniziale [a, c] pari a W + Z; nel secondo caso, corrispondente alla terna (b, x, c) il nuovo intervallo [b, c] e quindi di lunghezza relativa ad [a, c] pari a 1 - W. Se vogliamo minimizzare il caso peggiore, dobbiamo prendere le due lunghezze relative uguali, cio

(1)

Z=1-2W

Si vede subito che x - c = b - a . Poich Z > 0 implica W < 1/2 si ha che x appartiene allintervallo [b, c], che pi grande dellintervallo [a, b]. Unulteriore determinazione si ottiene applicando una similarit di scala; cio se la scelta di x e quindi di Z corrisponde ad un valore ottimale, lo stesso deve valere della iterazione precedente che ha portato a b e quindi di W. Perci x deve essere posto di una frazione tra b e c di quanto b lo era tra a e c, cio

(2) Le due equazioni (1) e (2) danno

Z/(1-W) =W

(3) che d

W2 - 3 W + 1 = 0

(4)

W = (3 - 5) / 2 0.038197

Notiamo che W coincide con la frazione di Fibonacci F1 . Lalgoritmo si puo pertanto formalizzare nel modo seguente. Ricordiamo le seguenti frazioni di Fibonacci F1 =(3- 5)/2 ; F2 =( 5-1)/2 (F1+F2 =1; F1 =(F2)2 ) Consideriamo le valutazioni della funzione in tre punti, x3(0) (ultimo punto), x2(0) , x1(0) e sia f(x3(0)) f(x2(0)). Siano x3(k), x1(k) , x2(k) , i tre punti al passo k-esimo. Poniamo D(k) = x3(k) - x1(k) Lintervallo D(k+1) calcolato nel modo seguente: Poniamo

y1(k) = x1(k) +F1 D(k) y2(k) = x1(k) +F2 D(k) = x3(k) -F1D(k)

Se f(y1(k)) < f(y2(k)) : D(k+1) =(y2(k) - x1(k) ) ; x1(k+1) = x1(k) ; x3(k+1) = y2(k) Se f(y1(k)) > f(y2(k) ) : D(k+1) =( x3(k) - y1(k) ) ; x1(k+1) = y1(k) ; x3(k+1) = x3(k) Se f(y1(k)) = f(y2(k) ) : D(k+1) =( y2(k) - x1(k) )= ( x3(k) - y1(k) ); x1(k+1) = x1(k) ; x3(k+1) = y2(k) oppure x1(k+1) = y1(k) ; x3(k+1) = x3(k) .

Criterio di terminazione dellalgoritmo


Un punto molto interessante da discutere il criterio di terminazione dellalgoritmo. Non ha senso richiedere che lintervallo al quale fermarsi abbia una larghezza minore di mach (come si sarebbe tentati di fare in un primo approccio). Infatti, poich nelle vicinanze del minimo la funzione , generalmente , approssimabile con la serie di Taylor al secondo ordine mancante del termine lineare (in quanto nel punto di minimo le derivate prime si annullano); si ha quindi che la differenza tra due valori della funzione nellintervallo finale dellordine del quadrato della differenza degli argomenti. Pertanto la tolleranza richiesta non pu essere molto pi piccola della radice quadrata della precisione del computer, cio mach. Lalgoritmo della sezione aurea non fa alcun riferimento allandamento della funzione nellintorno del minimo (caso peggiore). Se si suppone che il comportamento della funzione nellintorno del minimo sia di tipo generico, cio andamento parabolico, allora naturale ipotizzare che una successione di interpolazioni paraboliche su tre punti possa convergere velocemente al minimo (a meno di casi non generici, per i quali occorre ricorrere al metodo pi generale della sezione aurea). Il metodo della interpolazione inversa di Brent (1973) basato proprio su successive interpolazioni a parabole e a ricerca di minimi su parabole.

Un approccio ottimale sembra essere quello di combinare passi di interpolazione inversa parabolica e passi di sezione aurea.

Potrebbero piacerti anche