Sei sulla pagina 1di 41

Sistemi lineari Lucia Gastaldi

Metodi iterativi per sistemi lineari


Lucia Gastaldi
Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Indice
1 Metodi iterativi classici

Derivazione dei metodi iterativi Convergenza


2 Metodi di Jacobi e di Gauss-Seidel

Applicazioni
3 Il metodo di Richardson

Precondizionatori Il metodo di Richardson non stazionario


4 I metodi del gradiente e del gradiente coniugato 5 Metodi a terminazione nita per matrici qualunque

Sistemi lineari Lucia Gastaldi Metodi iterativi classici


Derivazione dei metodi iterativi Convergenza

Costruzione di un metodo iterativo


Consideriamo il sistema lineare Ax = b con det(A) = 0. Introduciamo la seguente decomposizione della matrice A = P N . Allora si ha Ax = b (P N )x = b Px = Nx + b x = P 1 Nx + P 1 b Il sistema ` e ricondotto ad un problema di punto sso. Applichiamo il procedimento delle approssimazioni successive x (k +1) = P 1 Nx (k ) + P 1 b x (k +1) = Bx (k ) + g B matrice di iterazione

Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Sistemi lineari Lucia Gastaldi Metodi iterativi classici


Derivazione dei metodi iterativi Convergenza

Convergenza dei metodi iterativi


Sia e (k ) = x x (k ) lerrore al passo k . Si ottiene che e (k +1) = Be (k ) = B k +1 e (0) .

Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Teorema
Se B < 1 allora il metodo iterativo con matrice di iterazione B` e convergente.

Teorema
Condizione necessaria e suciente per la convergenza del metodo iterativo con matrice di iterazione B ` e (B ) < 1, essendo (B ) il raggio spettrale della matrice B ossia (B ) = max |i | con i autovalori di B .
1i n

Sistemi lineari Lucia Gastaldi Metodi iterativi classici


Derivazione dei metodi iterativi Convergenza

Matrici sparse
Il costo di un metodo iterativo ` e dato dal numero delle iterazioni x costo del prodotto di B per un vettore Quindi luso dei metodi iterativi ` e consigliato nel caso di matrici sparse e di grandi dimensioni. Il formato sparse ` e utilizzato in Matlab per ridurre i costi di memorizzazione della matrice. S=sparse(A) converte la matrice in formato full in una matrice in formato sparse tenendo in memoria solo gli elementi diversi da zero. S = sparse(i,j,s,m,n) usa i vettori i, j e s per costruire la matrice di dimensione m n tale che S(i(k),j(k)) = s(k). Il comando spy(A) mostra in un graco quali sono gli elementi di A non nulli ed il loro numero nnz. Il comando spdiags generalizza il comando diag alle matrici sparse.

Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel
Applicazioni

Decomposizione della matrice


A=D E F essendo a11 0 0 a22 D= 0 0 0 0 , ann , .

Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

0 0 0 0 a21 0 E = an1 ann1 0 0 a12 a1n F = 0 0 an1n 0 0 0

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel
Applicazioni

Metodo di Jacobi

Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

La scelta P = D d` a luogo al metodo di Jacobi, che si pu` o scrivere componente per componente nella forma: n 1 (k ) (k +1) bi aij xj per i = 1, . . . , n. xi = aii
j =1, j =i

La matrice di iterazione ` e: BJ = D 1 (E + F ) = D 1 (D A) = I D 1 A.

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel
Applicazioni

Metodo di Gauss-Seidel
Ponendo P = D E si ricava il metodo di Gauss-Seidel che componente per componente si scrive: i 1 n 1 (k +1) (k +1) (k ) = bi aij xj aij xj xi aii
j =1 j =i +1

Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

per i = 1, . . . , n. La matrice di iterazione ` e: BGS = (D E )1 F = (D E )1 (D E A) = I (D E )1 A.

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel
Applicazioni

Esercizio
Si considerino le seguenti matrici e vettori: 3 3 6 3 0 4 A2 = 4 7 8 A1 = 7 4 2 5 7 9 1 1 2 7 6 9 4 1 1 5 4 A4 = 4 A3 = 2 9 0 7 3 8 0 8 6
Calcolare i termini noti in modo che la soluzione sia

Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

