11.07.2015 Views

Metodi iterativi per la risoluzione di sistemi lineari

Metodi iterativi per la risoluzione di sistemi lineari

Metodi iterativi per la risoluzione di sistemi lineari

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Corso del<strong>la</strong> scuo<strong>la</strong> <strong>di</strong> dottorato:NUMERICAL METHODS FOR INVERSE PROBLEMS<strong>Meto<strong>di</strong></strong> <strong>iterativi</strong> <strong>per</strong> <strong>la</strong> <strong>risoluzione</strong> <strong>di</strong><strong>sistemi</strong> <strong>lineari</strong>Dottoran<strong>di</strong>:Mario CascettaEfisio CastiNico<strong>la</strong> Cau


IntroduzioneOltre ai meto<strong>di</strong> <strong>di</strong>retti <strong>per</strong> <strong>la</strong> <strong>risoluzione</strong> <strong>di</strong> un sistema lineare, si possono usare i meto<strong>di</strong> <strong>iterativi</strong> chesi <strong>di</strong>mostrano efficienti e stabili anche quando si hanno delle matrici <strong>di</strong> gran<strong>di</strong> <strong>di</strong>mensioni. Scopo <strong>di</strong>questo <strong>la</strong>voro è valutare <strong>la</strong> potenzialità <strong>di</strong> alcuni <strong>di</strong> questi meto<strong>di</strong> al variare dei parametri checaratterizzano il sistema attraverso delle s<strong>per</strong>imentazioni numeriche.<strong>Meto<strong>di</strong></strong> <strong>iterativi</strong>I meto<strong>di</strong> <strong>iterativi</strong> <strong>per</strong> <strong>la</strong> <strong>risoluzione</strong> <strong>di</strong> un sistema lineare generano, partendo da un vettore inizialex(0), una successione <strong>di</strong> vettori definiti x(k) con k = 1,2,..... n, che, fissate determinate ipotesi,converge al<strong>la</strong> soluzione del problema.A <strong>di</strong>fferenza dei meto<strong>di</strong> <strong>di</strong>retti, i meto<strong>di</strong> <strong>iterativi</strong> non richiedono nè <strong>la</strong> mo<strong>di</strong>fica del<strong>la</strong> matrice delsistema nè <strong>la</strong> sua effettiva memorizzazione, ma è sufficiente poter accedere in qualche modo ai suoielementi, risultando partico<strong>la</strong>rmente convenienti nel caso <strong>di</strong> matrici <strong>di</strong> gran<strong>di</strong> <strong>di</strong>mensioni, strutturateo sparse.Agli errori s<strong>per</strong>imentali e <strong>di</strong> arrotondamento, si aggiungono gli errori <strong>di</strong> troncamento, derivanti dalfatto che <strong>la</strong> soluzione cercata deve essere necessariamente approssimata troncando <strong>la</strong> successione<strong>per</strong> un in<strong>di</strong>ce sufficientemente grande.Infine, è possibile ridurre <strong>di</strong> molto il tempo <strong>di</strong> e<strong>la</strong>borazione, eseguendo un minor numero <strong>di</strong>iterazioni in quei casi in cui non sia richiesta un’elevata accuratezza mo<strong>di</strong>ficando il criterio <strong>di</strong>arresto.I meto<strong>di</strong> che verranno ado<strong>per</strong>ati in questa sede sono i seguenti:• Metodo <strong>di</strong> Jacobi;• Metodo <strong>di</strong> Gauss – Seidel;• Metodo del gra<strong>di</strong>ente.Per <strong>la</strong> <strong>risoluzione</strong> <strong>di</strong> <strong>sistemi</strong> <strong>lineari</strong> del tipo Ax=b, si utilizzano dei meto<strong>di</strong> <strong>iterativi</strong> <strong>lineari</strong> estazionari del primo or<strong>di</strong>ne come quelli appena citati ed assumono <strong>la</strong> forma del tipo:x( k+1) ( k )= BxIl sistema considerato è lineare <strong>per</strong>chè lo è <strong>la</strong> re<strong>la</strong>zione che lo esprime, stazionario <strong>per</strong>chè <strong>la</strong> matriceB non cambia all’avanzare dell’iterazione e del primo or<strong>di</strong>ne poiché il vettore x (k+1) <strong>di</strong>pende solo daquello precedente x (k) . E’ opportuno, <strong>per</strong>ò, dare alcune definizioni riguardanti <strong>la</strong> convergenza e <strong>la</strong>consistenza del metodo in esame.+f


