Sei sulla pagina 1di 19

Accelerazione del metodo Rayleigh

Quotient Inesatto per il problema


parziale agli autovalori di matrici
sparse di grandi dimensionii

Marcat Alex

12 gennaio 2017
ii
Indice

1 Introduzione 1

2 Il Calcolo degli Autovalori 3


2.1 Il metodo della Potenza Inversa . . . . . . . . . . . . . . . . . 3
2.2 La Rayleigh Quotient Iteration . . . . . . . . . . . . . . . . . 4
2.3 Implementazione Matlab della RQI . . . . . . . . . . . . . . . 5

3 Precondizionatori e loro utilizzo 9


3.1 Precondizionatori . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2 Applicazione del Precondizionatore . . . . . . . . . . . . . . . 10

iii
iv INDICE
Capitolo 1

Introduzione

Il problema del calcolo numerico degli autovalori di una matrice `e di notevo-


le importanza da un punto di vista applicativo, e presenta diversi approcci
a seconda di quanti e quali autovalori vogliamo calcolare e, soprattutto, a
seconda delle caratteristiche delle matrici in esame.
In questa Tesi ci occuperemo, in particolare, di matrici (in generale di grandi
dimensioni) sparse, simmetriche e definite positive. Tali matrici infatti of-
frono sia una serie di particolari semplificazioni e difficolt`a, e sono inoltre di
notevole importanza nelle applicazioni: si pensi ad esempio al fatto che
In questa Tesi ci focalizzeremo in particolare sul calcolo degli autovalori pi` u
piccoli (e relativi autovettori) di tali matrici usando il metodo della Rayleigh
Quotient Iteration, ed entreremo nel dettaglio di come velocizzare uno dei
passaggi critici, ossia la risoluzione di un sistema lineare, mediante lutilizzo
di un opportuno precondizionatore.

1
2 CAPITOLO 1. INTRODUZIONE
Capitolo 2

Il Calcolo degli Autovalori

2.1 Il metodo della Potenza Inversa


Quando si tratta di calcolare lautovalore pi`
u grande di una matrice generica
A diagonalizzabile, il metodo iterativo pi`
u semplice a cui si pu`o pensare `e il
Metodo della Potenza, definito, partendo da un vettore iniziale x0 , k N

xk+1 = Axk (2.1)


1

In modo naturale da queste considerazioni possiamo dedurre il Metodo della


Potenza Inversa, in cui semplicemente si sostituisce A1 in luogo di A in
2.1 . Con tale sostituzione literazione ci restituir`a lautovettore relativo
allautovalore pi`u piccolo della matrice, essendo gli autovettori della matrice
inversa gli stessi della matrice di partenza, e come autovalori gli inversi dei
corrispondenti autovalori di A.
La complessit`a computazionale, in assenza di particolari strutture sulla
matrice, `e dellordine O(n3 ) [3].

Se ora noi consideriamo, in luogo della matrice A, la matrice A 1n ,


literazione del Metodo della Potenza Inversa ci porter`a allautovalore pi`
u vi-
cino a . Quindi tale metodo pu`o essere utilizzato, in generale, per calcolare
un qualunque autovalore della matrice A, a patto di poterne conoscere cono-
scere vagamente lubicazione sul piano complesso (ci`o `e fattibile ad esempio
1
In realt`
a nelle implementazioni, onde evitare problemi di under/overflow, il vettore
viene normalizzato ad ogni iterazione (ossia si pone xk = xk / kxk k)

3
4 CAPITOLO 2. IL CALCOLO DEGLI AUTOVALORI

tramite i teoremi di Gheshgorin).


Queste considerazioni sono tuttavia al di fuori degli scopi di questa Tesi.

2.2 La Rayleigh Quotient Iteration


Ora `e nostro interesse cercare un metodo migliore in termini di velocit`a
di convergenza rispetto al Metodo delle Potenze Inverse precedentemente
descritto.
Definiamo preliminarmente il quoziente di Rayleigh, strumento fondamentale
per il metodo che descriveremo, e ne indicheremo alcune barilari propriet`a:

DEF 2.2.1. Data una matrice A simmetrica ed un vettore v si definisce il


Quoziente di Rayleigh di v rispetto ad A come

v T Av
A (v) =
vT v
` immediato notare che se v `e autovettore di A, il suo Quoziente di
E
Rayleigh risulta essere proprio il relativo autovalore, in quanto essendo Av =
cv
v T Av v T cv vT v
A (v) = T = T = c T = c
v v v v v v
Si pu`o inoltre verificare [1] che il Quoziente di Rayleigh `e omogeoneo ri-
spetto alla moltiplicazione per scalari, invariante per traslazioni e limitato a
[min , max ].
Inoltre, se un vettore `e sufficientemente vincino allautovettore, il Quo-
ziente di Rayleigh `e similmente vicinino allautovalore (per continuit`a). Pert
tale motivo, ha senso utilizzare proprio il Quoziente di Rayleigh come
nel Metodo della Potenza Inversa per convergere pi` u velocemente. Lidea
di questo metodo `e inoltre di aggiornare ad ogni iterazione la matrice
utilizzata:
xk+1
xk+1 = (A k 1n )1 xk xk+1 = k+1 = A (xk+1 ) (2.2)
kxk+1 k

Da [1] dimostriamo che la convergenza di tale metodo `e cubica (noi


limitandoci tuttavia al caso reale e simmetrico):
2.3. IMPLEMENTAZIONE MATLAB DELLA RQI 5

TEOR. 2.2.1. Sia A matrice simmetrica e xk v1 , autovettore per lau-


tovalore 1 per k , allora
kxk+1 v1 k
1
kvk x1 k3
oppure
kxk+1 v1 k
kvk x1 k3
per k sufficientemente grande.
Dimostrazione. Sia K1 lautospazio relativo allautovalore 1 , e supponiamo
senza perdere di generalit`a che xk 6= v1 k N. Quindi A (xk ) 6= 1 .
Quindi B = Ak 1n `e non singolare. Osserviamo quindi che sia A che B 1 si
comportano come moltiplicazione per scalare sullo spazio K1 (per definizione
stessa di autospazio). Di conseguenza, se consideriamo le proiezioni su K1
wi = prKi (xi ), se w0 `e proporzionale a v1 , allora lo saranno tutti i v1 i N.
Pertanto,  > 0 i t.c. xi `e proporzionale a v1 + u, dove u `e un vettore
unitario ortogonale allo spazio K1 . Per la stazionariet`a del Quoziente di
Rayleigh per matrici simmetriche,
i 1 = 2 uT A 1 u + O(4 )
Ora, per 2.2 xi+1 `e proporzionale a (A i 1n )1 vi . Applicando queste
informazioni otteniamo:
(A i 1n )1 (v1 + u) = (1 i )1 v1 + (1 i )(A i 1n )1 u
 

= (1 i )1 v1 3 uT (A 1 )u(A i 1n )1 u + O(5 )
 

Ora, posto = min |1 j |, il minimo della differenza fra 1 e gli altri


1
autovalori, possiamo stimare (A i 1n ) u 2/.

Da questo segue che la convergenza `e cubica.

2.3 Implementazione Matlab della RQI


Nellimplementazione di 2.2, naturalmente, non ha senso calcolare linversa
della matrice, a maggior ragione in quanto essa `e diversa ad ogni iterazione.
Equivalentemente, invece, risolveremo il sistema linerare
(A k 1n )xk+1 = xk (2.3)
6 CAPITOLO 2. IL CALCOLO DEGLI AUTOVALORI

La teoria teoria dei sistemi lineari ci fornisce svariati metodi per la risoluzio-
ne, e la scelta in questo caso `e dettata dal tipo di matrici su cui lavoreremo,
ossia le matrici sparse. La scelta vira, a causa di questo, su un metodo itera-
tivo: infatti, in generale, per matrici sparse le fattorizzazioni comunemente
adottate (ad esempio la fattorizzazione LU ) restituiscono matrici dense, per-
dendo quindi i vantaggi in termini di memoria occupata che si hanno nella
memorizzazione delle sparse.
La matrice A sigmak 1n `e in generale indefinita, ma permane simmetrica
essendo A simmetrica, quindi `e scelta naturale optare per il metodo MINRES.

function [ rho,v,k ] = sraylq( A, v0, tol, maxit )


%SRAYLQ RQI for sparse matrix WITHOUT preconditioning.

v=normal(v0);
y=A*v;
rho=v'*y;
k=1;
ide=speye(size(A,1));
test=1;

while test>tol && k<=maxit


[w,~]=minres(A-rho.*ide,v,tol,maxit);
nw=norm(w);
if nw==0 %necessary to avoid getting NaN result
break;
end
rho=rho+(v'*w/(nw2));
v=w/nw;
test=norm(A*w-rho*w)/nw;
k=k+1;
end
end
2.3. IMPLEMENTAZIONE MATLAB DELLA RQI 7

IRQI iter Inner Solver iter Rel Residual 1 500


2.854821e-02 2 500 1.688170e-04 3 500 3.719694e-
05 4 500 1.759423e-05 5 500 7.035963e-06 6 500
4.055707e-06 7 500 1.757283e-06 8 500 1.095516e-
06 9 500 4.888555e-07 10 500 3.090151e-07 11 500
1.374699e-07 12 500 8.658212e-08 IRQI converged to
0.156261 with relative residual 8.658212e-08 in 12 ite-
rations. Eigs yelds 0.156261, IRQI 0.156261 The ei-
genvectors differs for 2.541550e-06 IRQI iter Inner
Solver iter Rel Residual 1 500 1.332570e-02 2 500
2.020517e-04 3 500 7.392925e-06 4 500 6.280369e-07
5 500 2.275172e-08 IRQI converged to 0.079149 with
relative residual 2.275172e-08 in 5 iterations. Eigs
yelds 0.079149, IRQI 0.079149 The eigenvectors dif-
fers for 2.045944e-07 IRQI iter Inner Solver iter Rel
Residual 1 500 1.561170e-02 2 500 5.840425e-06 3 500
1.897464e-08 IRQI converged to 0.012422 with rela-
tive residual 1.897464e-08 in 3 iterations. Eigs yelds
0.012422, IRQI 0.012422 The eigenvectors differs for
2.562599e-07

Come si nota la convergenza, seppur in realt`a peggiore rispetto a quella at-


tesa, avviene, ma MINRES giunge sempre alla massima iterazione possibile
` sensato supporre che,
per resistuire la soluzione con precisione sufficiente. E
aumentando il numero di iterazioni, la convergenza dellIRQI sarebbe mi-
gliore. Tuttavia questa non `e una strategia conveniente, in quanto non si
avrebbe un effettivo miglioramento di tempi e complessit`a di calcolo, ma li si
sposterebbe semplimente su MINRES. Sar`a nostro obiettivo ridurre notevol-
mente il numero di iterazioni di MINRES necessarie ad ottenere il risultato
voluto. Ci`o verr`a attuato introducendo il concetto di Precondizionatore ed
applicandone uno opportuno alla matrice in esame.
8 CAPITOLO 2. IL CALCOLO DEGLI AUTOVALORI
Capitolo 3

Precondizionatori e loro utilizzo

3.1 Precondizionatori
Lidea alla base `e quella di avere una matrice P t.c. P 1 A abbia un numero
di condizionamento molto inferiore, e risulti quindi pi`u facilmente risolvibile
numericamente.
La scelta del precondizionatore viene effettuata cercando di ottenere il miglio-
ramento maggiore nella velocit`a di convergenza con la minima complessit`a
possibile per il calcolo del precondizionatore stesso: come precondizionato-
ri estremi abbiamo infatti 1n (minor complessit`a possibile, ma ovviamente
nessun guadagno, essendo la stessa matrice di partenza) e A1 (massimo gua-
dagno teoricamente, essendo P 1 A = 1n , ma calcolare A1 ha complessit`a
maggiore che risolvere il sistema stesso).
Una buona scelta di precondizionatore sar`a generalmente un matrice tale che
il numero di condizionamento 2 (P 1 A)  2 A, cosa accade appunto quan-
do P 1 A1 [2]
Possiamo dare un sistema precondizionato:

DEF 3.1.1. Data una matrice P ed il sistema Ax = b, si definisce il sistema


precondizionato come
P 1 Ax = P 1 b

DEF 3.1.2. Data una matrice P ed il sistema Ax = b, si definisce il sistema


precondizionato come

AP 1 y = b risolvendo poi P x = y

9
10 CAPITOLO 3. PRECONDIZIONATORI E LORO UTILIZZO

Ovviamente le soluzioni del sistema originario e del sistema precondizio-


nato sono esattamente le stesse.

Un primo precondizionatore tipicamente utilizzato `e la fattorizzazione in-


completa di Cholesky.
Partiamo da definire cos`e la fattorizzazione di Cholesky:

DEF 3.1.3. Si dice fattorizzazione di Cholesky di una matrice A una fatto-


rizzazione tale che A = LLT , dove L `e triangolare inferiore.

Lalgoritmo per ricavare tale fattorizzazione `e possibile utilizzare una ver-


sione modificata dellEliminazione di Gauss, e si pu`o provare che la sua com-
plessit`a `e met`a di quella necessaria a calcolare la decomposizione LU . [3]
Per matrici sparse possiamo tuttavia ricorrere alla fattorizzazione incompleta:

DEF 3.1.4. Data A simmetrica e definita positiva, si definisce fattorizza-


zione incompleta di Cholesky una fattorizzazione del tipo A = KK T + E,
dove E `e una matrice simmetrica associata allerrore sulla fattorizzazione
incompleta.

La matrice K `e vicina alla matrice L corrispondente alla fattorizzazione


completa, ma ha il vantaggio (contrariamente ad L ed in generale alle fat-
torizzazioni tipo LU ) di essere anchessa sparsa. Un metodo comunemente
usato, ad esempio, per calcolare la fattorizzazione incompleta consiste pro-
prio nel calcolare la fattorizzazione completa salvo porre le entrate 0 se le
corrispondenti entrate di A sono uguali a 0.

3.2 Applicazione del Precondizionatore


Procediamo quindi a modificare il nostro codice per introdurre lutilizzo del
precondizionatore P = KK T della fattorizzazione incompleta di Cholesky:

function [ rho,v,k,sol k,sol res,k res,t cpu ] = ic sraylq( A,v0,tol,maxit )

v=normal(v0);
y=A*v;
rho=v'*y;
N=size(A,1);
3.2. APPLICAZIONE DEL PRECONDIZIONATORE 11

warning('off','MATLAB:minres:tooSmallTolerance');

sol k=zeros(maxit,1);
sol res=zeros(maxit,1);
k res=zeros(maxit,1);
t cpu=0;

MIN maxit=200; %maximum number of iterations for minres


MIN tol=10-3; %starting tolerance for min res, adjusted when we have better results of
k=1;
ide=speye(N);
t=norm(v);
c=1;

t temp=cputime;

OPT.droptol=1e-3;
OPT.type='ict';
L=ichol(A,OPT);

while k==1 | | (k res(k-1)>tol && k<=maxit)


[w,flag,m res,m k]=minres(A-rho.*ide,v,MIN tol,MIN maxit,L,L');
t=norm(w);
sol k(k)=m k;
sol res(k)=m res;
nrho=rho;
rho=rho+(v'*w/(t2));
k res(k)=norm(A*w-rho*w)/t;
if k~=1 && k res(k)>k res(k-1)
rho=nrho;
warning('Stagnated');
break;
end
v=w/t;
if k res(k)<MIN tol*10
MIN tol=max([MIN tol *(10(-c)),k res(k)*(10-3),10-8]);
c=c+1;
end
k=k+1;
end
k=k-1;
t cpu=cputime-t temp;

end

Introducendo il precondizionatore il miglioramento nella convergenza di MIN-


12 CAPITOLO 3. PRECONDIZIONATORI E LORO UTILIZZO

RES (e nelle prestazioni complessive quindi dellalgoritmo IRQI) `e netto.


Utilizzando infatti questo codice sulla medesima matrice e medesimi vettori
iniziali di 2.3 otteniamo in output:
3.2. APPLICAZIONE DEL PRECONDIZIONATORE 13

Matrix HB/494 bus

Tolerance for the eigs function: 5.000000e-04


Tolerance for IRQI algorithm 1.000000e-07
Maximum numer of iterations for IRQI 20

Tempo Calcolo autovalori Eigs: 0.015625


Incomplete Cholesky Preconditioner
IRQI iter Inner Solver iter Rel Residual
1 40 1.932552e-02
2 30 6.960492e-06
3 50 3.380209e-13
IRQI converged to 0.187771 with relative residual 3.380209e-13 in 3 itera-
tions, in 0.315625 seconds
Eigs yelds 0.187771, IRQI 0.187771
The eigenvectors differs for 1.050489e-06
IRQI iter Inner Solver iter Rel Residual
1 59 1.010152e-01
2 27 6.874008e-03
3 30 1.946163e-06
4 85 2.135642e-12
IRQI converged to 0.173283 with relative residual 2.135642e-12 in 4 itera-
tions, in 0.615625 seconds
Eigs yelds 0.173283, IRQI 0.173283
The eigenvectors differs for 5.005709e-06
IRQI iter Inner Solver iter Rel Residual
1 48 2.689382e-02
2 25 1.153363e-05
3 44 3.190771e-13
IRQI converged to 0.156261 with relative residual 3.190771e-13 in 3 itera-
tions, in 0.120001 seconds
Eigs yelds 0.156261, IRQI 0.156261
The eigenvectors differs for 3.905321e-09
IRQI iter Inner Solver iter Rel Residual
1 49 1.116215e-01
2 16 7.428534e-03
3 20 1.892483e-06
4 52 3.455491e-09
IRQI converged to 0.079149 with relative residual 3.455491e-09 in 4 itera-
tions, in 0.515625 seconds
Eigs yelds 0.079149, IRQI 0.079149
The eigenvectors differs for 1.700629e-12
IRQI iter Inner Solver iter Rel Residual
1 34 8.575636e-02
2 14 6.040293e-03
3 19 1.797878e-06
14 CAPITOLO 3. PRECONDIZIONATORI E LORO UTILIZZO

Notiamo immediatamente che MINRES non ha mai dovuto utilizzate tutte


le iterazioni a disposizione, ma `e stato sufficiente in media utilizzarne appena
una quarantina.
Bibliografia

[1] B. N. Parlett. The rayleigh quotient iteration and some generalizations


for nonnormal matrices. Mathematics of Computation, 28(127):679693,
July 1974.

[2] Cristina Rolli. Il precondizionamento di un sistema linea-


re. http://profs.scienze.univr.it/~caliari/aa1112/calcolo_
scientifico/precondizionatore.pdf.

[3] Lloyd N. Trefethen and David Bau. Numerical Linear Algebra. SIAM,
1997.

15