caricato da wond3r_

2. Metodi del gradiente e del gradiente coniugato

annuncio pubblicitario
2
Risoluzione di sistemi lineari con metodi iterativi
I metodi iterativi per
di sistemi lineari del tipo Ax = b forniscno un metodo per costruire una
) la risoluzione
*
successione del tipo x(k) kœN tale che x(k) converga alla soluzione x per k che tende all’infinito (per qualsiasi
vettore iniziale x(0) ):
Ó
Ô
x(k)
t.c. x(k) ≠æ x
kæŒ
kœN
lim x(k) = x
kæŒ
Questi metodi si articolano in tre passi:
1. Metodo che permette, noti x(j) per j Æ k di determinare da x(k+1) .
2. Dimostrazione della convergenza del metodo.
3. Stima dell’errore per determinare il criterio di arresto.
Inizieremo ad introdurre il metodo del gradiente.
2.1
Metodo del gradiente
Il metodo del gradiente si può utilizzare quando A è simmetrica e definita positiva.
Cominciamo con il dimostrare che, sotto queste ipotesi, risolvere il sistema è equivalente a risolvere un problema di
minimo.
Teorema 2. Sia (y) = 21 yT Ay ≠ yT b con : Rn æ R la forma quadratica associata alla matrice A. Allora x è
soluzione di Ax = b se e solo se x è punto di minimo assoluto di
Osservazione 2.1. La funzione (y) = 12 yT Ay ≠ yT b con
e un paraboloide nel caso n = 2 :
n=1∆
n=2∆
(y) =
Nel caso n = 1 si verifica facilmente che x =
parabola (ascissa del vertice).
b
a
#
: Rn æ R rappresenta una parabola nel caso n = 1
a 2
y ≠ by
2
5
65
6
$ a11 a12
y1
y2
a21 a22
y2
(y) =
y1
soluzione dell’equazione ax = b è anche punto di minimo della
Dimostrazione.
1. ∆ Supponiamo che x sia soluzione di Ax = b e dimostriamo che è il punto di minimo della
funzione . Infatti, per v ”= 0 si ha
(x + v) =
1
T
T
(x + v) A (x + v) ≠ (x + v) b =
2
(x)
˙
˝¸
˚
1
1
1
1
= xT Ax ≠ xT b + vT Ax + xT Av + vT Av ≠ vT b =
2
2
2
2
=
1
1
1
(x) + vT b + xT Av + vT Av ≠ vT b =
2
2
2
(osservando che, essendo A è una matrice simmetrica:
=
1
(x) + vT Av Ø
2
!
" !
"T
xT Av = xT Av = vT Ax = vT b )
1
(x) + ⁄min ÎvÎ2 >
2
(x)
dove l’ultima disuguaglianza vale poichè A è definita positiva
Quindi ’ v ”= 0 si ha (x + v) >
(assoluto) della funzione .
(x) , e di conseguenza abbiamo dimostrato che x è il punto di minimo
13
Figura 2: La prima iterata del metodo del gradiente sul grafico di F
2. ≈ Supponiamo ora che x sia punto di minimo della funzione
. :
Essendo la funzione
ovviamente derivabile, per il teorema di Fermat deve essere Ò (x) = 0. Sriviamo
(y) rispetto alle componenti di y e calcoliamo le derivate parziali
(y1 , . . . , yn ) =
Se i=k
n
n
ÿ
1 ÿ
aij yi yj ≠
bi y i
2 i,j=1
i=1
Sono uguali perchè A è simmetrica
Se j=k
˙
˝¸
˚ ˙ ˝¸ ˚
n
n
ˆ
1ÿ
1ÿ
1
=
akj yj +
aki yi ≠bk =
ˆyk
2 j=1
2 i=1
2
=
n
ÿ
i=1
˙Q
˝¸
R˚
n
n
ÿ
ÿ
a
akj yj +
aki yi b ≠bk =
j=1
i=1
aki yi ≠ bk = (Ay ≠ b)k ovvero la k-esima componente di Ay ≠ b
∆ Ò (y) = Ay ≠ b = ≠r
Quindi Ò (x) = 0 ∆ Ax = b
Osservazione 2.2. Nell’ultima parte della dimostrazione abbiamo dimostrato che Ò (y = Ay ≠ b = ry .
Quindi per risolvere il sistema si cerca il punto di minimo x di . Partendo da un punto x(0) œ Rn si sceglie
come direzione di discesa quella definita da ≠Ò (x0 ) = rx0 = r0 , ricordando che questa (localmente) è la direzione
di massima discesa.
Si procede nel modo seguente (si veda fig 2.1)
! (0) "
! (0) "
1. Scelto un punto x(0) arbitrario, si calcola z =
x
e si considera la curva di livello
x
, in questo caso
un’ellisse.
2. Con l’obiettivo di avvicinarsi al punto
!
"di minimo della funzione si sceglie di muoverso lungo la direzione di
massima decrescita è pari a ≠Ò x(0) , che è anche ortogonale alla linea di livello.
3. Si valuta la funzione lungo questa semiretta, cosa che equivale a considerare una sezione del grafico fatta fa un
piano che contiene la semiretta che origina in x0 con direzione e verso identificata dall’opposto del gradiente
e ortogonale al piano su cui giace la curva di livello.
14
Figura 3: Le prime iterate generate dal metodo del gradiente sulle curve di livello di
4. Il piano taglia il paraboloide e la traccia del paraboloide su tale piano è una parabola.
5. Si trova il punto di minimo della parabola, e questo sarà il punto x(1) da cui si parte per l’iterazione successiva.
Quindi in generale si procede in questo modo:
• supponendo di avere x(k) si cerca x(k+1) della forma:
Direzione
x(k+1)
con r(k) = b ≠ Ax(k)
˙ 1˝¸ 2˚
= x ≠ – Ò x(k) = x(k) + –r(k)
!
• Si cerca ora il valore – = –(k) tale che
"
x(k+1) sia minimo.
Poiché x(k) e r(k) sono noti (in quanto calcolati al passaggio precedente), la funzione
del solo parametro – :
1
2
x(k+1) ≠æ F (–)
!
"
x(k+1) è funzione
Quindi applicando la formula di derivazione di una funzione composta in Rn si ha
F Õ (–) = Ò
1
2
1
2
T
x(k+1) = Ò x(k) + –r(k) r(k) =
e ricordando il rapporto tra gradiente e residuo, si ottiene:
= r(k)
T
1 1
2
2
1
2
T
A x(k) + –r(k) ≠ b = r(k) ≠r(k) + –Ar(k) =
= ≠r(k) r(k) + –r(k) Ar(k) = 0
T
T
da cui
r(k) r(k)
T
r(k) Ar(k)
T
F Õ (–) = 0 ≈∆ – = –(k) =
(5)
Osservazione 2.3. Il denominatore nell’ultimo termine della (5) è diverso da zero perchè A è definita positiva.
Algoritmo 2. L’algoritmo si articola in quattro passi:
1. Si sceglie un x(0) arbitrario.
2. Si calcola r(k) (direzione di discesa):
r(k) = b ≠ Ax(k)
15
Figura 4: Direzione di p(0) rispetto a r(0)
3. Si calcola –(k) (lunghezza del passo):
r(k) r(k)
T
r(k) Ar(k)
T
–(k) =
4. Si calcola x(k+1) :
x(k+1) = x(k) + –(k) r(k)
Osservazione 2.4. Il metodo del gradiente fa parte dei metodi di Richardson dinamici, ovvero un metodo per cui
l’elemento x(k+1) è ottenuto a partire da quello precedente x(k) , a cui viene sommato un multiplo del residuo r(k)
con coefficiente – (detto parametro di rilassamento o di accelerazione) :
• Se – è costante si parla di metodo di Richardson stazionario.
• Se – = –(k) (variabile al variare del passo k ) si parla di metodo di Richardson dinamico.
2.2
Metodo del gradiente coniugato
!
"
Osserviamo che la direzione di discesa scelta, cioè r(k) = ≠Ò x(k) è localmente la direzione di massima
decrescita, ma in generale non è ottimale perché non punta verso il centro dell’ellissoide insieme di livello, tranne
nel caso in cui gli insiemi di livello siano sfere (che però significa A diagonale con elementi sulla diagonale tutti
uguali). Per migliorare la convergenza ci chiediamo se non sia possibile scegliere una direzione di discesa p(k)
"migliore" rispetto a quella opposta al gradiente, cioè tale che la velocità di convergenza sia maggiore.
T
Cominciamo con l’osservare che, affinché la funzione „ decresca nella direzione di p(k) , deve essere p(k) r(k) Ø 0,
(k)
(0)
cioè p . Come si può osservare anche dalla figura 4 (che illustra il caso n = 2), se p punta direttamente verso
la soluzione x forma un angolo rispetto a r(0) minore di fi2 (deve cioè puntare verso l’interno della linea di livello).
! (k)
"
Per determinare –(k) che minimizza
x + –(k) p(k) eseguendo gli stessi passaggi che sono stati effettuati
per il calcolo della (5), si ottiene:
T
p(k) r(k)
–(k) =
(6)
T
p(k) Ap(k)
x(k+1) = x(k) + –(k) p(k)
Il problema si riduce ora a determinare la direzione p(k) ottimale.
Osservazione 2.5. Con questa scelta di –(k) si ottiene che il resituo al passaggio k + 1 è ortogonale a p(k) , cioè:
r(k+1) ‹ p(k)
(Verificare!!)
Determinazione di p(k)
La strategia è far sì che ogni passo sia ottimale tenendo conto di tutti i passaggi precedenti, cioè al primo passo si
minimizza lungo una retta (nella direzione p(0) ), al second passo si minimizza lungo un piano (individuato da p(0)
e p(1) ), e così via. Si procede quindi come segue:
1. Si scelgono arbitrariamente x(0) (punto di partenza) e p(0) (ad esempio uguale a r(0) , anche se non è necessario).
16
Figura 5: Le direzioni di discesa del gradiente coniugato (in linea tratteggiata e denotate con CG) e quelle del
gradiente (in linea continua ed indicate con G). Si noti come il metodo CG in due iterazioni abbia già raggiunto la
soluzione.
2. Si definisce il punto x(1) = x(0) + –(0) p(0) con –(0) che minimizza
p(0) r(0)
T
p(0) Ap(0)
T
–(0) =
!
"
x(0) + –p(0) , cioè:
3. Si !definisce poi il punto x(2)" = x!(1) + –(1) p"(1) = x(0) + –(0) p(0) + –(1) p(1) dove –(0) e –(1) sono tali che
x(0) + –(0) p(0) + –(1) p(1) = F –(0) , –(1) sia minima. Quindi x(2) è il punto di minimo di (v) tra tutti
i v della forma v = x(0) + –(0) p(0) + –(1) p(1) =∆ Si sta minimizzando lungo un piano (descritto dai vettori
p(0) e p(1) ).
!
"
4. Si calcola quindi ÒF –(0) , –(1) e lo si eguaglia al vettore nullo:
1
2
Ë 1
2
È
T
T
ˆF
= p(0) Ò x(0) + –(0) p(0) + –(1) p(1) = p(0) A x(0) + –(0) p(0) + –(1) p(1) ≠ b =
(0)
ˆ–
1
2
T
= p(0) ≠r(0) + –(0) Ap(0) + –(1) Ap(1) = 0
(7)
= ≠p(0) r(0) + –(0) p(0) Ap(0) + –(1) p(0) Ap(1) = 0
T
T
T
(Per i passaggi vedi quelli effettuati per il calcolo della (5))
1
2
Ë 1
2
È
ˆF
(1)T
(0)
(0) (0)
(1) (1)
(1)T
(0)
(0) (0)
(1) (1)
=
p
Ò
x
+
–
p
+
–
p
=
p
A
x
+
–
p
+
–
p
≠
b
=
ˆ–(1)
1
2
T
= p(1) ≠r(0) + –(0) Ap(0) + –(1) Ap(1) =
= ≠p(1) r(0) + –(0) p(1) Ap(0) + –(1) p(1) Ap(1) = 0
T
T
T
5. Si osserva che se si sceglie p(1) tale che p(0) Ap(1) = 0 (si dice che p(1) è A-ortogonale a p(0) si ritrova l’–(0)
calcolato al passo precedente, cioè:
T
p(0) r(0)
T
p(0) Ap(0)
T
–(0) =
e si trova
p(1) r(0)
p(1) r(1)
=
T
T
(1)
(1)
p
Ap
p(1) Ap(1)
T
–(1) =
17
T
dove l’ultima uguaglianza segue dalla scelta di p(1) A-ortogonale a p(0) (infatti con questa scelta si ha che
T
T
p(1) r(0) = p(1) r(1) )
6. Avendo determinato x(k+1) , al passo (k + 1)-esimo si pone:
Combinazione lineare
x(k+1) = x(0) +
˙
˝¸
˚
k
ÿ
–(j) p(j)
Punto di minimo di
t.c. x(k+1) =
j=0
con v = x(0) +
k
ÿ
˙
˝¸
˚
argmin (v)
— (j) p(j)
j=0
!
"
Calcolando, come prima, il gradiente della funzione di k + 1 variabili F –(0) , –(1) , . . . , –(k) ed eguagliadolo
al vettore nullo, si ottiene che la condizione per avere gli –(j) con j = 0, 1, . . . , k ≠ 1 ottimali calcolati in
precedenza è quella di scegliere p(k) tale che sia A-ortogonale ai p(j) con j = 1, . . . , k ≠ 1, cioè:
p(k) Ap(k+1) = 0
T
e risulta che gli –(j) minimizzanti sono dati da
p(j) r(j)
T
p(j) Ap(j)
T
–(j) =
per j = 0, 1, . . . , k.
Ë
È
T
T
T
p(k) A r(k+1) ≠ — (k) p(k) = p(k) Ar(k+1) ≠ — (k) p(k) Ap(k) = 0
7. Restano da determinare i p(j) A-ortogonali tra loro. Per fare questo, al passo k + 1, si modifica la direzione
del gradiente (cioè r(k+1) ) sottraendo un multiplo di p(k) , cioè si cerca p(k+1) della forma
p(k+1) = r(k+1) ≠ — (k) p(k)
(8)
e si sceglie — (k) tale che p(k+1) sia A-ortogonale a p(k) , cioè
Ë
È
T
T
T
p(k) A r(k+1) ≠ — (k) p(k) = p(k) Ar(k+1) ≠ — (k) p(k) Ap(k) = 0
da cui
p(k) Ar(k+1)
T
p(k) Ap(k)
T
— (k) =
Teorema 3. Con questa scelta p(k+1) è A-ortogonale non solo a p(k) ma a tutti i p(j) con j = 0, . . . , k
Osservazione 2.6. I vettori p(j) sono linearmente indipendenti, da cui segue che ce ne sono al più n distinti
e quindi dopo al più n passi si arriva alla soluzione esatta.
Infatti se consideriamo una combinazione lineare di r di questi che dia il vettore nullo si ha:
v=0=
r
ÿ
v (j) p(j)
j=0
(i)T
p
(i)T
Av = p
Q
R
ú
˙ ˝¸ ˚
r
r
ÿ
ÿ
T
(j)
(j)
(j)
(i)
Aa
v p b=
v p
Ap(j) = v (i) p(i) Ap(i) ”= 0
j=0
j=0
18
úæ
È uguale a zero
tranne per i = j
(Per A-ortogonalità)
(poiché da A definita positiva p(i) Ap(i) Ø ⁄min Îp(i) Î2 > 0
T
Concludiamo quindi che deve essere v (j) = 0 per ogni j = 0, 1, . . . , r e quindi che i vettori sono linearmente
indipendenti.
Poiché in Rn vi sono Al massio n vettori linearmente indipendenti, i vettori della forma v =
qk
(0)
(j) (j)
x + j=0 — p esauriscono tutto Rn e x(n) è il minimo di tutto Rn ∆ È il minimo.
Osservazione 2.7. Questa conclusione è vera in aritmetica esatta, in Matlab ci sono gli errori di calcolo ed
è quindi necessario un criterio di arresto. Peraltro, se il sistema è grande, ci si arrestaprima di aver raggiunto
le n iterazioni.
Algoritmo 3. L’algoritmo si articola nei seguenti passi:
1. Si sceglie arbitrariamente x(0) (punto di partenza) e p(0) = r(0)
2. Si calcola –(k) :
3. Si calcola x(k+1) :
4. Si calcola r(k+1) :
p(k) r(k)
T
p(k) Ap(k)
T
–(k) =
x(k+1) = x(k) + –(k) p(k)
r(k+1) = b ≠ Ax(k+1) = r(k) ≠ –(k) Ap(k)
5. Si calcola — (k) in modo tale che p(k+1) sia A-ortogonale a p(k) :
p(k) Ar(k+1)
T
p(k) Ap(k)
T
— (k) =
6. Si calcola p(k+1) :
2.3
p(k+1) = r(k+1) ≠ — (k) p(k)
Velocità di convergenza
Definizione 6. Si definisce norma A (per A simmetrica e definita positiva) di x la quantità:
ÎxÎ2A = xT Ax
Osservazione 2.8. Si tratta effettivamente di una norma in quanto:
• ÎxÎA Ø 0.
• ÎxÎA = 0 se solo se x = 0
• Omogeneità:
ΖvÎA = |–| · ÎvÎA
• Proprietà triangolare:
Îx + yÎA Æ ÎxÎA + ÎyÎA
Si osservi che se A è la matrice identità si ottiene la norma euclidea del vettore x.
Inoltre, essendo la matrice A simmetrica definita positiva, si ha che
⁄min ÎxÎ Æ ÎxÎA Æ ⁄max ÎxÎ
e quindi che le due norme sono equivalenti.
19
(9)
Teorema 4. [Velocità di convergenza metodo gradiente]
’ x(0) œ Rn :
K (A) ≠ 1
Îx ≠ x(k) ÎA Æ
Îx ≠ x(k≠1) ÎA
K (A) + 1
3
4k
K (A) ≠ 1
Îx ≠ x(k) ÎA Æ
Îx ≠ x(0) ÎA
K (A) + 1
dove K(A) è il numero di condizionamento di A relativo alla norma ηÎA .
Osservazione 2.9. Se K (A) ∫ 1
∆
K(A)≠1
K(A)+1
ƒ 1 e quindi si ha una convergenza molto lenta.
Teorema 5. [Velocità di convergenza metodo gradiente coniugato]
’ x(0) œ Rn p(0) œ Rn :
2ck
Îx ≠ x(k) Î Æ
Îx ≠ x(0) ÎA
1 + c2k

K (A) ≠ 1
dove c = 
K (A) + 1

Osservazione 2.10. Per la presenza del termine K (A) la situazione migliora rispetto al caso del metodo del
gradiente, ma per numeri molto grandi la convergenza è ancora lenta.
2.4
Criteri di arresto
Si considerano principalmente due criteri di arresto:
1. Sul residuo normalizzato: si sceglie una tolleranza Á > 0 e ci si arresta al primo k = kmin tale per cui:
1
Îr(kmin ) Î
ÆÁ
ÎbÎ
r(k) = b ≠ Ax(k)
2
Facendo gli stessi conti effettuati per il caso dei metodi diretti (Eq: (4)) si ottiene:
Îx ≠ x(kmin )
Îr(kmin ) Î
Æ K (A)
Æ ÁK (A)
ÎxÎ
ÎbÎ
Osservazione 2.11. Siccome di solito il numero di condizionamento K (A) è un numero molto grande, per
avere una buona precisione è necessario scegliere un numero Á molto piccolo. Di conseguenza il numero di
condizionamento influenza anche il numero di iterazioni (quello minimo per avere una soluzione con una
precisione accettabile).
2. Sull’incremento: si considera la differenza tra una iterazione e la successiva:
” (k) = x(k+1) ≠ x(k)
Quindi, fissata una tolleranza Á > 0, ci si arresta, al primo k = kmin tale per cui:
Δ (kmin ) Î Æ ÁÎbÎ
2.5
Precondizionamento
L’idea è quella di ridurre il numero di condizionalmento della matrice A in modo tale che la velocità di converganza
di un metodo iterativo, come ad es. quelli del gradiente e gradiente coniugato (che sono lenti quando il numero di
condizionamento è grande) convergano più rapidamente.
20
Algoritmo 4. Precondizionatori diagonali: in generale la scelta di P come la diagonale di A si può rivelare efficace
nel caso in cui A sia una matrice simmetrica definita positiva. Nel caso non simmetrico si può prendere P con
elementi dati da:
Q
R 21
n
ÿ
D = dii = a
a2ij b
j=1
In generale la scelta di P come la diagonale di A si può rivelare efficace nel caso in cui A sia una matrice
simmetrica definita positiva.
Matlab 3. [Metodo del gradiente precondizionato]
X=pcg (A, b ) ;
Anzichè risolvere il sistema Ax = b si può pensare di risolvere:
P ≠1 Ax = P ≠1 b
(la moltiplicazione avviene ad entrambi i membri per preservare la simmetria di A e il fatto che sia definita
positiva) dove P è una matrice abbastanza vicina ad A :
!
"
(Matrice identità) ∆ K P ≠1 A ¥ 1
!
"
!
"
Osservazione 2.12. Se si prendesse P = A si avrebbe K P ≠1 A = K A≠1 A = K (I) = 1 . Tuttavia il calcolo
della matrice inversa comporta un grande carico computazionale (infatti calolare A≠1 avrebbe la stessa difficioltà
di risolvere il sistema Ax = b!), di conseguenza
è necessario trovare una matrice P che sia facile da invertire da un
"
lato, e che tale da rendere K P ≠1 A molto piccolo.
t.c.
P ¥ A =∆ P ≠1 A ¥ I
Supponendo che P sia una matrice simmetrica e definita positiva, allora:
1
1
1
÷ P 2 t.c. P 2 P 2 = P
Una matrice simmetrica e definita positiva, significa che è diagonalizzabile con tutti gli autovalori positivi e può
quindi essere scritta come:
P = V DV T
V æ Matrice che ha per colonne gli autovettori normalizzati
D æ Matrice diagonale con gli autovalori sulla diagonale principale
Di coseguenza risulta essere:
1
1
P 2 = V D2V T
1
dove D 2 è la matrice diagonale che sulla diagonale principale le radici quadrate degli autovalori
possibile perchè A è definita positiva).
Infatti:
1
21
2
1
1
1
1
ú
P 2P 2 = V D2V T
V D 2 V T = V DV T = P
úæ
Quindi si può scrivere:
Poichè D è diagonale e vengono moltiplicati
solo gli elementi sulla diagonale
V T V = I æ Perchè V è una matrice ortogonale
x
Ax = b ≈∆ P
1
si trova y e poi si calcola xcome x = P ≠ 2 y
≠ 12
˙ ˝¸ ˚
1
1
A P≠2 y = P≠2 b
21
Ô
⁄i (ciò è
Osservazione 2.13.
1
1
P ≠ 2 AP ≠ 2 æ Simmetrica e definita positiva
1 1 2≠1 1
2≠1 1
2
1
1
1
ú
P≠2 = P 2
= V D2V T
= V D≠ 2 V T
1
l’uguaglianza * è possibile grazie alle proprietà della matrice trasposta (Prop: ??). D≠ 2 è una matrice diagonale
che sulla diagonale principale ha i reciproci delle radici degli autovalori.
• Per verificare la simmetria:
1
1
1
P ≠ 2 AP ≠ 2
2T
1
2T 1
2T
1
1
= P≠2
A P≠2
Ricordando che per applicare il metodo del gradiente A deve essere simmetrica definita positiva, quindi AT = A
Ricordando che:
1
2
1
1
P ≠ 2 = V D≠ 2 V T
• Per verificare il definita positiva:
1
∆
1
P≠2
2T
1
2T
1
1
1
= V D≠ 2 V T
= V D≠ 2 V T = P ≠ 2
1
2T
1
1
1
1
∆ P ≠ 2 AP ≠ 2
= P ≠ 2 AP ≠ 2 = AP
xT
x
˙ ˝¸ ˚ ˙ ˝¸ ˚
1
1
yT AP y = yT P ≠ 2 A P ≠ 2 y = xT Ax > 0
tranne per x = 0 … y = 0
Osservazione 2.14. Si può quindi applicare il metodo del gradiente e il metodo del gradiente coniugato a
1
1
1
1
P ≠ 2 AP ≠ 2 y = P ≠ 2 b , con x = P ≠ 2 y
1
2
1
Esiste una vasta letteratura sulle possibili P facili da invertire e tali che K P ≠ 2 A ¥ 1 , un esempio è scegliere
P come matrice diagonale avente gli elementi diagonali di A sulla diagonale:
n
{aii }i=1
22
Scarica