Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Possiamo ora memorizzare le matrici A, L, U in formato sparso trasformandole mediante il comando sparse e osservarne la differente occupazione di memoria
>> Asparse= s p a r s e (A) ; Lsparse= s p a r s e ( L ) ; Usparse= s p a r s e (U) ; >> whos s p a r s e V a r i a b l e s i n t h e c u r r e n t scope : A t t r Name Size B yt e s C l a s s ==== ==== ==== ===== ===== Asparse 200 x200 12732 double Lsparse 200 x200 242004 double Usparse 200 x200 242004 double
Calcolo Numerico
LT Informatica A. A. 20112012
A 0 0
U 0
20
20
20
40
40
40
60
60
60
80
80
80
100 0 20 40 60 80 100
100 0 20 40 60 80 100
100 0 20 40 60 80 100
La soluzione di sistemi lineari sparsi motiva luso di metodi alternativi ai metodi diretti. Tali metodi si deniscono metodi iterativi perch cercano la soluzione del sistema generando una successione di vettori { x (k) , k 0} che sotto certe condizioni converge alla soluzione esatta, cio lim x (k) = x.
k
( M N )x = b
Mx Nx = b
=
Nx + M1 b
Mx = Nx + b
x=M
x = Px + q
La matrice P = M1 N denita nellultima equazione si denisce matrice di iterazione. Ricaviamo ora un metodo iterativo consistente derivandolo dalle equazioni precedenti: Mx (k+1) = Nx (k) + b x x
( k +1) ( k +1)
(1)
= M
Nx
(k)
+M
b (2)
= Px
(k)
+q
Per caratterizzare i singoli metodi iterativi, si parte dal fatto che A si pu scrivere come A = L+D+U dove D la matrice diagonale con elementi uguali alla diagonale di A, L ed U sono la parte triangolari inferiore di A (senza la diagonale) e triangolare superiore di A (senza
Esercitazione 5: Metodi iterativi per la soluzione di sistemi lineari la diagonale), rispettivamente. I metodi iterativi stazionari si ottengono denendo opportunamente N ed M in funzione di L, D, U : 1. Metodo di Jacobi. M = D; N = ( L + U ). 2. Metodo di Gauss-Seidel. M = L + D; N = U . 3. Metodo SOR. M = L + D; N = (1 ) D U , con (0, 2) parametro reale .
0.40451
>> e i g ( P_S ) ans = 0.00000 >> r h o _ J rho_J = >> rho_S rho_S =
0.15451
0.15451
0.40451
0.16363
0.02387
0.00000
Calcolo Numerico
LT Informatica A. A. 20112012
In questo caso entrambi i metodi sono convergenti come si poteva vedere anche dallesame della matrice che risulta essere diagonalmente dominante in senso stretto.
(3)
Se volessimo visualizzare il prolo di convergenza del metodo, dovremmo creare un graco semilogaritmico della norma del residuo in funzione dellindice di iterazione:
>> semilogy ( 0 : i t e r , normres , o ) ; t i t l e ( metodo di J a c o b i ) ; x l a b e l ( i t e r a z i o n i ) ; y l a b e l ( || r e s i d u o || )
Esercizio 3 Seguendo la traccia della function jacobi.m si scriva una function gauss_seidel.m che implementi il metodo di Gauss Seidel Esercizio 4 Si risolva il sistema Ax = b essendo A la matrice denita in (3) facendo uso della function gauss_seidel.m, con tolleranza 1e 8. Si confrontino i due metodi mediante un graco semilogaritmico con lindice di iterazione sulle ascisse e la norma del residuo sulle ordinate. Risoluzione Lesercizio potrebbe essere risolto usando, ad esempio, il seguente script:
A=[4 3 0 ; 2 3 0 . 5 ; 0 1 2 . 5 ] ; b=A ones ( 3 , 1 ) ; [ x j , i t e r j , vnormres_j ]= j a c o b i (A, 1 0 0 , 1 e 8,b ) [ xs , i t e r s , vnormres_s ]= g a u s s _ s e i d e l (A, 1 0 0 , 1 e 8,b ) semilogy ( 0 : i t e r j , vnormres_j , o ) ; hold on ; semilogy ( 0 : i t e r s , vnormres_s , r ) ; hold o f f ; legend ( J a c o b i , S e i d e l ) ; t i t l e ( Confronto t r a i metodi di J a c o b i e GaussS e i d e l ) ; xlabel ( Iterazioni ) ; y l a b e l ( || r e s i d u o || ) ;
Il graco prodotto dallo script precedente quello mostrato in Figura 1. Si osserva che il metodo di Gauss-Seidel converge pi rapidamente del metodo di Jacobi.
Calcolo Numerico
LT Informatica A. A. 20112012
Jacobi Seidel
100
|| residuo ||
10-2
10-4
10-6
10-8 0 10 20 30 40 50 60 70 Iterazioni
Figura 1: Norma del residuo in funzione del numero di iterazioni per i metodi di Jacobi e Gauss-Seidel nella soluzione del sistema lineare dellEsercizio 3.
Si deduce che l ottimo sempre compreso tra 1 e 2. Inne il raggio spettrale della matrice di iterazione di SOR, per opt , pu essere determinato analiticamente dalla formula ( P ) = 1. Esercizio 5 Seguendo la traccia della function gauss_seidel.m si scriva una function sor.m che implementi il metodo SOR. Rispetto alle precedenti function che implementano
Esercitazione 5: Metodi iterativi per la soluzione di sistemi lineari i metodi di Jacobi e Gauss-Seidel, la function sor.m necessita di un ulteriore parametro di input, (0, 2).
Costruiamo ora una matrice tridiagonale in formato sparso usando il comando spdiags.
>> n = 1 0 ; >> a = ones ( n , 1 ) ; >> A = spdiags ([ 2 a , 4 . 0 1 a , 2 a ] , [ 1 , 0 , 1 ] , n , n ) ;
Esercizio 6 1. Si verichi che il metodo SOR converge per ogni (0, 2) alla soluzione del sistema lineare avente A come matrice dei coefcienti. 2. Si risolva poi il sistema Ax = b con b = A ones(10, 1) facendo uso della function sor.m con tolleranza 1e 8 e = 1.2. 3. Si calcoli il valore ottimo di a partire dalla formula che usa il raggio spettrale della matrice di iterazione di Jacobi. 4. Si risolva nuovamente il sistema usando il metodo SOR con il valore ottimo di determinato al punto precedente e si confronti il numero di iterazioni necessario per approssimare la soluzione con tolleranza 1e 8 con quello ottenuto al punto 2. Risoluzione Possiamo stabilire la convergenza del metodo SOR in due modi: 1o MODO: Essendo la matrice A simmetrica, diagonalmente dominante in senso stretto e avendo A elementi diagonali positivi, essa denita positiva, dunque il metodo SOR converge per ogni scelta di (0, 2). 2o MODO: A tridiagonale inoltre il metodo di Jacobi converge ( A strettamente diagonalmente dominante) e gli autovalori della matrice di iterazione di Jacobi sono reali essendo PJ simmetrica. Lo script che chiama la function sor.m si pu scrivere come segue:
n=10; a = ones ( n , 1 ) ; A = spdiags ([ 2 a , 4 . 0 1 a , 2 a ] , [ 1 , 0 , 1 ] , n , n ) ; t o l l = 1e 8; itmax = 2 0 0 ; [ x , i t e r , normres ]= s o r (A, itmax , t o l l , 1 . 2 ) ; iter
Il numero di iterazioni risulta uguale a 126. Utilizzando listruzione eig si trova che ( PJ ) = 0.9571 da cui opt = 2 1+ 1 (0.9571)2
= 1.5507.
Si verichi che con questo valore di il metodo SOR converge alla soluzione approssimata con la tolleranza richiesta in sole 37 iterazioni.
Calcolo Numerico
LT Informatica A. A. 20112012
Esercizi proposti
Esercizio 1 Si denisca la matrice tridiagonale A di ordine 6 con elementi pari a 2 sulla diagonale principale ed elementi pari a aij = 1 per |i j| = 1. Si vuole risolvere il sistema lineare Ax = b; con b = A ones(6, 1) con una tolleranza di 1e 8. 1. Si dica perch il metodo di Gauss-Seidel converge. Dedurre che anche il metodo di Jacobi converge. Mostrare inoltre che possibile determinare un valore ottimo del parametro di rilassamento del metodo SOR. 2. Si risolva il sistema mediante il metodo di Jacobi. 3. Si risolva il sistema mediante il metodo di Gauss-Seidel usando la function SOR.m. 4. Si calcoli teoricamente il valore ottimale di in funzione del raggio spettrale della matrice di iterazione del metodo di Gauss-Seidel (o di Jacobi). 5. Si risolva il sistema lineare mediante il metodo SOR utilizzando il valore di trovato al punto precedente. 6. Si produca un unico graco semilogaritmico delle norme dei residui relativo ai metodi di Jacobi, Gauss-Seidel e SOR. 7. Per i tre metodi si determini la velocit di convergenza R a partire dal corrispondente raggio spettrale della matrice di iterazione. Si mettano in relazione i valori trovati di R con le iterazioni impiegate dai vari metodi. Esercizio 2 Si risolva il sistema lineare dellesercizio precedente con il metodo SOR per diversi valori di . Si parta da = 1 no ad = 1.8 con passo 0.05. 1. Si visualizzi in un graco landamento del numero di iterazioni al variare di . 2. Si determini dal graco il valore sperimentale di opt . 3. Si commentino i risultati ottenuti confrontandoli con il valore teorico di ottimale ricavato al punto 4 dellesercizio precedente.
NOTA BENE: Si porti allesame orale una relazione scritta con la soluzione di questi esercizi, i graci ottenuti e gli m-les Matlab/Octave utilizzati.