x = (1, 1, 1)T . Applicare i metodi iterativi di Jacobi e Gauss-Seidel usando le function jacobi e gseidel come segue: [x,iter]=jacobi(A,b,x0,toll,nmax,output) [x,iter]=gseidel(A,b,x0,toll,nmax,output) Riportare in una tabella per ciascuna matrice il numero di iterazioni, il raggio spettrale, il residuo e la dierenza fra le due ultime iterate.

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel
Applicazioni

Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

I comandi per usare le function jacobi e gseidel sono rispettivamente: [x,iter]=jacobi(A,b,x0,toll,nmax,output) [x,iter]=gseidel(A,b,x0,toll,nmax,output) essendo A,b matrice e termine noto del sistema; x0 vettore iniziale; toll precisione desiderata (ad es. 1.e-6); nmax numero massimo di iterazioni (ad es. 300); x soluzione calcolata; iter numero di iterazioni eseguite; output se output=1 ottengo la tabella. Le function forniscono una tabella che contiene: 1 col numero di iterazione k 2 col residuo r (k ) = b Ax (k ) 3 col dierenza fra iterate successive (k ) = x (k ) x (k 1) 4 col stima del raggio spettrale (k ) / (k 1)

Function jacobi e gseidel

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel
Applicazioni

Esercizio (segue)
Confrontare il numero di iterazioni impiegate con quello previsto, calcolando il raggio spettrale della matrice di iterazione. Si ricorda che le matrici di iterazione dei metodi di Jacobi e di Gauss-Seidel sono date rispettivamente da: BJ = I D 1 A (D diagonale di A) BGS = I (D E )1 A (D E triangolare inferiore di A). Per calcolare gli autovalori usare il comando eig(B).

Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Costruzione della matrice B


eye(n) fornisce la matrice identit` a di dimensione n n. Per costruire la matrice BJ usare il comando diag. diag(A) estrae il vettore v che contiene la diagonale principale. diag(v) fornisce la matrice diagonale. Per costruire la matrice BGS usare il comando tril. Il comando tril(A) estrae la parte triangolare inferiore della matrice A.

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel
Applicazioni

Esercizio
Si consideri lequazione dierenziale con valori ai limiti: u (x ) = 1 + x x [0, 1],
2

u (0) = u (1) = 0.
3

Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

x x La soluzione esatta ` e: u (x ) = 2 3x 2 6 . Usare la function eqlim per calcolare con un metodo diretto la soluzione del sistema lineare risultante e calcolare lerrore rispetto alla soluzione esatta. Modicare la function eqlim in modo che fornisca anche la matrice A e il termine noto. Calcolare poi la soluzione del sistema lineare mediante i metodi iterativi di Jacobi e Gauss-Seidel usando le function jacobi e gseidel. Porre x0=zeros(n,1) essendo n la dimensione del sistema, tol=1e-6, nmax=300. facoltativo usare il comando spdiags per costruire la matrice A in formato sparse.

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel
Applicazioni

Esercizio (segue)
Confrontare la stima del raggio spettrale della matrice di

iterazione con i seguenti valori esatti: (BJ ) = cos( h) (BGS ) = (BJ )2 .

Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Calcolare lerrore relativo rispetto alla soluzione esatta del

problema e rispetto alla soluzione fornita da eqlim. Ripetere lesercizio per lequazione u (x ) = 1 + x e x con soluzione esatta u (x ) = e x 1 (e 5/3)x x 2 /2 x 3 /6. In questo caso lerrore relativo ottenuto con i metodi iterativi ` e paragonabile a quello ottenuto risolvendo il sistema lineare con il metodo diretto.

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson
Precondizionatori Il metodo di Richardson non stazionario

Il metodo di Richardson stazionario


Posto A = P N e quindi N = P A, un metodo iterativo nella forma x (k +1) = P 1 Nx (k ) + P 1 b si pu` o riscrivere come segue x (k +1) = P 1 (P A)x (k ) + P 1 b = (I P 1 A)x (k ) + P 1 b = x (k ) + P 1 (b Ax (k ) ) = x (k ) + P 1 r (k ) . La convergenza del metodo si ha se (I P 1 A) < 1. Se questo non succede si pu` o modicare il metodo introducendo un opportuno parametro come segue x (k +1) = x (k ) + P 1 r (k ) in modo tale che (I P 1 A) < 1.

I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Il metodo cos` costruito si chiama metodo di Richardson stazionario.

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson
Precondizionatori Il metodo di Richardson non stazionario

