• Non ci sono risultati.

Calcolo di autovalori e autovettori

N/A
N/A
Protected

Academic year: 2021

Condividi "Calcolo di autovalori e autovettori"

Copied!
20
0
0

Testo completo

(1)

Calcolo di autovalori e autovettori

Alvise Sommariva Universit`a degli Studi di Padova

(2)

Autovalori

Il problema del calcolo degli autovalori di una matrice quadrata A di ordine n consiste nel trovare gli n numeri (possibilmente

complessi) λ dettiautovalorie n vettori x non nulli detti

autovettoritali che

Ax = λx , x 6= 0 (1)

Si osservi che a seconda delle esigenze

I talvolta `e richiestosolamente il calcolo di alcuni autovalori(ad

esempio quelli di massimo modulo, per determinare lo spettro della matrice),

I talvolta si vogliono determinare tutti gli n autovalori in C.

(3)

Autovalori

Per semplicit`a, dopo i teoremi di localizzazione di Gershgorin,

mostreremo solo un metodo della prima classe (metodo delle potenze) e citeremo la routine Matlab eig per la seconda classe, rimandando per completezza alla monografia di Saad o a manuali di algebra lineare [2].

Nota.

Una interessante applicazione `e l’algoritmo diPageRank [3], [11],

(4)

Un esempio

Il comando eig permette di trovare tutti gli autovalori e gli autovettori di una matrice.

>> h e l p e i g

e i g E i g e n v a l u e s and e i g e n v e c t o r s .

E = e i g( X ) is a vector c o n t a i n i n g the e i g e n v a l u e s of a square m a t r i x X . [ V , D ] = e i g( X ) p r o d u c e s a d i a g o n a l matrix D of e i g e n v a l u e s and a f u l l m a t r i x V w h o s e c o l u m n s are the c o r r e s p o n d i n g e i g e n v e c t o r s so t h a t X*V = V*D . . . . . >> f o r m a t l o n g e >> A =[1 2 3 ; 4 5 6 ; 7 8 9 ] A = 1 2 3 4 5 6 7 8 9 >> [ autovettori , a u t o v a l o r i ]=e i g( A ) ; >> a u t o v a l o r i=d i a g( a u t o v a l o r i ) a u t o v a l o r i = 1 . 6 1 1 6 8 4 3 9 6 9 8 0 7 0 4 e+01 −1.116843969807043 e+00 −1.303677726474702 e−15 >> a u t o v e t t o r i % c o l o n n a i −s i m a = a u t o v e t t o r e d i a u t o v a l o r e i −s i m o a u t o v e t t o r i =

−2.319706872462862 e−01 −7.858302387420671 e−01 4 . 0 8 2 4 8 2 9 0 4 6 3 8 6 3 6 e−01 −5.253220933012336 e−01 −8.675133925662833 e−02 −8.164965809277260 e−01 −8.186734993561815 e−01 6 . 1 2 3 2 7 5 6 0 2 2 8 8 1 0 0 e−01 4 . 0 8 2 4 8 2 9 0 4 6 3 8 6 2 5 e−01 >>

(5)
(6)

Teoremi di Gershgorin

In questo paragrafo mostriamo un teorema di localizzazione di autovalori dovuto a Gershgorin (cf. [2, p.76], [13]).

Teorema (Primo teorema di Gershgorin)

Gli autovalori di una matrice A = (ai ,j) di ordine n sono tutti

contenuti nell’unione dei cerchi di Gershgorin

Ki = {z ∈ C : |z − ai ,i| ≤

n X

j =1,j 6=i |ai ,j|}

(7)

Teoremi di Gershgorin

Esempio

Vediamo quale esempio la matrice

A =   15 −2 2 1 10 −3 −2 1 0   (2)

Il primo teorema di Gershgorin stabilisce che gli autovalori stanno nell’unione dei cerchi di Gershgorin

K1 = {z ∈ C : |z − 15| ≤ | − 2| + |2| = 4}

K2 = {z ∈ C : |z − 10| ≤ |1| + | − 3| = 4}

