METODI ITERATIVI PER SISTEMI LINEARI LUCIA GASTALDI 1. Metodi iterativi classici Sia A R n n una matrice non singolare e sia b R n. Consideriamo il sistema (1) Ax = b. Un metodo iterativo per la soluzione del sistema lineare (1) consiste nella costruzione di una successione di vettori x (k) R n convergenti alla soluzione x del sistema lineare, cioè tali che lim k x(k) = x. Per realizzare questo processo si può seguire il seguente procedimento. decomposizione o splitting della matrice del tipo: (2) A = P N, Si considera una essendo P ed N due matrici in modo che P sia non singolare. Il sistema (1) si può scrivere nella forma P x = Nx + b ossia x = P 1 Nx + P 1 b. Dato un vettore iniziale x (0), si genera una successione di vettori ricorsivamente mediante (3) x (k+1) = Bx (k) + g dove B = P 1 N e g = P 1 b, e B prende il nome di matrice di iterazione. Per studiare la convergenza, calcoliamo l errore e (k) = x x (k). Passando alle norme si ottiene: x = Bx + g x (k+1) = Bx (k) + g e (k+1) = Be (k) e (k+1) = Be (k) B e (k) B k+1 e (0), quindi, se B < 1, allora il metodo iterativo è convergente per ogni scelta del dato iniziale x (0). Più precisamente si può dimostrare il seguente teorema: Teorema 1. Condizione necessaria e sufficiente affinché un metodo iterativo della forma (3) sia convergente, è che il raggio spettrale della matrice di iterazione sia strettamente minore di 1, ossia ρ(b) < 1. 1
2 LUCIA GASTALDI Vediamo ora due esempi classici di metodi iterativi, ottenuti dallo splitting della matrice (2). Scriviamo la matrice A come somma della sua diagonale, della sua parte triangolare inferiore stretta e della sua parte superiore stretta: essendo D = L = U = A = D L U a 11 0 0 0 a 22 0 0 0 a nn 0 0 0 a 21 0 0 a n1 a nn 1 0 0 a 12 a 1n 0 0 a n 1n 0 0 0 Il metodo di Jacobi si ottiene ponendo P = D in (2), di conseguenza le componenti x (k+1) i si ottengono mediante la seguente relazione: x (k+1) i = 1 a ii ( b i n j=1,j i a ij x (k) j ),,., i = 1,..., n. Si osserva che per calcolare una componente del vettore x (k+1) servono tutte le componenti del vettore x (k) all iterazione precedente. La matrice di iterazione in questo caso è data da B J = D 1 (L + U). Proposizione 2. Se A è una matrice a predominanza diagonale stretta per righe, cioè vale che n a ii > a ij i = 1,..., n, allora il metodo di Jacobi converge. j=1,j i Poniamo ora P = D L in (2). In questo caso si ottiene il metodo di Gauss Seidel la cui matrice di iterazione è B GS = (P L) 1 U e le componenti x (k+1) i si ottengono nel modo seguente: ( ) x (k+1) i = 1 i 1 n b i a ij x (k+1) j a ij x (k) j, i = 1,... n. a ii j=1 j=i+1 Si nota che in questo caso per calcolare la componente i-esima del vettore x (k+1) si usano le prime i 1 componenti del vettore x (k+1) già calcolate e le componenti di indice maggiore di i del vettore x (k). In questo modo ci si aspetta una convergenza più rapida.
3 Figure 1. Gli autovalori di B α in valore assoluto al variare di α. Raggio spettrale della matrice di iterazione di Richardson stazionario 2 1 x*lmax 1.8 1 x*li raggio spettrale 1.6 1.4 1.2 1 0.8 1 x*lmin 2 / lmax (lmax lmin) / (lmax+lmin) 0.6 0.4 0.2 0 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 alpha Anche nel caso del metodo di Gauss Seidel si possono enunciare dei risultati di convergenza per alcune classi di matrici. Proposizione 3. Se A è una matrice a predominanza diagonale stretta per righe oppure se A è una matrice simmetrica e definita positiva allora il metodo di Gauss-Seidel converge. 2. Il metodo di Richardson Consideriamo un metodo iterativo (3) ottenuto a partire da uno splitting della matrice in A = P N. Si ricava facilmente che N = P A e sostituendo questa relazione in (3) si ottiene x (k+1) = P 1 Nx (k) + P 1 b = P 1 (P A)x (k) + P 1 b = x (k) + P 1 (b Ax (k) ). Data l approssimazione x (k) della soluzione del sistema lineare (1), si dice residuo il vettore definito da: (4) r (k) = b Ax (k). Quindi i metodi iterativi che si ottengono da uno splitting della matrice possono essere considerati come metodi di correzione del residuo ponendo x (k+1) = x (k) + P 1 r (k). Sia α > 0 un numero reale e positivo, modifichiamo lo schema precedente come segue: (5) x (k+1) = x (k) + αp 1 r (k). Il metodo che abbiamo ottenuto prende il nome di metodo di Richardson stazionario e le sue proprietà di convergenza dipendono dalla scelta del parametro α. La matrice P viene anche detta matrice di precondizionamento. Il metodo (5) si riscrive facilmente nella forma (3) nel modo seguente: x (k+1) = x (k) + αp 1 r (k) = x (k) + αp 1 (b Ax (k) ) = (I αp 1 A)x (k) + αp 1 b e quindi la matrice di iterazione è data da B α = I αp 1 A. Calcoliamo il raggio spettrale della matrice B α al variare di α > 0. Supponiamo che P sia una matrice non singolare e che la matrice P 1 A sia simmetrica e definita positiva. Siano λ i
4 LUCIA GASTALDI e u i per i = 1,..., n gli autovalori e gli autovettori, rispettivamente, della matrice P 1 A e indichiamo con λ min e λ max rispettivamente il più piccolo e il più grande autovalore, quindi si ha P 1 Au i = λ i u i per i = 1,..., n, 0 < λ min λ i λ max per i = 1,..., n. Gli autovalori ed autovettori di B α si ottengono dalla seguente identità: Con un po di conti si ricava B α x = (I αp 1 A)x = µx. P 1 Ax = 1 µ α x quindi (µ, x) è una coppia autovalore/autovettore di B α se ((1 µ)/α, x) è una coppia autovalore/autovettore di P 1 A. Abbiamo quindi ricavato che gli autovettori di B α sono uguali agli autovettori di P 1 A, mentre per gli autovalori vale la seguente relazione: µ i = 1 αλ i. Il raggio spettrale della matrice B α è dato quindi da ρ(b α ) = max 1 i n 1 αλ i. In Figura 2 sono riportati i grafici delle funzioni 1 αλ max, 1 αλ min e 1 αλ i al variare di α (nella figura si è usata la notazione lmin al posto di λ min, li per λ i e lmax per λ max ). Quindi per 0 < α < 2/λ max il raggio spettrale ρ(b α ) resta strettamente minore di 1 ed in questo intervallo si ha la convergenza del metodo di Richardson (5). Il valore ottimale di α si ottiene per α ott = argminρ(b α ). Dal grafico si vede che α ott è il valore per cui vale cioè (6) α ott = 1 αλ min = 1 αλ max in corrispondenza ad esso il raggio spettrale vale: 2 λ max + λ min ; (7) ρ(b αott ) = λ max λ min λ max + λ min = K 2(P 1 A) 1 K 2 (P 1 A) + 1, essendo K 2 (P 1 A) il numero di condizionamento della matrice P 1 A nella norma di matrice associata alla norma euclidea di vettore. In Figura 2 sono riportati l intervallo di convergenza e i valori ottimali di α e ρ(b α ). Abbiamo quindi dimostrato la seguente proposizione: Proposizione 4. Sia P una matrice non singolare e P 1 A una matrice simmetrica e definita positiva. Allora il metodo di Richardson stazionario converge per 0 < α < 2/λ max, essendo λ max il massimo autovalore della matrice P 1 A. Inoltre ρ(b α ) è minimo per α = α ott essendo α ott dato da (6) e il valore corrispondente di ρ(b α ) definito in (7).
Dalla relazione (7) si ricava che la velocità di convergenza è legata al fatto che la matrice P 1 A sia ben condizionata. Quindi la scelta della matrice di precondizionamento P è di fondamentale importanza; la scelta deve essere fatta in modo tale che la risoluzione di un sistema lineare con matrice dei coefficienti data da P sia di basso costo. Una forma più generale di (5) è quella in cui si determina il parametro α ad ogni iterazione, dando luogo al seguente metodo di Richardson non stazionario (8) x (k+1) = x (k) + α k P 1 r (k). Il problema adesso è quello della determinazione del parametro α k. Supponiamo d ora in avanti che la matrice A sia simmetrica e definita positiva. Possiamo quindi introdurre una norma di vettore detta norma dell energia nella forma seguente (9) x A = x T Ax. Supponiamo di aver calcolato il valore di x (k) all iterata k-esima del metodo (8). Poniamo per semplicità z (k) = P 1 r (k) e al variare di α consideriamo il vettore x α = x (k) + αz (k). Si noti che al variare di α il punto x α si muove lungo la retta passante per x (k) e parallela alla direzione di z (k). Scegliamo quindi α k in modo da rendere minima la distanza di x α dalla soluzione x del sistema (1) misurata nella norma dell energia (9). Calcoliamo quindi x x α 2 A e otteniamo: x x α 2 A = (x x (k) αz (k) ) T A(x x (k) αz (k) ) = (x x (k) ) T A(x x (k) ) αz (k)t A(x x (k) ) (x x (k) ) T A(αz (k) ) + α 2 z (k)t Az (k) = α 2 z (k)t Az (k) 2αz (k)t A(x x (k) ) + (x x (k) ) T A(x x (k) ) = α 2 z (k)t Az (k) 2αz (k)t r (k) + (x x (k) ) T A(x x (k) ), dove si sono usati i seguenti fatti: la matrice A è simmetrica e quindi αz (k)t A(x x (k) ) = (x x (k) ) T A(αz (k) ); x è la soluzione del sistema lineare di partenza per cui Ax = b; quindi A(x x (k) ) = b Ax (k) = r (k). Poiché x x α 2 A è una parabola rispetto alla variabile α, il minimo si trova per α k = z(k)t r (k) z (k)t Az. (k) Con questa scelta del parametro il metodo (8) prende il nome di metodo del gradiente precondizionato. Descriviamo i passi principali dell algoritmo corrispondente. Algoritmo: metodo del gradiente precondizionato. 1. Scelgo x (0). 2. Calcolo r (0) = b Ax (0). 3. Calcolo la soluzione z (0) di P z (0) = r (0). 4. Per ogni iterata eseguo le seguenti operazioni: 4.1 Calcolo α k = z(k)t r (k) z (k)t Az. (k) 5
6 LUCIA GASTALDI Figure 2. Risoluzione mediante il metodo del gradiente 100 90 80 70 60 50 40 30 20 10 0 0 10 20 30 40 50 60 70 80 90 100 4.2 x (k+1) = x (k) + α k z (k). 4.3 r (k+1) = r (k) α k Az (k). 4.4 Calcolo la soluzione z (k+1) di P z (k+1) = r (k+1). 5. Verifico il test d arresto: se il test d arresto è verificato, mi fermo; se il test d arresto non è vericato torno al punto 4. Si può dimostrare che nel caso del metodo (8) ora descritto il raggio spettrale della matrice di iterazione B αk tende a ρ(b αott ) per k che tende all infinito. Quindi il metodo di Richardson non stazionario è da preferire a quello stazionario non richiedendo di conoscere gli autovalori massimo e minimo della matrice P 1 A. Osserviamo però che la convergenza può essere molto lenta come illustrato nel seguente esempio in cui si è scelta come matrice di precondizionamento P = I. Il metodo prende in questo caso il nome di metodo del gradiente o di massima discesa. Si considera il sistema lineare (1) con i seguenti dati: A = ( 50.5000 49.5000 49.5000 50.5000 ) ( 48.5000, b = 51.5000 ) ( 1, x = 2 ) ( 70.0036, x (0) = 71.4178 Nella Figura 2 sono riportati i primi 50 passi del metodo del gradiente applicato al sistema scritto sopra. Come si può notare la convergenza è molto lenta, in questo caso si ha K 2 (A) = 100. Si osserva anche che le direzioni che vengono scelte sono a due a due parallele tra di loro. Per capire meglio il comportamento della successione dell esempio introduciamo un interpretazione diversa del metodo del gradiente. ). 3. Metodo del gradiente e del gradiente coniugato Sia A R n n una matrice simmetrica e definita positiva (cioè A T = A e x T Ax > 0 per ogni x R n e x 0).
Sia x la soluzione del sistema (1) e y una sua approssimazione. La distanza di y da x nella norma (9), associata alla matrice A, si calcola come segue: 7 (10) x y 2 A = (x y) T A(x y) = x T Ax y T Ax x T Ay + y T Ay = y T Ay 2y T Ax + x T Ax = y T Ay 2y T b + x T Ax. Per ottenere (10) si è usato il fatto che la matrice è simmetrica e che x è la soluzione di (1). Si osserva inoltre che la distanza x y A come funzione di y è una funzione quadratica che ha un unico minimo assoluto per y = x. Infine notiamo che il punto di minimo non cambia se alla funzione precedente si somma una costante. Introduciamo la funzione quadratica ϕ : R n R data da (11) ϕ(y) = y T Ay 2y T b. Si calcolano allora facilmente il gradiente e la matrice hessiana di ϕ: (12) ϕ(y) = 2(Ay b), Hϕ(y) = 2A. Chiamato r(y) = b Ay il residuo, si ha che r(y) = ϕ(y)/2. Osserviamo che vale la seguente relazione: x y 2 A = ϕ(y) + x T Ax, quindi y è minimo per x y 2 A se e solo se è soluzione del seguente problema: PROBLEMA: cerchiamo x tale che ϕ(x) = min x R n ϕ(x). Condizione necessaria affinchè x sia soluzione di questo problema è che x sia un punto stazionario per ϕ cioè (13) ϕ(x) = 2(Ax b) = 0. Quindi se x è punto di minimo per ϕ allora è anche soluzione del sistema lineare Ax = b. Inoltre poiché la matrice A è definita positiva x è l unico punto di minimo per ϕ. Il problema di minimo e il sistema lineare Ax = b sono quindi equivalenti. Supponiamo di avere calcolato un approssimazione x (k) di x. Indichiamo con r (k) il residuo calcolato in x (k) : r (k) = r(x (k) ). Scegliamo come direzione di discesa r (k). Allora il punto di minimo di ϕ lungo tale direzione di discesa si trova come segue: i punti della retta che passa per x (k) ed è parallela ad r (k) sono individuati attraverso l espressione parametrica x (k) + αr (k), in particolare quelli nella direzione di discesa saranno individuati da α > 0. La restrizione di ϕ lungo questa semiretta è data da: (14) ϕ(x (k) + αr (k) ) = (x (k) + αr (k) ) T A(x (k) + αr (k) ) 2(x (k) + αr (k) ) T b = = x (k)t Ax (k) + αr (k)t Ax (k) + αx (k)t Ar (k) + +α 2 r (k)t Ar (k) 2b T x (k) 2αb T r (k) = = x (k)t Ax (k) 2b T x (k) + 2α(r (k)t Ax (k) r (k)t b) + α 2 r (k)t Ar (k) = = ϕ(x (k) ) 2αr (k)t r (k) + α 2 r (k)t Ar (k).
8 LUCIA GASTALDI La funzione ϕ(x (k) + αr (k) ) è una parabola rispetto alla variabile α, il suo punto di minimo si trova nel vertice per (15) α k = r(k)t r (k) r (k)t Ar (k). Metodo del gradiente o di steepest descent 1. Dato x 0 ; 2. calcola r 0 = b Ax 0 ; 3. per k = 0, 1,..., M (M numero massimo di iterazioni) 3.1 α k = r(k)t r (k) r (k)t Ar (k) ; 3.2 x (k+1) = x (k) + α k r (k) ; 3.3 r (k+1) = r (k) α k Ar (k) ; 3.4 test d arresto: se è verificato x (k+1) è la soluzione; altrimenti torno al punto 3. NOTA BENE: con la scelta di α k effettuata si ha che r (k+1)t r (k) = 0. La verifica è immediata, infatti (16) r (k+1)t r (k) = r (k)t r (k) α k r (k)t Ar (k) = 0 per definizione di α k. Valutiamo l errore usando la norma definita in (9), cercando di ottenere una relazione ricorsiva che leghi l errore all iterata k-esima con quello precedente, si ha: (17) x (k+1) x 2 A = (x(k+1) x ) T A(x (k+1) x ) = = (x (k) + α k r (k) x ) T A(x (k) + α k r (k) x ) = = (x (k) x ) T A(x (k) x ) + 2α k r (k)t A(x (k) x ) + α 2 r (k)t Ar (k) = = x (k) x 2 A + 2α kr (k)t ( r (k) ) + α 2 r (k)t Ar (k) = ( ) 2 = x (k) x 2 A 2 r(k)t r (k) r (k)t Ar (k) r(k)t r (k) r (k)t r (k) + r (k)t Ar (k) = r (k)t Ar (k) Osserviamo che (18) = x (k) x 2 A (r(k)t r (k) ) 2 r (k)t Ax (k). x (k) x 2 A = (x(k) x ) T AA 1 (Ax (k) Ax ) = = (Ax (k) Ax ) T A 1 (Ax (k) Ax ) = r (k)t A 1 r (k) e quindi ricaviamo da (17) ( ) (19) x (k+1) x 2 A = x (k) x 2 (r (k)t r (k) ) 2 A 1. r (k)t Ar (k) r (k)t A 1 r (k) La quantità (r (k)t r (k) ) 2 (20) ρ k = 1 r (k)t Ar (k) r (k)t A 1 r (k)
si chiama fattore di riduzione. Stimando la frazione mediante la disuguaglianza di Kantorovich: si ottiene (r (k)t r (k) ) 2 r (k)t Ar (k) r (k)t A 1 r (k) 4λ maxλ min (λ max + λ min ) 2 (21) x (k+1) x A K 2(A) 1 K 2 (A) + 1 x(k) x A, essendo K 2 (A) il numero di condizionamento della matrice A. Si ricorda che per matrici simmetriche e definite positive si ha K 2 (A) = λ max /λ min, dove λ max e λ min sono rispettivamente l autovalore massimo e minimo di A. Se K 2 (A) è molto grande, il fattore di riduzione si avvicina ad 1 ed il metodo può risultare molto lento come succede nell esempio riportato nella Figura 2. Nell esempio, il comportamento delle iterate illustra chiaramente che nel metodo del gradiente le direzioni lungo le quali si minimizza possono essere linearmente dipendenti. In particolare, nel caso bidimensionale considerato, si ha che i residui sono a passi alterni paralleli fra di loro. L idea è quindi quella di modificare l algoritmo del gradiente in modo da minimizzare lungo direzioni di discesa che risultino linearmente indipendenti. Il metodo di ricerca lineare dei minimi si può riscrivere quindi come segue: Metodo di ricerca lineare 1. Dato x 0 ; 2. calcolo r 0 = b Ax 0 ; 3. scelgo s 0 direzione di discesa 4. per k = 0, 1,..., M (M numero massimo di iterazioni) 3.1 α k = s(k)t r (k) s (k)t As (k) ; 3.2 x (k+1) = x (k) + α k s (k) ; 3.3 r (k+1) = r (k) α k As (k) ; 3.4 scelgo nuova direzione di discesa s (k+1) ; 3.5 test d arresto: se è verificato x (k+1) è la soluzione; altrimenti torno al punto 3. Si tratta quindi di trovare un modo per generare direzioni di discesa che siano linearmente indipendenti. Definizione 1. Un punto x (k) si dice ottimale rispetto ad una direzione p 0 se ϕ(x (k) ) ϕ(x (k) λp), λ R. Se x (k) è ottimale rispetto a tutte le direzioni di uno spazio vettoriale V, diremo che x (k) è ottimale rispetto a V. Dalla definizione 1 segue che se x (k) è ottimale rispetto a p allora vale r (k)t p = 0. Inoltre se x (k) è ottimale rispetto ad uno spazio vettoriale V si ha r (k)t v = 0 per ogni v V. Dato x (0), calcoliamo r (0) e minimizziamo la funzione quadratica lungo s (0) = r (0) ; otteniamo così (22) x (1) = x (0) + α 0 s (0) e r (1) = r (0) α 0 As (0) 9
10 LUCIA GASTALDI in modo tale che r (1)T s (0) = 0. Scegliamo ora s (1) e calcoliamo x (2) minimizzando ϕ lungo x ( 1) + αs (1), otteniamo: x (2) = x (1) + α 1 s (1), r (2) = r (1) α 1 As (1), con r (2)T s (1) = 0. Imponiamo che x (2) sia ottimale anche rispetto a s (0) cioè che r (2)T s (0) = 0; ricordando che r (1)T s (0) = 0, si ha: r (2)T s (0) = (r (1) α 1 As (1) ) T s (0) = r (1)T s (0) α 1 s (1)T As (0) = α 1 s (1)T As (0). Quindi per conservare la condizione di ottimalità tra un iterata e l altra deve essere s (1)T As (0) = 0. Diciamo che i vettori s (i) per i = 1,..., l (l < n) sono A-coniugati se vale che (23) s (i)t As (j) = 0 i, j = 1,..., l tali che i j. Quindi se le direzioni di discesa nel metodo della ricerca lineare sono tra loro A-coniugate, ad ogni iterazione si ottiene un approssimazione x (k) che è ottimale rispetto a tutte le direzioni di discesa usate. Supponiamo di aver calcolato la iterata x (k+1), dobbiamo ora costruire la direzione s (k+1) che serve per calcolare l iterata successiva. Siccome x (k+1) è ottimale rispetto a tutte le direzioni s (0),, s (k) finora usate, si ha che r (k+1)t s (i) = 0 per i = 0,, k. Quindi r (k+1) è linearmente indipendente a tutte le direzioni s (i). Poniamo s (k+1) = r (k+1) + β k s (k) e determiniamo β k in modo che sia A-coniugata con s (k) : s (k+1)t As (k) = r (k+1)t s (k) + β k s (k)t As (k) = 0 β k = r(k+1)t s (k) s (k)t As (k). Si dimostra che s (k+1) così definita è A-coniugata anche con s (i) per i = 0,, k 1. Il metodo che si ottiene scegliendo come s (0) = r (0) e direzioni di discesa A-coniugate prende il nome di metodo del gradiente coniugato. Osserviamo che la scelta delle direzioni di discesa A-coniugate ha un altra conseguenza importante, precisamente per ogni k vale r (k+1)t s (i) = 0 per i = 0, 1,..., k. Questo fatto implica che r (n)t s (i) = 0 per i = 0,..., n 1. Poichè le direzioni s (i) sono A-coniugate e quindi linearmente indipendenti, si ha che r (n) = 0. Ossia dopo n iterazioni del metodo del gradiente coniugato x (n) = x essendo x la soluzione del problema di minimo. Metodo del gradiente coniugato 1. Dato x 0 ; 2. calcola r 0 = b Ax 0 ; 3. poni s 0 = r 0 ; 4. per k = 0, 1,..., n
4.1 α k = r(k)t r (k) s (k)t As ; (k) 4.2 x (k+1) = x (k) + α k s (k) ; 4.3 r (k+1) = r (k) α k As (k) ; 4.4 β k = r(k+1)t r (k+1) ; r (k)t r (k) 4.5 s (k+1) = r (k+1) + β k s (k). Il costo dell algoritmo è 1 prodotto matrice per vettore, 2 prodotti scalari e 3 combinazioni lineari di due vettori. Ad ogni iterata l errore si riduce secondo la seguente legge: ( k (24) x (k) K2 (A) 1 x A 2 x 0 x A. K2 (A) + 1) Quindi il fattore di riduzione è più piccolo di quello del metodo di steepest descent, si confronti con (21). Il metodo risulta abbastanza efficiente se usato in maniera iterativa, specialmente nel caso in cui il problema è di grande dimensione (n 10000) e la matrice A è sparsa. Calcoliamo ad esempio quante iterazioni occorrono per ottenere una soluzione con un errore dell ordine di 10 m. Si deve quindi trovare k tale che x (k) x A x A 10 m. Poichè dalla relazione ricorsiva per l errore (24) si ha x (k) x A x A 2 ( ) k K2 (A) 1 x0 x A K2 (A) + 1 x A si ottiene ( ) x 0 x K2 A k m + log 10 (A). x A Il numero di iterazioni diventa quindi proporzionale alla radice quadrata del condizionamento di A. Per migliorare la velocità di convergenza e quindi ridurre il numero di iterazioni si può utilizzare anche in questo caso un precondizionamento della matrice A. 4. Precondizionamento Data una matrice non singolare A, dicesi matrice di precondizionamento una matrice P non singolare tale che la matrice P 1 A ha un numero di condizionamento più basso di quello di A ossia se vale K(P 1 A) << K(A). Se si conosce una matrice di prcondizionamento P allora si vuole deve risolvere il sistema equivalente P 1 Ax = P 1 b. Il problema è quello di costruire una matrice P che sia invertibile e tale che la risoluzione del sistema con matrice dei coefficienti P sia di basso e che non distrugga le proprietà di A. Ad esempio se A è un matrice simmetrica e definita positiva si vorrebbe usare ancora il metodo del gradiente coniugato per risolvere il sistema P 1 Ax = P 1 b. Purtroppo la matrice P 1 A non risulta simmetrica e definita positiva neanche se lo sono sia A che P, pertanto occorre affrontare il problema in modo un po diverso. Abbiamo visto che il metodo del gradiente coniugato 11
12 LUCIA GASTALDI si applica per la ricerca del minimo del funzionale quadratico ϕ definito in (11). Il metodo diventa molto lento quando K 2 (A) = λ max /λ min >> 1. In due dimensioni gli autovalori della matrice sono associati ai semiassi delle ellissi che rappresentano le curve di livello della funzione quadratica. Se λ max >> λ min vuol dire che le ellissi sono molto schiacciate lungo una direzione. L idea è quindi quella di cercare di operare un cambiamento di variabili in modo tale che rispetto al nuovo sistema di riferimento le curve di livello siano il più vicino possibile a dei cerchi. Introduciamo quindi una matrice non singolare E e poniamo ỹ = Ey. Sostituendo y = E 1 ỹ in (11), otteniamo il seguente funzionale quadratico rispetto alla nuova variabile ỹ (25) ϕ(ỹ) = (E 1 ỹ) T A(E 1 ỹ) 2(E 1 ỹ) T b = ỹe T AE 1 ỹ 2ỹ T E T b = ỹãỹ 2ỹT b, essendo à = E T AE 1, b = E T b. Il funzionale ϕ gode ancora delle stesse proprietà soddisfatte da ϕ essendo anche à una matrice simmetrica e definita positiva. Inoltre vale E 1 ÃE = E 1 E T AE 1 E = E 1 E T A = (E T E) 1 = P 1 A avendo posto P = E T E. Quindi à è simile ad una matrice P 1 A che rappresenta la matrice precondizionata. Calcoliamo ora la norma dell energia associata a à per ỹ = Ey: ỹ 2 à = ỹt Ãỹ = ỹ T E T AE 1 ỹ = y T Ay = y 2 A. Ne consegue che applicando il metodo del gradiente coniugato al funzionale quadratico (25) si ottiene il seguente comportamento dell errore: ( k x (k) x à K2 (P 2 1 A) 1 x x à K2 (P 1 A) + 1) (0) x à x à essendo x = Ex il minimo del funzionale ϕ. Ritornando al sistema di riferimento iniziale si ha quindi ( ) k x (k) x A K2 (P 2 1 A) 1 x (0) x A. x A K2 (P 1 A) + 1 x A L algoritmo del metodo del gradiente coniugato precondizionato si scrive nel modo seguente: Metodo del gradiente coniugato precondizionato 1. Dato x 0 ; 2. calcola r 0 = b Ax 0 ; 3. risolvi P z 0 = r 0 ; 4. poni s 0 = z 0 ; 5. per k = 0, 1,..., n 4.1 α k = z(k)t r (k) s (k)t As (k) ; 4.2 x (k+1) = x (k) + α k s (k) ; 4.3 r (k+1) = r (k) α k As (k) ;
4.4 risolvi P z (k+1) = r (k+1) ; 4.5 β k = r(k+1)t z (k+1) r (k)t z (k) ; 4.6 s (k+1) = z (k+1) + β k s (k). Il costo dell algoritmo è 2 prodotti matrice per vettore, 2 prodotti scalari e 3 combinazioni lineari di due vettori. Si noti che per motivi di efficienza la scelta di P è fatta in modo tale che il costo della risoluzione del sistema con matrice P è uguale al costo di una moltiplicazione matrice per vettore. Dipartimento di Matematica, Università di Brescia, Italy E-mail address: gastaldi@ing.unibs.it URL: http://dm.ing.unibs.it/gastaldi/ 13