Convergenza del metodo di Richardson stazionario


B = I P 1 A matrice di iterazione del metodo di Richardson stazionario. P ed A matrici simmetriche e denite positive. i , ui autovalori ed autovettori di P 1 A cio` e: P 1 Aui = i ui . Ordiniamo gli autovalori in modo che valga la seguente relazione: 0 < min = 1 2 n = max . Teorema Il metodo di Richardson stazionario converge se e solo se 2 0<< . max Il minimo di (B ) al variare di si ottiene per ott = 2 min + max e si ha (Bott ) = max min . max + min

I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson
Precondizionatori Il metodo di Richardson non stazionario

Precondizionatori

La matrice P che compare nellespressione del metodo di Richardson si chiama matrice di precondizionamento. La scelta di P deve essere guidata dalla seguente condizione: K (P 1 A) << K (A). Lideale sarebbe avere K (P 1 A) 1 e quindi P 1 rappresenta unapprossimazione dellinversa di A.

I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson
Precondizionatori Il metodo di Richardson non stazionario

Precondizionatori di uso comune


Precondizionatori diagonali: si sceglie P uguale alla

diagonale di A se A ` e simmetrica e denita positiva. Se A non ` e simmetrica si pu` o porre: pii =


j =1 n

1/2
2 aij

I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Fattorizzazione incompleta Precondizionatori polinomiali: Posto A = D C si ha

A = (I CD 1 )D . Quindi linversa ` e data da: A1 = D 1 (I CD 1 )1 = D 1 (I +CD 1 +(CD 1 )2 +. . . ) Troncando lo sviluppo in serie ad una certa potenza si ottiene un valore approssimato di A1 . Per esempio si pu` o scegliere P 1 = D 1 (I + CD 1 ).

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson
Precondizionatori Il metodo di Richardson non stazionario

Fattorizzazione incompleta

La fattorizzazione incompleta si ottiene con i comandi:


luinc per matrici generali; cholinc per matrici simmetriche e denite positive.

I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

[L,U]=luinc(A,0) fornisce i fattori L e U con lo stesso schema di sparsit` a della matrice A. [L,U]=luinc(A,droptol) calcola la fattorizzazione incompleta eliminando i termini della fattorizzazione che sono inferiori a droptol.

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson
Precondizionatori Il metodo di Richardson non stazionario

Function richstaz
[x,iter]=richstaz(A,b,x0,toll,nmax,alfa,out,prec,P1,P2) INPUT A, b x0 toll nmax out prec prec=1 prec=2 prec=3 matrice e termine noto vettore iniziale tolleranza numero massimo di iterazioni se out=1 ottengo la tabella tipo di precondizionatore: precondizionatore diag: P1=P, P2 non assegnata P=P1*P2 con P1 e P2 matrici triangolari inf e sup approssimazione di P 1 = D 1 (I + CD 1 ) assegnare P1=D e P 2 = I + CD 1

I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

OUTPUT x soluzione iter numero di iterazioni eseguite

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson
Precondizionatori Il metodo di Richardson non stazionario

Problema di Neumann

Sia f C 0 ([a, b ]) tale che a f (x )dx = 0. Si consideri il seguente problema dierenziale: u (x ) = f (x ) per x (a, b ), u (a) = u (b ) = 0
b

I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

u (x )dx = 0.
a

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson
Precondizionatori Il metodo di Richardson non stazionario

Discretizzazione con dierenze nite


Posto h = 2/(n 1) e x = 1 + ih per i = 0, . . . , n 1, approssimando la der. seconda con le dierenze nite il problema si riconduce alla soluzione del sistema lineare Ah u = b essendo Ah R(n+1)(n+1) , b Rn+1 , u Rn+1 con
Ah = A1 vT v 1 , b= b1 0 , u= uh m ,

I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

u h Rn soluzione discreta, m valore della media e 1 1 0 . . . 0 1 2 1 . . . 0 1 A1 = 2 . . . . . . . . . . . . . . . h 0 . . . 1 2 1 0 ... 0 1 1 1/2 f (x1 )/2 1 f ( x2 ) ... v = . . . b1 = 1 f (x ) n 1 1/2 f (xn )/2

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson
Precondizionatori Il metodo di Richardson non stazionario

Esercizio (segue)
Costruire la matrice Ah in formato sparse. Costruire il vettore e=ones(n,1); [-e 2*e -e] d` a una matrice che ha su ciascuna colonna le diagonali di A1 ; usare il comando A=spdiags([-e 2*e -e],-1:1,n,n) per costruire la matrice A1 ; correggere gli elementi A(1,1) e A(n,n); dividere per h2 la matrice costruita; costruire il vettore v ; mettere insieme tutti i blocchi A=[A v;-v 1]. visualizzare la struttura della matrice con il comando spy Costruire il vettore b . Risolvere il sistema lineare. La soluzione u h ` e data dalle prime n componenti del vettore soluzione. Plottare la soluzione ottenuta insieme a quella esatta.

I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson
Precondizionatori Il metodo di Richardson non stazionario

Esercizio sul problema di Neumann


Si consideri il sistema lineare ottenuto dallapplicazione delle dierenze nite al problema di Neumann. Posto toll=1.e-5 e nmax=100, risolvere il sistema lineare con i metodi di Jacobi e Gauss-Seidel. Avendo osservato che il metodo di Jacobi non converge, usare il metodo di Richardson con matrice di precondizionamento P data dalla diagonale di A. Trovare, andando per tentativi, un valore di per il quale il metodo di Richardson ` e convergente. Usare il precondizionamento dato da pii =
j =1 n