(8)

Teoremi di Gershgorin

Figura : Cerchi di Gershgorin della matrice A definita in (4)

In effetti gli autovalori sono:

>> f o r m a t s h o r t >> A =[15 −2 2 ; 1 10 −3; −2 1 0 ] ; >> a u t o v a l o r i=e i g( A ) a u t o v a l o r i = 0 . 5 1 2 1 1 4 . 1 0 2 6 1 0 . 3 8 5 4 >>

(9)

Metodo delle potenze

Ilmetodo delle potenze `e stato suggerito nel 1913 da Muntz ed `e particolarmente indicato per il calcolo dell’autovalore di massimo modulo di una matrice.

Sia A una matrice quadrata di ordine n con

I n autovettori x1, . . ., xn linearmente indipendenti,

I autovalori λ1, . . ., λn tali che

(10)

Metodo delle potenze

Valgono i seguenti risultati (cf. [4], p. 951).

I Una matrice A `e diagonalizzabile se e solo se possieden

autovettori linearmente indipendenti.

I Equivalentemente, una matrice A `e diagonalizzabile se e

solo se esiste una matrice S invertibile e una matrice Λ diagonale, tali che

A = S−1ΛS .

I Se tutti gli autovalori di A sono distintila matrice `e

diagonalizzabile; l’opposto `e ovviamente falso (si pensi alla matrice identica).

I Una matrice simmetrica `e diagonalizzabile. L’opposto `e

ovviamente falso, visto che la matrice A =  15 0 1 10  (4) `

e diagonalizzabile visto che ha tutti gli autovalori distinti ma

non `e simmetrica.

(11)

Metodo delle potenze

Metodo (Potenze) Sia t0∈ Rn definito da t0 = n X i =1 αixi, α1 6= 0

Il metodo delle potenze genera la successione y0= t0

(12)

Metodo delle potenze

Teorema

Sia A `e una matrice quadrata diagonalizzabile avente autovalori λk

tali che

|λ1| > |λ2| ≥ . . . ≥ |λn|.

Siano uk 6= 0 autovettori relativi all’autovalore λk, cio`e

Auk = λkuk. Sia

y0=X

k

αkuk, α1 6= 0.

La successione {ys} definita da ys+1 = Ays converge ad un vettore

parallelo a u1 e che il coefficiente di Rayleigh (relativo al prodotto

scalare euclideo) converge a λ1 cio`e

ρ(ys, A) :=

(ys, Ays)

(ys, ys)

→ λ1. (5)

(13)

Metodo delle potenze

Nota.

Il metodo converge anche nel caso in cui λ1 = . . . = λr

per r > 1, tuttavia non `e da applicarsi quando l’autovalore di

modulo massimo non `e unico.

Nota.

In virt´u di possibili underflow e underflow si preferisce normalizzare

il vettore yk precedente definito. Cos`ı l’algoritmo diventa

uk = Atk−1

tk = uβkk, βk = kukk2

lk = ρ(tk, A)

(6)

(14)

Metodo delle potenze inverse

Una variante particolarmente interessante del metodo delle potenze

`e stata scoperta da Wielandt nel 1944 [9] ed e’ particolarmente

utile nel caso in cui A sia una matrice quadrata con n autovettori linearmente indipendenti,

|λ1| ≥ |λ2| ≥ . . . > |λn| > 0. (7)

e si desideri calcolare ilpi´u piccolo autovalore in modulo, cio`e

λn, applicando il metodo delle potenze ad A−1.

(15)

Metodo delle potenze inverse

Si ottiene cos´ı la successione {tk} definita da

Auk = tk−1

tk = uβkk,

βk = kukk2

e convergente ad un vettore parallelo a xn. La successione di

coefficienti di Rayleigh `e tale che

ρ(tk, A−1) := (tk, A−1tk) (tk, tk) = (tk, uk+1) (tk, tk) → 1/λn. (8)

da cui `e immediato calcolare λn, minimo autovalore in modulo di

