• 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

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

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

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]