I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

1/2
2 aij

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson
Precondizionatori Il metodo di Richardson non stazionario

Metodi iterativi e risoluzione del Laplaciano con condizioni di Dirichlet


Si consideri il seguente problema: u = f u=g in = [1, 1] [1, 1] su . (1)

I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

La function dirichlet costruisce la matrice in formato sparse e il termine noto mediante il seguente comando: [X,Y,U,A,f]=dirichlet(effe,a1,a2,b1,b2,g,Nx,Ny)

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson
Precondizionatori Il metodo di Richardson non stazionario

Esercizio
Risoluzione del problema del Laplaciano con i metodi iterativi
Costruire la matrice dei coecienti e il termine noto corrispondente alla soluzione del problema (1) con dierenze nite. Per risolvere il sitema lineare ottenuto applicare i seguenti metodi (usare toll=1.e-5 e nmax=300): metodo diretto con eliminazione di Gauss (dirichlet); metodo di Jacobi; metodo di Gauss-Seidel; metodo di Richardson con precond. diagonale ( = .8); metodo di Richardson precond. con la fattorizzazione incompleta ( = 1); metodo di Richardson con precond. polinomiale ( = 1); Confrontare il numero di iterazioni richieste per n = 10. Per ciascun metodo calcolare lerrore relativo (usare la norma norm(v,fro)).

I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson
Precondizionatori Il metodo di Richardson non stazionario

Rappresentazione della soluzione

I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Per ricostruire la soluzione dopo aver applicato un metodo iterativo usare il comando [X,Y,U]=plottasol(u,a1,a2,b1,b2,g,Nx,Ny) i dati in input sono gli stessi della function dirichlet

Per il graco: surf(X,Y,Z)

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson
Precondizionatori Il metodo di Richardson non stazionario

Il metodo di Richardson non stazionario


Il metodo di Richardson non stazionario pu` o essere applicato al caso di matrici A simmetriche e denite positive.

Algoritmo
1. 2. 3. 4. Assegnazione dei dati: A, b , x (0) ; Calcolo del residuo iniziale: r (0) = b Ax (0) ; Calcolo della direzione iniziale: Pz (0) = r (0) ; Fino a convergenza ripetere:
z (k ) Az (k ) b. x = x (k ) + k z (k ) c. r (k +1) = r (k ) k Az (k ) d. Pz (k +1) = r (k +1)
(k +1)

I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

a. k =

z (k ) r (k )
T

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Il metodo del gradiente o di massima discesa


Sia A simmetrica e denita positiva, se P = I (matrice identit` a) allora il metodo di Richardson non stazionario prende il nome di Metodo del gradiente.

