Metodi Matematici per l’Ingegneria – Prof. M. Caprili CAPITOLO 2 METODI DIRETTI E ITERATIVI PER LA RISOLUZIONE DI SISTEMI LINEARI 39 Metodi Matematici per l’Ingegneria – Prof. M. Caprili METODI DIRETTI PER LA RISOLUZIONE DI UN SISTEMA LINEARE Sia data una matrice ACnn , e un vettore bCn , il problema consiste nella risoluzione del sistema lineare (1) Ax=b con detA0. La classe dei metodi di risoluzione così detti diretti, se non ci fossero errori di arrotondamento nei calcoli, con un numero finito di operazioni, dipendenti dall’algoritmo e dalla dimensione del sistema, fornirebbero la soluzione esatta. Purtroppo, qualunque metodo, non si può mai prescindere da gli errori algoritmici ed eventualmente anche da gli errori inerenti. Metodo di Gauss e fattorizzazione LR Illustriamo il metodo considerando un sistema 33. Consideriamo dapprima il caso in cui i minori di testa siano non nulli, cioè a 11 0 (2) a 11 a 12 a 21 a 22 a 11 a 12 a 13 a 21 a 22 a 23 0 a 31 a 32 a 33 0 Il sistema (1) in forma esplicita si scrive a 11 x 1 a 12 x 2 a 13 x 3 b 1 (3) a 21 x 1 a 22 x 2 a 23 x 3 b 2 a 31 x 1 a 32 x 2 a 33 x 3 b 3 Primo passo: rendere nulli a21 e a31 , sostituendo x1 ricavato dalla prima equazione nelle equazioni seconda e terza. Ciò si ottiene premoltiplicando il sistema (3) per la matrice non degenere (4) 1 a M1 a 1121 a 31 a 11 0 0 1 0 0 1 Così che, il sistema (3), diviene: a 11 x 1 a 12 x 2 a 13 x 3 b 1 (5) a (221) x 2 a (231) x 3 b (21) a (321) x 2 a (331) x 3 b (31) 40 Metodi Matematici per l’Ingegneria – Prof. M. Caprili Secondo passo: rendere nullo l’elemento a32(1) del nuovo sistema sostituendo nella terza equazione x2 ricavato dalla seconda equazione. Ciò si ottiene premoltiplicando il sistema per la matrice non singolare 1 0 0 M 2 0 1 0 (6) 0 a (321) 1 ( 1) a 22 Il sistema (4) , equivalente a quello dato a meno degli errori di arrotondamento, diviene: a 11 x1 a 12 x 2 a 13 x 3 b1 a (221) x 2 a (231) x 3 b (21) (7) a (332) x 3 b (32 ) Si osserva che detA=a11 a22(1) a33(2) e il sistema (7) in forma matriciale, si scrive (8) Rx=c con R matrice triangolare superiore che vale R=M2M1A . e c = M2M1b. Indicando con L1 M 1-1 e L 2 M -12 , ossia (9) 1 L1 aa1211 aa3 1 11 0 0 1 0 0 1 (10) 1 L 2 0 0 0 1 ( 1) a 32 ( 1) a 22 0 0 1 si trova, nelle ipotesi indicate dalla (2), la fattorizzazione della matrice A=LR, con L= L1L2 , che vale (11) 1 a L = a 1121 a a 1131 0 1 (1) a 32 (1) a 22 0 0 1 Tale fattorizzazione non sempre esiste ma se esiste è unica. Terzo passo: il sistema (8) si risolve facilmente procedendo a ritroso 41 Metodi Matematici per l’Ingegneria – Prof. M. Caprili b (32 ) x 3 (2) a 33 x 2 [b (12) (1) 2 b (32 ) 1 a ( ( 2 ) )] (1) a 33 a 22 (1) 23 x 1 [ b 1 a 12 ( b (21) a (231) b (32 ) b (32 ) 1 1 ) a (2) (1) 13 (2) ] a 33 a 22 a 33 a 11 Il numero delle operazioni (escluse addizioni e sottrazioni), cioè il costo computazionale, se il sistema ha n equazioni, è costituito da n 1 (n k) (13) n 1 2 k 1 k k 1 per la riduzione di A a matrice triangolare R, da n 1 k (14) k 1 per determinare il vettore dei termini noti e infine da n n k 1 k 1 ( n k 1) k (15) per la risoluzione del sistema (8). Tenendo conto delle formule n (16) k k 1 n( n 1) 2 n (17) k k 1 2 n( n 1)(2 n 1) 6 e sommando le operazioni precedenti si ha: n 1 (18) [( n k) 2 2k] n k 1 n3 n n2 . 3 3 Osservazione 1 . Strategia del pivot parziale. Il metodo di Gauss si può applicare adottando la strategia del pivot parziale. Tale strategia consiste nell’effettuare preliminarmente, un eventuale scambio di righe per condurre in luogo dell’elemento a11, che può essere anche nullo, l’elemento di massimo modulo della prima colonna. Al secondo passo si opera in modo analogo sulla sottomatrice di ordine (n-1) e di elementi aij(1) (i,j=2,3,…,n) In questo caso lo scambio di righe, se necessario, condurrà, in luogo dell’elemento a22(1), che può anche essere nullo, l’elemento di massimo modulo del vettore a2j(1), (j=2,3,...,n). Al terzo passo si considera in modo del tutto analogo la sottomatrice di ordine (n-2) e di elementi aij(2) (i,j=3,4,…,n). Questa procedura , nella maggior parte dei casi, riduce gli errori di arrotondamento. Osservazione 2 . Strategia del pivot totale. In questo caso, prima di applicare il metodo di Gauss, si ricerca l’elemento di massimo modulo su tutta la matrice e con scambi di righe e/o colonne lo si colloca in i=1 j=1. 42 Metodi Matematici per l’Ingegneria – Prof. M. Caprili Analogamente, prima di effettuare il secondo passo si ricerca l’elemento di massimo modulo sulla sottomatrice di ordine n-1 e di elementi aij(1) , (i>1, j>1), e tramite scambi di righe e/o colonne lo si scambia con l’elemento a22(1). Quindi si procede sulla matrice di ordine n-2 , etc. Anche con la strategia del pivot totale si riducono, nella maggior parte dei casi, gli errori di arrotondamento. Inoltre, questa strategia ben si presta sia al calcolo della caratteristica di una matrice ACmn , sia alla risoluzione di un sistema di m equazioni in n incognite. In quest’ultimo caso il metodo evidenzia se esistono soluzioni e determina un minore non nullo di ordine massimo. Metodo di Gauss-Jordan È una variante del metodo di Gauss e trova la sua giustificazione nel calcolo della matrice inversa. Si debba risolvere il sistema: (19) AX=I , dove X è la matrice incognita e detA0. Primo passo: identico al metodo di Gauss con la strategia del pivot parziale. Secondo passo: si rendono nulli gli elementi della seconda colonna ad eccezione dell’elemento pivot a22(1) , reso senz’altro diverso da zero con la strategia del pivot parziale. Ciò si ottiene premoltiplicando il sistema per la matrice non singolare 1 a12 (1) a 22 1 0 M2 (1) 0 a n(12) a 22 (1) (20) 0 0 0 0 1 0 Terzo passo: identico al secondo ma riferito alla sottomatrice nn-2 di elementi aij(2) con j>2. All’ennesimo passo si sarà costruita una matrice diagonale con elementi non nulli a11, a22(1), a33(2),..., 1 1 1 ann(n-1). Quindi premoltiplicando il sistema per la matrice diagonale di elementi , (1) , ..., ( n 1) a 11 a 22 a nn si ottiene la matrice identica a sinistra e la matrice inversa a destra, cioè il problema (19), con gli 1 1 1 n+1 prodotti per mezzo delle matrici M1, M2,..., Mn, Mn+1=diag{ , (1) , ..., ( n 1) }, diviene a 11 a 22 a nn equivalente a: (21) IX=B e quindi (22) A-1= Mn+1 Mn٠٠٠ M 43 1 Metodi Matematici per l’Ingegneria – Prof. M. Caprili Analisi dell’errore Un sistema lineare, tale che, a piccoli errori nei dati, corrispondono grandi errori nella soluzione, è detto mal condizionato o mal posto. Esaminiamo l’errore inerente dovuto ad una variazione A di A e b di b. Teorema. Se A è non singolare e A -1 A 1 allora A+A è non singolare e la soluzione x + x del sistema (23) (A+A)( x + x )=b+b dove A x =b, soddisfa la disuguaglianza: (24) x A) x b A b A A 1 (A) A dove (A)= A A-1 è il numero di condizionamento di A e la norma matriciale è quella indotta dalla norma vettoriale. Dimostrazione. Essendo A-1 A A-1 A 1 risulta (I+A-1A) non degenere (non ha l’autovalore nullo) e quindi anche A+A è non degenere. Risulta poi: (A + A) x̂ + A x̂ = b o anche (I A -1A) x = A -1 (b - Ax) e x̂ = (I + A-1A)-1 A-1 ( b Ax̂) . Passando alle norme si ha x A -1 b A x 1- A -1 A e dividendo per la soluzione esatta x riesce x A -1 x Tenendo conto che x b A x 1- A -1 A b in definitiva risulta A 44 . Metodi Matematici per l’Ingegneria – Prof. M. Caprili b A x b A . A) x A 1 (A) A Ne consegue che, se (A) è piccolo il problema è ben condizionato o stabile. Ad esempio, la matrice di Hilbert: H n =(h ij) ( 1 ), i , j 1, 2 ,..., n i j 1 è mal condizionata, ossia (A)>>1; infatti, (h(4)) = 1.55 104 . Si può diomostrare con i seguenti esempi, che il valore del determinante non indica il mal condizionamento di A. Sia A la matrice definita da (25) a 11 1 a i ,i 0.1, a 0, ij i 1,2 ,...,100 ji Essendo 2(A)=10, la matrice è ben condizionata, ma il determinante vale 10-99 . In certi casi il numero di condizionamento può essere ridotto con un’operazione di “scaling” . Infatti, se la matrice A, vale 0 A 1 0 il numero di condizionamento nella norma 1, risulta 1(A)=(1/)2 , che può essere reso arbitrariamente grande. Se invece, moltiplico la seconda riga (ovvero la seconda equazione nel caso di un sistema Ax=b) per 2, la matrice diviene A 0 0 e 1(A)=1. Il problema ingenerale, di non semplice soluzione, sarebbe quello di trovare due matrici D 1 e D2 , diagonali, tali che (D1 A D2) sia minimo. Se A è hermitiana, risulta (26) 2 (A) = A 2 A 1 e se è definita positiva i moduli possono essere omessi. Sia ~x una approssimazione della soluzione esatta x e (27) ~-b r = Ax 45 2 max i min i Metodi Matematici per l’Ingegneria – Prof. M. Caprili il vettore residuo. Essendo anche ~ - Ax = A(x ~ - x) r = Ax (28) x - x e quindi una si può risolvere questo sistema ottenendo una approssimazione dell’errore ~ migliore approssimazione di x . Il procedimento può essere ripetuto. Metodo di Doolittle È la fattorizzazione LR, se esiste, diretta della matrice A, dove L matrice triangolare inferiore con elementi unitari sulla diagonale e R triangolare superiore. Il confronto tra i membri sinistro e destro ci permette di determinare dapprima la prima riga di R (che coincide con la prima riga di A), poi la prima colonna di L, quindi la seconda riga di R e la seconda colonna di L, e così via. Metodo di Cholesky È una fattorizzazione di una matrice definita positiva nella forma A = S S (29) con S matrice triangolare inferiore e S* trasposta coniugata di S. Esempio Sia data la matrice definita positiva 9 1 2i 1 2i A = 1 2i 6 1 2i 1 2i 1 2i 9 Applicando la fattorizzazione diretta A = S S si ha s11 a 11 3 s21 s11 3 a 21 1 2i s11 3 s22 a 22 s21 2 7 3 s22 s31 a 31 1 2i s11 3 s13 s32 a 32 _ s31 s21 12 22i s22 21 s23 2 1 2i 3 7 3 1 2i 3 12 22i 21 2 86 7 s12 s33 a 33 s 31 s 32 2 2 86 7 46 s33 Metodi Matematici per l’Ingegneria – Prof. M. Caprili n3 Costo computazionale per una matrice di ordine n è . 6 METODI ITERATIVI PER LA RISOLUZIONE DI UN SISTEMA LINEARE Dato il sistema lineare Ax=b con detA0, scomposta la matrice A in (30) A=M-N, con M non degenere, il problema dato può equivalentemente porsi nella forma (31) x = M -1 Nx M 1 b la cui soluzione è un vettore, detto punto unito, che soddisfa ovviamente l’uguaglianza (31). Il problema posto nella forma (31) suggerisce il procedimento iterativo: (32) x ( i 1) M 1 Nx ( i ) M 1 b ; cioè, assegnato un vettore iniziale x(0), si determina x (1) M 1 Nx ( 0) M 1 b e quindi x ( 2 ) M 1 Nx (1) M 1 b e così via. Si osserva che se la successione così costruita è convergente ad un vettore allora è sicuramente soluzione. È interessante però sapere a priori quando la successione {x ( i ) } , generata a partire da un x(0) arbitrario, risulta convergente. A tale scopo posto P=M-1N e q= M-1b il problema (33) x=Px+q ha soluzione unica se e solo se (34) (P)<1 ossia se e solo se P è una matrice convergente. Infatti, se x è la soluzione (questa esiste ed è unica per essere I-P non degenere), ossia (35) x Px q , per sottrazione col metodo iterativo x(i+1)=Px(i)+q, si trova 47 Metodi Matematici per l’Ingegneria – Prof. M. Caprili (36) x ( i 1) x Px ( i ) Px o anche e ( i 1) Pe ( i ) (37) dove e ( i ) x ( i ) x , e ( i 1) x ( i 1) x . Risolvendo l’equazione (37), si ottiene (38) e ( i ) P i e ( 0) e passando al limite, poiché Pi tende a zero, viene (39) lim e ( i ) 0 . i Una condizione solo sufficiente vale se esiste una norma tale che P 1 . Infatti in tal caso, per il teorema di Hirsch, si ha ( P) P . Se poi il metodo iterativo risulta convergente per ogni x (0) iniziale, allora preso un vettore iniziale in modo che (40) e ( 0) x ( 0) x (si osserva che la soluzione esiste per ipotesi) sia un autovettore associato all’autovalore di massimo modulo M, per la (38) risulta (41) e ( i ) P i e ( 0) iM e ( 0) . Passando al limite dovrà essere (42) lim iM 0 i ossia M 1 in quanto e ( i ) 0 per i. In pratica il processo iterativo, supposto convergente, si arresta quando (43) x ( i 1) x ( i ) . Tuttavia, non è detto che la soluzione sia approssimata con la precisione . Infatti, se P 1 risulta x ( i ) x ( i 1) x ( i ) x ( x ( i 1) x ) e ( i ) e ( i 1) ( P I)e ( i 1) per cui 48 Metodi Matematici per l’Ingegneria – Prof. M. Caprili (44) e ( i 1) x ( i ) x ( i 1) 1 P 1 P e quindi può accadere che e ( i 1) sia grande anche se è piccolo. Esaminiamo il caso in cui il test di arresto sia r k b dove r k b Ax k A x k Ae k Risulta e k A 1 r k e k A 1 r k A 1 b Ma A b b A b A e quindi e k A 1 b A 1 A A . Si conclude che, l’errore relativo sulla soluzione, può essere grande se, il numero di condizionamento di A è grande nonostante, l’errore relativo sul residuo, sia piccolo. Metodo iterativo di Jacobi La matrice A si scompone nella forma specifica A=M-N dove M=D=diag{ a 11 , a 22 ,..., a nn }, N=B+C con B={-aij se i>j, 0 se ij } e C={-aij se i<j, 0 se ij}. Il metodo in forma matriciale si scrive (45) x ( i 1) D 1 ( B C) x ( i ) D 1 b dove è stato supposto che gli elementi della diagonale di A siano tutti non nulli. In termini di componenti il metodo viene 49 Metodi Matematici per l’Ingegneria – Prof. M. Caprili x (ji 1) (46) n 1 ( b j a jk x (ki ) ) a jj k 1 , j=1,...,n . k j Metodo iterativo di Gauss-Seidel In questo caso M=D-B, N=C e il metodo in forma matriciale si scrive (47) x ( i 1) ( D B) 1 Cx ( i ) ( D B) 1 b mentre esplicitamente in termini di componenti diviene (48) x ( i 1) D 1 ( Bx ( i 1) Cx ( i ) b) ossia (49) x (ji 1) j1 n 1 ( b j a jk x (ki 1) a jk x (ki ) ) , j=1,...,n . a jj k 1 k j1 All’atto pratico può accadere che il metodo di Jacobi sia convergente e quello di Gauss-Seidel no e viceversa. Entrambi i metodi convergono se la matrice A è a predominanza diagonale forte per righe o per colonne, oppure se la matrice A è a predominanza diagonale debole per righe o per colonne ed ha grafo fortemente connesso. Se alcuni elementi della diagonale di A sono nulli è sempre possibile determinare un sistema equivalente permutando le righe e/o le colonne di A in modo che la nuova matrice abbia gli elementi diagonali non nulli. Nel caso la matrice A sia hermitiana il metodo di Gauss-Seidel è convergente se e solo se A è definita positiva. Metodo di rilassamento Tramite il metodo di Gauss-Seidel si ha il vettore provvisorio (50) x ( i 1) D 1[ Bx ( i 1) Cx ( i ) b] . Adesso a partire da x(i) si effettua un passo di lunghezza x ( i 1) x ( i ) x ( i 1) x ( i ) , ossia si trova (51) x ( i 1) x ( i ) ( x ( i 1) x ( i ) ) , nella direzione di 0. Calcolare alternativamente le componenti di x̂ ( i 1) , x ( i 1) , tramite le (50), (51), è equivalente a sostituire la (50) nella (51) e risolvere l’equazione (52) x ( i 1) x ( i ) [ D 1 ( Bx ( i 1) Cx ( i ) b) x ( i ) ] rispetto a x(i+1) , ossia applicare il metodo iterativo di rilassamento: 50 Metodi Matematici per l’Ingegneria – Prof. M. Caprili (53) x ( i 1) ( D B) 1[(1 ) D C]x ( i ) ( D B) 1 b . Se 0<<1 il metodo è detto di sottorilassamento, se >1 di sovrarilassamento o anche SOR da: Successive Over Relaxation. In termini di componenti, per le (49) e (51), il metodo diviene: (54) x (ji 1) (1 ) x (ji ) j1 n ( b j a jk x (ki 1) a jk x (ki ) ) , j=1,...,n . a jj k 1 k j1 La convergenza del metodo è al solito assicurata se la matrice di iterazione: (55) H() ( D B) 1[(1 ) D C] ha raggio spettrale <1. Condizione solo necessaria per la convergenza è che: (56) 0<<2. Infatti det H() 1 det[(1 ) D C] det( D B) e poichè le matrici D-B e (1-)D+C sono triangolari risulta: det H ( ) 1 det(1 ) D (1 ) n . det D Ricordando che il determinante di una matrice è il prodotto dei suoi autovalori, allora se il metodo è convergente, cioè (H())<1, dovrà essere (1 ) n 1 , ossia 1 1, cioè la (56). Si osserva che se la matrice A è definita positiva la condizione (56) è anche condizione sufficiente per la convergenza. Evidentemente la velocità di convergenza dipende dal valore di . La velocità è più alta se il raggio spettrale è più piccolo. La massima si avrà per il valore di che rende minimo (H()). Il metodo SOR, può essere anche definito ponendo 51 Metodi Matematici per l’Ingegneria – Prof. M. Caprili M D E e quindi, per la (30), 1 N 1 D F. Questo metodo è denominato SOR in avanti. In quanto le componenti del vettore x vengono calcolate nell’ordine naturale. Per contro, scambiando la matrice E con la F, si ha il metodo denominato SOR all’indietro. In questo caso la componenti del vettore x vengono calcolate a ritroso, ossia dapprima la n-ma, quindi la (n-1)-ma, etc. Si possono infine, combinare questi due metodi per dare luogo al metodo detto SSOR (symmetric successive over-relaxion). In pratica, se scriviamo il metodo SOR all’avanti nella forma D E x 1 k 2 b 1 D x k F x k e il metodo SOR all’indietro nella rappresentazione D F x k 1 b 1 D x 1 k 2 E x k . Allora eliminando x(1+1/2) dalla seconda tramite la prima, si ha il metodo SSOR, la cui matrice di iterazione risulta S D F 1 1 D ED E1 1 D F , e il metodo, diviene x k 1 D F 1 1 D ED E 1 1 D F x k . 1 1 2 D F DD E b In questo metodo le componenti del nuovo vettore vengono calcolate alternativamente: dapprima la componente x1, poi la componente xn,, quindi la x2 poi la xn-1, e così via. Metodo del gradiente coniugato Sia dato il sistema lineare: (57) Ax=b con A definita positiva e x=a soluzione. Se A non è definita positiva si può considerare il problema equivalente con B=ATA definita positiva in quanto detA0. Allora, consideriamo il funzionale 1 f ( x) ( b Ax) T A 1 ( b Ax) , 2 che è positivo per xa per essere A-1 definita positiva. 52 Metodi Matematici per l’Ingegneria – Prof. M. Caprili Essendo poi: f ( x) 1 T 1 x Ax x T b b T A 1 b 2 2 il problema del minimo di f(x), che, ovviamente, è ottenuto per x=a, è equivalente al problema di minimo di F( x) 1 T x Ax x T b . 2 Inoltre risulta gradF(x)=gradf(x)=Ax-b=-r(x) che si annulla nella soluzione del sistema (57). Il metodo del gradiente coniugato consiste nel determinare una successione x (k) che converge al minimo di F(x), ossia alla soluzione di (60). Si consideri un x(0) iniziale e si calcoli: x (1) x ( 0) 0 d ( 0) . La direzione d(0) potrebbe essere quella del gradiente di F(x(0)) e di verso opposto (decrescenza di F(x) ) ossia d ( 0) gradF( x ( 0) ) r ( x ( 0) ) ma è preferibile scegliere, per migliorare la convergenza, la seguente procedura detta del gradiente coniugato. Alla prima applicazione si calcola d ( 0) r ( 0) r ( x ( 0) ) e 0 ( r ( 0) ) T r ( 0) (d ( 0) ) T A d ( 0) per cui x (1) x ( 0) 0 d ( 0) . Alla seconda applicazione r (1) r ( x (1) ) d (1) r (1) 1d ( 0) dove ( r (1) ) T A d ( 0) 1 ( 0 ) T (d ) A d ( 0 ) 53 Metodi Matematici per l’Ingegneria – Prof. M. Caprili che dà d(1)TAd(0)=0, ossia d(1) è la direzione coniugata di d(0) rispetto ad A; quindi 1, che minimizza F(x(1)+d(1)), vale: d (1) T r (1) . 1 (1) T d A d (1) Pertanto x ( 2) x (1) 1d (1) . Alla k-esima applicazione r (k) r(x(k) ) , d ( k ) r ( k ) k d ( k 1) , k r ( k ) A d ( k 1) , (d ( k 1) ) T A d ( k 1) (d ( k ) ) T r ( k ) k (k) T (d ) A d ( k ) e quindi x ( k 1) x ( k ) k d ( k ) . La successione converge ad a e si arresta in pratica quando r (k) b 2 2 54 .