(16)

Il metodo delle potenze in Matlab

Partiamo con una versione semplice metodo potenze del metodo delle potenze

f u n c t i o n [ lambda1 , x1 , niter , err ]= m e t o d o _ p o t e n z e ( A , z0 , toll , nmax )

% INPUT :

% A : MATRICE DI CUI VOGLIAMO CALCOLARE L ’ AUTOVALORE DI MASSIMO MODULO. % z 0 : VETTORE I N I Z I A L E (NON NULLO) .

% t o l l : TOLLERANZA .

% nmax : NUMERO MASSIMO DI ITERAZIONI . % OUTPUT :

% l a m b d a 1 : VETTORE DELLE APPROSSIMAZIONI DELL ’ AUTOVALORE DI MASSIMO MODULO. % x1 : AUTOVETTORE RELATIVO ALL ’ AUTOVALORE DI MASSIMO MODULO.

% n i t e r : NUMERO DI ITERAZIONI .

% e r r : VETTORE DEI RESIDUI PESATI RELATIVI A ” l a m b d a 1 ” . % TRATTO DA QUARTERONI−SALERI , ”MATEMATICA NUMERICA” , p . 1 8 4 . %

\begin{lstlisting } [ frame=single ] q=z0 /norm( z0 ) ; q2=q ; err = [ ] ; l a m b d a 1 = [ ] ; res=t o l l +1; n i t e r =0; z=A*q ;

w h i l e ( res >= toll & niter <= nmax ) q=z /norm( z ) ; z=A*q ; lam=q ’ * z ; x1=q ;

z2=q2 ’* A ; q2=z2/norm( z2 ) ; q2=q2 ’ ; y1=q2 ; c o s t h e t a=a b s( y1 ’* x1 ) ; n i t e r=n i t e r +1; res=norm( z−lam*q ) / costheta ;

err =[ err ; res ] ; l a m b d a 1 =[ l a m b d a 1 ; lam ] ; end

(17)

Il metodo delle potenze in Matlab: esempio

Vediamo il caso della matrice diagonalizzabile (autovalori distinti!)

A =  1 2 0 10  , in cui il metodo funziona rapidamente (λmax = 10).

>> A =[1 2 ; 0 1 0 ] ; [ lambda1 , x1 , niter , err ]= m e t o d o _ p o t e n z e ( A , [ 1 ; 3 ] , 1 0 ˆ ( − 8 ) , 1 5 ) l a m b d a 1 = 9 . 9 7 7 9 e+000 9 . 9 9 7 9 e+000 9 . 9 9 9 8 e+000 1 . 0 0 0 0 e+001 1 . 0 0 0 0 e+001 1 . 0 0 0 0 e+001 1 . 0 0 0 0 e+001 1 . 0 0 0 0 e+001 x1 = 2 . 1 6 9 3 e−001 9 . 7 6 1 9 e−001 n i t e r = 8 err = 9 . 6 7 2 6 e−002 9 . 7 5 2 9 e−003 9 . 7 6 1 0 e−004 9 . 7 6 1 8 e−005 9 . 7 6 1 9 e−006 9 . 7 6 1 9 e−007 9 . 7 6 1 9 e−008 9 . 7 6 1 9 e−009

Si osservi che il metodo termina in quanto l’errore pesato err `e

−8

(18)

Il metodo delle potenze in Matlab: esempio 2

Testiamo il codice per il calcolo dell’autoval. di massimo modulo di

A =   −15.5 7.5 1.5 −51 25 3 −25.5 7.5 11.5   =   1 2 3 2 5 6 7 9 3  ·   10 0 0 0 10 0 0 0 1  ·   1 2 3 2 5 6 7 9 3   −1 (9)

I La matrice A `e diagonalizzabile e ha autovalori 10, 10, 1.

I Quale vettore iniziale del metodo delle potenze consideriamo

z0 = (1, 1, 1) = (7/6) · (1, 2, 7) − 1 · (2, 5, 9) + (11/18) · (3, 6, 3)