Algoritmo
1. Assegnazione dei dati: A, b , x (0) ; 2. Calcolo del residuo iniziale: r (0) = b Ax (0) ; 3. Fino a convergenza ripetere:
r (k ) Ar (k ) b. x = x (k ) + k r (k ) (k +1) c. r = r (k ) k Ar (k )
(k +1)

a. k =

r (k ) r (k )
T

La function gradiente risolve il sistema lineare Ax = b con il metodo del gradiente: [x,iter]=gradiente(A,b,x0,toll,nmax)

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Il metodo del gradiente coniugato

Il metodo del gradiente coniugato si applica nel caso di matrici simmetriche e denite positive ed ` e caratterizzato dalla scelta di direzioni z (k ) tali che: z (k ) Az (j ) = 0
T

per k = j .

Siccome le direzioni z (k ) sono linearmente indipendenti il metodo del gradiente coniugato ` e a terminazione nita.

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Gradiente coniugato - Algoritmo

1. Assegnazione dei dati: A, b , x (0) ; 2. Residuo e direzione iniziale: r (0) = b Ax (0) , z (0) = r (0) ; 3. Fino a convergenza ripetere:
z (k ) Az (k ) b. x (k +1) = x (k ) + k z (k ) c. r (k +1) = r (k ) k Az (k ) T z (k ) Ar (k +1) d. k = T z (k ) Az (k ) (k +1) (k +1) e. z =r + k z ( k ) a. k = z (k ) r (k )
T T

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Gradiente coniugato precondizionato


x = pcg(A,b)
fornisce la soluzione del sistema lineare Ax = b mediante il metodo del gradiente coniugato.

x = pcg(A,b,toll,nmax)
Viene specicata la tolleranza (default tol=1.e-6) e il numero massimo di iterazioni (default nmax=min(N,20)).

x = pcg(A,b,toll,nmax,P)
fornisce la soluzione del sistema lineare precondizionato P 1 Ax = P 1 b .

x = pcg(A,b,toll,nmax,M1,M2)
fornisce la soluzione di P 1 Ax = P 1 b , essendo P = M 1 M 2.

x = pcg(A,b,toll,nmax,M1,M2,x0)
vettore iniziale x0 assegnato dallutente (default x0=zeros(size(b))).

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Gradiente coniugato precondizionato (segue)


[x,flag,relres,iter,resvec] = pcg(A,b,...)
fornisce ulteriori informazioni:
flag

il metodo ha ottenuto la soluzione; dopo nmax iterate non ` e stata raggiunta la soluzione; flag=2 la matrice P ` e mal condizionata; flag=3 due successive iterate erano uguali; flag=4 una delle quantit` a scalari ` e diventata troppo piccola o troppo grande. relres residuo relativo norm(b-A*x)/norm(b) iter numero di iterazioni eettuate resvec vettore dei residui in norma (iterata per iterata) flag=0 flag=1

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Esercizio
Risoluzione del problema del Laplaciano con i metodi iterativi
Costruire la matrice dei coecienti e il termine noto corrispondente alla soluzione del problema (1) con dierenze nite (usare la function dirichlet). Per risolvere il sitema lineare ottenuto applicare i seguenti metodi (usare toll=1.e-5 e nmax=300): metodo di Richardson precondizionato con la fattorizzazione incompleta ( = 1); metodo del gradiente o di massima discesa; metodo del gradiente coniugato; metodo del gradiente coniugato precondizionato con la fattorizzazione incompleta; Confrontare il numero di iterazioni richieste per n = 10.

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Metodi a terminazione nita per matrici qualunque


Se A ` e una matrice non simmetrica, A ` e denita positiva se la matrice simmetrica (A + AT )/2 ` e denita positiva.

Nel caso di matrici non simmetriche o non denite positive si possono usare i seguenti metodi iterativi, che hanno la propriet` a di essere a terminazione nita, ossia in matematica esatta forniscono la soluzione esatta dopo n iterazioni. Funzione gmres cgs bicg bicgstab Metodo Generalized Minimum Residual Method Conjugate Gradients Squared Method BiConjugate Gradients Method BiConjugate Gradients Stabilized Method

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

gmres
x = gmres(A,b)
fornisce la soluzione del sistema lineare Ax = b mediante il metodo gmres.

