Regola di Armijo

JohnRich
Salve a tutti!

Ho una perplessità su una esercitazione di laboratorio di un esame che ho indietro e in questo periodo non posso contattare la prof, quindi chiedo la vostra spiegazione. Ammetto di avere parecchie difficoltà in tutta l'analisi numerica, quindi può essere che non vedo davanti al mio naso.

Mi si chiede di implementare in Matlab il metodo di Newton e successivamente inserire la regola di Armijo, con un opportuna tecnica di backtracking (non è specificato per risolvere quale problema, se $f(x)=0$ o un problema di minimo). Io ho sempre fatto tutti i discorsi che riguardano le regole di Wolfe per quanto riguarda i problemi di minimo, non per la ricerca degli zeri, invece qui mi si chiede poi di trovare con questo programma gli zeri di alcune funzioni. O è espresso male il testo e devo usare soltanto Newton oppure non capisco cosa devo fare...

Prima cosa, mi serve una direzione di discesa perché io possa scrivere $x_(k+1)=x_k+a*p_k$. Per i problemi di minimo risolvo ad ogni passo $H_k*p_k=-g_k$ dove $g_k$ è il gradiente e H l'hessiana, ma per le proprietà di H so che $p_k$ è una direzione di discesa, giusto? Come faccio invece a trovare una direzione di discesa con il metodo di Newton per cercare gli zeri?

Poi, la regola di Armijo serve per assicurarmi che l'algoritmo di backtracking mi dia un $a$ sufficientemente piccolo da avvicinarmi al minimo in $a$ della funzione $f(x_k+a*p_k)$, giusto? Ma se devo annullare f e non minimizzarla che cosa posso fare? Non posso prendere il modulo di f...

Risposte
Deckard1
Non ho mai sentito usare la regola di Armijo per calcolare gli zeri di una funzione. Esiste il metodo di Newton per ricercare gli zeri, ma NON è lo stesso usato per l'ottimizzazione di una funzione.
Ad ogni modo stai attento che $p_k = - H^{-1}_{k} * g_k$ non è sempre direzione di discesa: dipende dalla definita-positività di $H_k$ (ammesso inoltre che $H_k$ non sia singolare).
"JohnRich":

Poi, la regola di Armijo serve per assicurarmi che l'algoritmo di backtracking mi dia un $a$ sufficientemente piccolo da avvicinarmi al minimo in $a$ della funzione $f(x_k+a*p_k)$, giusto?

Perché sufficientemente piccolo? $a$ diventa piccolo se non si riesce a soddisfare le due condizioni di Wolfe nelle prime iterazioni dell'algoritmo. A quel punto ci si accontenta di $a$ piccolo purché le soddisfi.

Deckard1
Piccola osservazione che mi è venuta in mente: il metodo di Newton per l'ottimizzazione non è nient'altro il metodo di Newton per trovare gli zeri ma della derivata della funzione.
La regola di aggiornamento di Newton per gli zeri è:
$x_k+1 := x_k - f(x_k)/{f'(x_k)}$
Se vogliamo trovare gli zeri della derivata di $f$ abbiamo quindi
$x_k+1 := x_k - {f'(x_k)}/{f''(x_k)}$
che generalizzato a più variabili diventa il metodo di Newton di cui stavamo parlando.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.