Un metodo si <strong>di</strong>ce globalmente convergente se dato un vettore iniziale x (0) <strong>per</strong> ogniche:Mentre si <strong>di</strong>ce consistente se:xlim x k ) − xk→∞( k )( == x ⇒ x( k+ 1)0= xnx ∈ R si haInoltre, va sottolineato che <strong>la</strong> consistenza è una con<strong>di</strong>zione necessaria <strong>per</strong> <strong>la</strong> convergenza e che unmetodo può essere consistente e non convergente, ma non il suo contrario.La convergenza del metodo considerato <strong>di</strong>pende essenzialmente dal<strong>la</strong> matrice B; vi sono, infatti,due teoremi che stabiliscono le con<strong>di</strong>zioni <strong>per</strong> <strong>la</strong> convergenza.1. Un metodo iterativo lineare è convergente se esiste una norma consistente <strong>di</strong> B <strong>per</strong> <strong>la</strong> qualeksi abbia B < 1 che, <strong>per</strong> le proprietà matriciali, comporterebbe e → 0 dove con e siintende l’errore sul<strong>la</strong> soluzione.2. Un metodo iterativo lineare è convergente se e solo se il raggio spettrale del<strong>la</strong> matrice <strong>di</strong>iterazione B è inferiore all’unità ρ ( B)< 1.In linea <strong>di</strong> principio, partendo dall’equazione Ax=b, è opprtuno scrivere <strong>la</strong> matrice A come<strong>di</strong>fferenza <strong>di</strong> due matrici:A = P-Nin cui det( P ) ≠ 0 . Sostituendo all’equazione che <strong>di</strong>venta:( P − N ) x = b Px = Nx + bE infine si trasforma arbitrariamente in un metodo iterativo:x( + ) −1( k )= PNx+ Pk 1 −1( k +1) ( k )Che è una forma analoga a quel<strong>la</strong> in<strong>di</strong>cata in precedenza ( x = Bx + f ).bMetodo <strong>di</strong> JacobiPer prima cosa è necessario scomporre <strong>la</strong> matrice A nel<strong>la</strong> maniera seguente (splitting ad<strong>di</strong>tivo):⎛a⎜⎜ 0A = D − E − F = ⎜ 0⎜⎝ 011a0220000O00 ⎞ ⎛ 0⎟ ⎜0 ⎟ ⎜ − a⎟ −0⎜ M⎟ ⎜a⎠ ⎝−annn11100OOLMO− a0⎞⎛0⎟ ⎜M ⎟ ⎜0⎟ −M ⎜ M⎟ ⎜0⎠ ⎝0Nel caso partico<strong>la</strong>re del metodo <strong>di</strong> Jacobi si considerano le seguenti matrici:− a− a− an−1,nn,n−1O 0 00O12LMOM1n⎞⎟⎟⎟⎟⎠


⎧P= D⎨⎩N= E + FChe portano poi al<strong>la</strong> forma canonica:x( + 1) −1( k )= D( E + F)x+ Dk −1Se invece lo si vuole esprimere in forma <strong>di</strong> coor<strong>di</strong>nate <strong>di</strong>venta:x⎡n= ⎢bi−⎢∑aijxaiij=1⎣ j≠i( k + 1) 1j( k )j⎤⎥⎥⎦bcon i=1,2……nCome ultima osservazione, si può <strong>di</strong>re che, poiché <strong>la</strong> comvergenza è globale, non <strong>di</strong>pende dalvettore iniziale x (0) .Metodo <strong>di</strong> Gauss-SeidelPartendo sempre dallo splitting ad<strong>di</strong>tivo effettuato in precedenza, il metodo <strong>di</strong> Gauss- Seidel pone <strong>la</strong>seguente situazione:⎧P= D − E⎨⎩N= FSostituendo nell’equazione principale porta ad avere:x=−1( ) ) ( kD − E F x) + ( D − E) b( k + 1)−1che <strong>per</strong>mette <strong>di</strong> ricavare x (k+1) risolvendo un sistema triango<strong>la</strong>re inferiore; esprimendo l’equazionein forma <strong>di</strong> coor<strong>di</strong>nate si ha:x⎡i−1n( ) ( ) ⎤k + 1k= ⎢bi−∑aijxj− ∑aijxj ⎥⎦aii⎣ j=1j=i+1( k + 1) 1ii=1,2…….n;Il metodo <strong>di</strong> Gauss Seidel non è parallelizzabile, in quanto <strong>la</strong> componente <strong>di</strong> x (k+1) <strong>di</strong>pende daicomponenti aventi in<strong>di</strong>ce compreso tra 1 e i-1; nonostante ciò, <strong>per</strong>ò, in molte occasioni convergepiù velocemente del metodo <strong>di</strong> Jacobi e con numero <strong>di</strong> iterazioni decisamente inferiore. Non è dettoche i meto<strong>di</strong> <strong>di</strong> Gauss Seidel e Jacobi siano <strong>di</strong>rettamente applicabili a una matrice A, <strong>per</strong>chépotrebbe avere zeri in <strong>di</strong>agonale, <strong>per</strong>tanto sarebbe opportuno effettuare prima qualche cambio <strong>di</strong>riga, inoltre, va aggiunto che <strong>la</strong> convergenza è globale, <strong>per</strong>ciò non <strong>di</strong>pende dal vettore iniziale x (0) .