x = gmres(A,b,restart)
il metodo gmres viene riinizializzato ogni restart iterazioni. Se restart=N o restart=[] il metodo non viene mai riinizializzato.

x = gmres(A,b,restart,toll,nmax)
Viene specicata la tolleranza (default tol=1.e-6) e il numero massimo di iterazioni esterne (default nmax=min(N/restart,10)).

x = gmres(A,b,restart,toll,nmax,P) x = gmres(A,b,restart,toll,nmax,M1,M2)
fornisce la soluzione del sistema lineare precondizionato P 1 Ax = P 1 b o P = M 1 M 2.

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

gmres (segue)
[x,flag,relres,iter,resvec] = gmres(A,b,...)
fornisce ulteriori informazioni:
flag

il metodo ha ottenuto la soluzione; dopo nmax iterate non ` e stata raggiunta la soluzione; flag=2 la matrice P ` e mal condizionata; flag=3 due successive iterate erano uguali; relres residuo relativo norm(b-A*x)/norm(b) iter numero di iterazioni eettuate: iter(1)<=nmax ` e il numero delle iterazioni del ciclo esterno; iter(1)<=restart numero delle iterate interne. resvec vettore dei residui in norma (iterata per iterata) flag=0 flag=1

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Esercizio

Usare la function gmres per risolvere il problema di

Neumann con 10, 20 e 50 punti. Usare la fattorizzazione incompleta provvista da luinc per ottenere la soluzione nel caso di 50 punti.

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

bicg, cgs, bicgstab


x = solver(A,b)
fornisce la soluzione del sistema lineare Ax = b mediante il metodo prescelto: bicg, cgs, bicgstab.

x = solver(A,b,toll,nmax)
Viene specicata la tolleranza (default tol=1.e-6) e il numero massimo di iterazioni (default nmax=min(N,20)).

x = solver(A,b,toll,nmax,P)
fornisce la soluzione del sistema lineare precondizionato P 1 Ax = P 1 b .

x = solver(A,b,toll,nmax,M1,M2)
fornisce la soluzione di P 1 Ax = P 1 b , essendo P = M 1 M 2.

x = solver(A,b,toll,nmax,M1,M2,x0)
vettore iniziale x0 assegnato dallutente (default x0=zeros(size(b))).

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

bicg, cgs, bicgstab (segue)


[x,flag,relres,iter,resvec] = solver(A,b,...)
fornisce ulteriori informazioni:
flag

il metodo ha ottenuto la soluzione; dopo nmax iterate non ` e stata raggiunta la soluzione; flag=2 la matrice P ` e mal condizionata; flag=3 due successive iterate erano uguali; flag=4 una delle quantit` a scalari ` e diventata troppo piccola o troppo grande. relres residuo relativo norm(b-A*x)/norm(b) iter numero di iterazioni eettuate resvec vettore dei residui in norma (iterata per iterata) flag=0 flag=1

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Esercizio

Costruire la matrice: A=gallery(wilk,21); Costruire il termine noto in modo che la soluzione sia il

vettore di componenti tutte uguali a 1; Risolvere con bicgstab usando toll=1e-12 e nmax=15.

Sistemi lineari Lucia Gastaldi Metodi iterativi classici Metodi di Jacobi e di Gauss-Seidel Il metodo di Richardson I metodi del gradiente e del gradiente coniugato Metodi a terminazione nita per matrici qualunque

Esercizio
Costruire la matrice A con i seguenti comandi

load west0479;

A = west0479;

Costruire il termine noto in modo che la soluzione sia il

vettore di componenti tutte uguali a 1; Usare bicgstab come segue (tol=1e-12; nmax=20): [x0,fl0,rr0,it0,rv0] = bicgstab(A,b,tol,nmax); Controllare i valori di fl0 e it0; Plottare il residuo: semilogy(0:0.5:nmax,rv0/norm(b),-o); Usare luinc(A,0) per costruire il precondiziotore; Usare bicgstab come segue: [x1,fl1,rr1,it1,rv1] = bicgstab(A,b,tol,nmax,L,U); Poich eU` e singolare il metodo non converge. Riprovare usando luinc(A,droptol) con droptol=1e-5 e droptol=1e-6. Se fl1=0 plottare il residuo: semilogy(0:0.5:it1,rv1/norm(b),-o);

Potrebbero piacerti anche