che si dimostra possedere le propriet`a richieste dal metodo

delle potenze.

(19)

Il metodo delle potenze in Matlab: esempio 2

Dalla shell di Matlab/Octave:

>>A =[ −15.5 7 . 5 1 . 5 ; −51 25 3 ; −25.5 7 . 5 1 1 . 5 ] ; >> z0 =[1 1 1 ] ’ ; toll =10ˆ(−8) ; nmax =10;

>> [ lambda1 , x1 , niter , err ]= m e t o d o _ p o t e n z e ( A , z0 , toll , nmax ) l a m b d a 1 = 1 . 1 5 8 7 e+001 1 . 0 1 3 8 e+001 1 . 0 0 1 4 e+001 . . . 1 . 0 0 0 0 e+001 1 . 0 0 0 0 e+001 1 . 0 0 0 0 e+001 x1 = −2.8583 e−001 −9.1466 e−001 −2.8583 e−001 n i t e r = 10 err = 2 . 2 4 6 6 e+000 2 . 1 0 2 8 e−001 2 . 0 9 3 4 e−002 . . . 2 . 0 9 2 4 e−007 2 . 0 9 2 4 e−008 2 . 0 9 2 4 e−009 >>

(20)

Bibliografia

K. Atkinson, Introduction to Numerical Analysis, Wiley, 1989.

D. Bini, M. Capovani e O. Menchi, Metodi numerici per l’algebra lineare, Zanichelli, 1988. C. Brezinski e M. Redivo Zaglia, The PageRank vector: properties, computation, approximation, and acceleration, SIAM J. Matrix Anal. Appl., 28 (2006) 551-575.

V. Comincioli, Analisi Numerica, metodi modelli applicazioni, Mc Graw-Hill, 1990.

G.H. Golub e C.F. Van Loan, Matrix Computation, 3rd Edition, The John Hopkins University Press 1996. Netlib,http://www.netlib.org/templates/matlab/

A. Quarteroni, R. Sacco, F. Saleri, Matematica numerica, 2001.

A. Quarteroni e F. Saleri, Introduzione al calcolo scientifico, Springer Verlag, 2006. Wikipedia (Inverse iteration) http://en.wikipedia.org/wiki/Inverse iteration. Wikipedia (Metodo delle potenze) http://it.wikipedia.org/wiki/Metodo delle potenze. Wikipedia (PageRank) http://it.wikipedia.org/wiki/Page rank.

Wikipedia (Rayleigh quotient) http://en.wikipedia.org/wiki/Rayleigh quotient. Wikipedia (Teoremi di Gershgorin) http://it.wikipedia.org/wiki/Teoremi di Gershgorin.

Riferimenti

Documenti correlati

Usare l’equazione secolare per trovare n radici complesse ` e un sistema lento e poco efficace, salvo che per casi particolari.... In questo

Usare l’equazione secolare per trovare n radici complesse ` e un sistema lento e poco efficace, salvo che per casi particolari.... In questo modo gli elementi non diagonali

il polinomio caratteristico di una matrice quadrata di ordine n `e un poli- nomio di grado n, il coefficiente di λ n `e ± 1 ( 1 o -1 secondo che n sia pari o dispari) e il termine

Data la matrice di Hilbert di ordine 5, ottenibile in Matlab col comando hilb(5) si calcolino col metodo delle potenze i suoi minimi e massimi autovalori in modulo. Da questi

• Data la matrice di Hilbert di ordine 5, ottenibile in Matlab col co- mando hilb(5) si calcolino col metodo delle potenze i suoi minimi e massimi autovalori in modulo. • Da questi

Per semplicit` a, dopo i teoremi di localizzazione di Gershgorin, mostreremo solo due metodi classici, uno per ognuna di queste classi, quello delle potenze e il metodo QR,

Invece in altri casi non è diagonalizzabile (es Sp(Tϑ)=1), cioè esistono degli autovettori, ma non sono sufficienti a formare una base2. Tϑ Rotazione rispetto

[r]