Metodo del gra<strong>di</strong>ente coniugatoIl metodo del gra<strong>di</strong>ente coniugato è una variante del metodo del gra<strong>di</strong>ente semplice da cui <strong>di</strong>fferisce<strong>per</strong> una scelta più accurata delle cosiddette <strong>di</strong>rezioni <strong>di</strong> <strong>di</strong>scesa, consentendo <strong>di</strong> convergere asoluzione tramite un numero <strong>di</strong> iterazioni molto inferiore al<strong>la</strong> <strong>di</strong>mensione del sistema, utilesoprattutto se si o<strong>per</strong>a con <strong>sistemi</strong> <strong>lineari</strong> <strong>di</strong> <strong>di</strong>mensione estremamente elevata. Per comprenderne <strong>la</strong>teoria, <strong>per</strong>ò è opportuno fare qualche passo in<strong>di</strong>etro e capire, più in generale, da dove nasca ilmetodo del gra<strong>di</strong>ente.Sia A una matrice simmetrica definita positiva e si consideri <strong>la</strong> seguente forma quadratica:1 T Tφ y = y Ay − y 2( ) bTale funzione raggiunge il suo valore minimo nel punto in cui si annul<strong>la</strong> il suo gra<strong>di</strong>ente:∇φ (y)=12Τ( Α + Α ) y - b = Ay - b = 0Si osserva, dunque, che il problema del<strong>la</strong> minimizzazione appena mostrato equivale a trovare <strong>la</strong>soluzione del sistema lineare Ax = b. Nel caso del gra<strong>di</strong>ente semplice, <strong>la</strong> soluzione si trovaminimizzando <strong>la</strong> funzione φ(y)con un metodo iterativo non stazionario del tipo:x( k+1) ( k ) ( k )= x+ α da partire da un vettore iniziale x (0) , lungo le <strong>di</strong>rezioni <strong>di</strong> decrescita d (k) , con passi <strong>di</strong> lunghezza αk.In questo caso, <strong>la</strong> <strong>di</strong>rezione d (k) è quel<strong>la</strong> <strong>di</strong> massima <strong>di</strong>scesa (steepest descent), ossia quel<strong>la</strong> oppostaal<strong>la</strong> <strong>di</strong>rezione del gra<strong>di</strong>ente del<strong>la</strong> funzione φ (y)nel punto x (k) . Nel metodo del gra<strong>di</strong>ente coniugato,invece, si parte dall’assunto <strong>per</strong> cui un vettore x (k) risulta ottimale rispetto ad una determinata<strong>di</strong>rezione p se è rispettata <strong>la</strong> seguente con<strong>di</strong>zione:k( k ) ( k )( x ) φ x( λp)φ ≤ + ∀λ ∈ RIl vettore x (k) è ottimale rispetto a p se e solo se <strong>la</strong> <strong>di</strong>rezione p è ortogonale al residuo r (k) , cioè:( k )pT r = 0Sostituendo nell’equazione principale del<strong>la</strong> funzione φ(y)si avrà <strong>la</strong> situzione seguente:( k ) 1 ( k )( x + λp) = xT ( k )( k ) T( + λp) A( x + λp) − ( x λp) bφ +2Eseguendo i calcoli si arriva ad una forma più semplificata:φ( k )( k )( x + λp) = φ x1 T T 2 T ( k( ) + ( p) Ap λ − ( p) r) λ2


Derivando rispetto a λ e annul<strong>la</strong>ndo <strong>la</strong> derivata si avrà che:dφdλPoiché x (k) è ottimale rispetto a p,( k )TT ( k )( x + λp) = p Apλ− p r( k ) )= 0φ ( x deve avere un minimo <strong>per</strong> λ = 0, che sarebbe unasoluzione banale, mentre imponendo p T r(k) = 0 si avrebbe effettivamente <strong>la</strong> soluzione λ = 0 nonbanale che <strong>di</strong>mostrerebbe <strong>la</strong> tesi. Il problema del metodo del gra<strong>di</strong>ente semplice è che l’ottimalitàdel vettore rispetto ad una certa <strong>di</strong>rezione rimane so<strong>la</strong>mente <strong>per</strong> il primo passo dell’iterazione; con ilgra<strong>di</strong>ente coniugato si vuole fare in modo che l’ottimalità del vettore k-esimo, quin<strong>di</strong> <strong>per</strong> i passisuccessivi al primo, rispetto ad una certa <strong>di</strong>rezione venga ere<strong>di</strong>tata da tutti i successivi elementidel<strong>la</strong> successione.Si suppone <strong>per</strong>ciò, che x (k) sia ottimale rispetto a p, e quin<strong>di</strong> che pT r (k) = 0, e si ponga:( k +1) ( k )x = x + qPerchè anche x (k+1) sia ottimale rispetto a p è necessario che0 =pTr( k+1) T ( k )=pT( r − Aq) = − p AqChe significa che le <strong>di</strong>rezioni p e q devono essere A-ortogonali o A-coniugate; partendo con p (0) =r (0)e considerando <strong>di</strong>rezioni del tipop( k + 1) ( k + 1) ( k )= r− β pkLa con<strong>di</strong>zione necessaria è che p (k+1) e p (k) siano due <strong>di</strong>rezioni A-coniugate, cioè che:si traduce nel<strong>la</strong> con<strong>di</strong>zione β k data da:β( k ) T ( )( p ) Apk=k +1 = 0( k ) T ( k +1)( p ) Ar( k ) T k( )( p ) ApEffettuando una scelta del parametro β k <strong>di</strong> questo tipo si ha che:( i)T ( )( ) App k+1 = 0 i= 1,2…..,k-1cioè che <strong>la</strong> <strong>di</strong>rezione p (k+1) è A-coniugata con tutte le <strong>di</strong>rezioni generate precedentemente. Il fattoche il vettore x (k+1) seguente:con α k dato dal<strong>la</strong> seguente espressione:x( k +1) ( k ) ( k )= x+ α pkα =kpp( k ) T ( k )r( k ) T ( k )Ap


sia ottimale rispetto alle <strong>di</strong>rezioni p(i), con i = 0, . . . , k, significa che lungo tali <strong>di</strong>rezioni non èpossibile far <strong>di</strong>minuire ulteriormente il valore del<strong>la</strong> funzione obiettivo φ (y), e giustifica il fatto chel’algoritmo converga al<strong>la</strong> soluzione esatta in un numero finito <strong>di</strong> iterazioni.RisultatiI risultati riportati nei grafici seguenti vogliono porre a confronto i tre meto<strong>di</strong> ado<strong>per</strong>ati, che siricordano essere il metodo <strong>di</strong> Jacobi, <strong>di</strong> Gauss- Seidel, e del gra<strong>di</strong>ente coniugato. Le matrici <strong>di</strong>prova (simmetriche, definite positive) sono generate dal seguente comando presente in Mat<strong>la</strong>b:A = sprandsym(n,density,rc,kind)Dove con n si in<strong>di</strong>ca <strong>la</strong> <strong>di</strong>mensione del<strong>la</strong> matrice, con density <strong>la</strong> densità (ossia <strong>la</strong> quantità <strong>di</strong> valori<strong>di</strong>versi da zero presenti all’interno del<strong>la</strong> matrice), il fattore rc, che rappresenta il reciproco delnumero <strong>di</strong> con<strong>di</strong>zionamento (in<strong>di</strong>ca, in pratica, quanto <strong>la</strong> matrice sia <strong>di</strong>agonale) ed, infine, ilparametro kind, che posto uguale ad 1 consente <strong>di</strong> generare una matrice simmetrica definitapositiva.Fatto ciò, si sono costruiti gli algoritmi caratterizzati da un ciclo while, al cui interno è statoimplementato un criterio <strong>di</strong> arresto <strong>per</strong> ottenere <strong>la</strong> convergenza che si verifica quando <strong>la</strong> <strong>di</strong>fferenzadel<strong>la</strong> norma del<strong>la</strong> soluzione e del residuo con quelle ottenute nell’iterazione precedente risultainferiore ad un determinato valore.Nel caso dei meto<strong>di</strong> <strong>iterativi</strong> <strong>per</strong> <strong>la</strong> <strong>risoluzione</strong> <strong>di</strong> <strong>sistemi</strong> <strong>lineari</strong>, al passo k è possibile ottenere unamaggiorazione <strong>per</strong> l’errore e (k) = x (k) − x in termini del vettore residuo r (k) =b−Ax (k) . Eseguendoalcuni passaggi matematici, si arriva ad un criterio <strong>di</strong> arresto espresso come segue:( )r kb≤ τPoiché potrebbe verificare una non convergenza del metodo, si è deciso <strong>di</strong> fissare un numeromassimo <strong>di</strong> iterazioni, al fine <strong>di</strong> evitare un loop infinito inserendo un ciclo if dove si imponel’arresto imme<strong>di</strong>ato al su<strong>per</strong>amento <strong>di</strong> un determinato numero <strong>di</strong> cicli.


Passando alle s<strong>per</strong>imentazioni numeriche, si è partiti fissando <strong>la</strong> <strong>di</strong>mensione del<strong>la</strong> matrice (n=100),ed il fattore rc pari a 0,9 (matrice fortemente <strong>di</strong>agonale) e si sono confrontati i tre meto<strong>di</strong> (fig. 1).N° <strong>di</strong> iterazioni1614121086420n=100 rc=0,9DJacobiGauss-SiedelGrad. Coniug.0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9dFigura 1: Numero <strong>di</strong> iterazioni necessarie al variare del<strong>la</strong> densità.Nel<strong>la</strong> figura 1 si è osservato che il numero <strong>di</strong> iterazioni non cambia sostanzialmente conl’aumentare del<strong>la</strong> densità del<strong>la</strong> matrice che spazia nell’intervallo [0,1], con il metodo <strong>di</strong> Gauss-Seidel che richiede un numero <strong>di</strong> iterazioni inferiore rispetto agli altri due.Nel<strong>la</strong> figura 2 si è fatto variare il parametro rc (che in pratica rappresenta il reciproco del numero <strong>di</strong>con<strong>di</strong>zionamento), mentre si sono mantenute costanti <strong>la</strong> densità e <strong>la</strong> <strong>di</strong>mensione del<strong>la</strong> matrice. Si ènotato che all’aumentare <strong>di</strong> rc, il numero <strong>di</strong> iterazioni decresce sensibilmente <strong>per</strong> tutti i meto<strong>di</strong>, macon il metodo <strong>di</strong> Jacobi che, <strong>per</strong> valori bassi, non arriva a convergenza e <strong>per</strong> valori maggioririchiede sempre un numero <strong>di</strong> iterazioni su<strong>per</strong>iore.N° <strong>di</strong> iterazioni1009080706050403020100n =100; d = 0,5JacobiGauss-SeidelGra<strong>di</strong>ente coniugato0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1Parametro rcFigura 2


Nel<strong>la</strong> figura 3 si è mo<strong>di</strong>ficata <strong>la</strong> <strong>di</strong>mensione del<strong>la</strong> matrice <strong>di</strong> partenza, osservando come il numero<strong>di</strong> iterazioni tenda a salire fino ad appiattirsi.30d = 0,3 rc = 0,7N° <strong>di</strong> iterazioni25201510500 100 200 300 400 500 600Dimensione matriceFigura 3JacobiGauss-SiedelGrad. Coniug.Infine si sono provati i tre meto<strong>di</strong> ipotizzando una situazione partico<strong>la</strong>re: da un <strong>la</strong>to un valore moltobasso del<strong>la</strong> densità (quin<strong>di</strong> alta sparsità del<strong>la</strong> matrice) e, contemporaneamente, un basso valore <strong>di</strong> rcche comporta una <strong>di</strong>agonalizzazione minore del<strong>la</strong> matrice stessa (figura 4).N° <strong>di</strong> iterazioni12001000800600400200d = 0,1 rc = 0,01JacobiGauss-SiedelGrad. Coniug.00 50 100 150 200 250 300 350 400 450 500Dimensione matrice (n)Figura 4I risultati sono mostrati nel<strong>la</strong> figura 3 sopra, dove si nota come il metodo <strong>di</strong> Jacobi abbia un picco <strong>di</strong>iterazioni richieste <strong>per</strong> <strong>la</strong> <strong>risoluzione</strong> del problema <strong>per</strong> matrici con <strong>di</strong>mensione intorno a 50, mentre<strong>per</strong> valori più elevati il numero <strong>di</strong> iterazioni tende a decrescere lentamente. Nel caso degli altri due,si parte con un numero <strong>di</strong> iterazioni limitato <strong>per</strong> matrici piccole, mentre, al crescere del<strong>la</strong><strong>di</strong>mensione delle stesse, cresce numero <strong>di</strong> iterazioni fino a stabilizzarsi con valori più bassi nel casodel metodo del gra<strong>di</strong>ente coniugato.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!