Metodo delle potenze

Il metodo delle potenze è un semplice metodo iterativo per il calcolo approssimato dell'autovalore di modulo massimo di una matrice e il corrispondente autovettore.

Il metodo

Sia A C n × n {\displaystyle A\in \mathbb {C} ^{n\times n}} diagonalizzabile con autovalori λ 1 , λ 2 , , λ n {\displaystyle \lambda _{1},\lambda _{2},\ldots ,\lambda _{n}} tali che | λ 1 | > | λ 2 | | λ n | 0. {\displaystyle |\lambda _{1}|>|\lambda _{2}|\geq \ldots \geq |\lambda _{n}|\geq 0.}

Fissato un vettore x 0 C n {\displaystyle x_{0}\in \mathbb {C} ^{n}} (la cui proiezione sull'autospazio relativo a λ 1 {\displaystyle \lambda _{1}} è non nulla), si genera la successione x k = A x k 1 {\displaystyle x_{k}=Ax_{k-1}} per k = 1 , 2 , {\displaystyle k=1,2,\ldots }

Si può allora dimostrare che la successione degli x k {\displaystyle x_{k}} tende all'autovettore relativo all'autovalore di modulo massimo.

Convergenza

Siccome A {\displaystyle A} è per ipotesi diagonalizzabile, esiste una base di autovettori v 1 , v 2 , , v n {\displaystyle v_{1},v_{2},\ldots ,v_{n}} .

Allora il vettore x 0 {\displaystyle x_{0}} può essere riscritto come

x 0 = i = 1 n α i v i {\displaystyle x_{0}=\sum _{i=1}^{n}\alpha _{i}v_{i}}

e conseguentemente, per la definizione di autovalore di una matrice, il risultato della k {\displaystyle k} -esima iterazione come:

x k = A k x 0 = i = 1 n α i A k v i = i = 1 n α i λ i k v i . {\displaystyle x_{k}=A^{k}x_{0}=\sum _{i=1}^{n}\alpha _{i}A^{k}v_{i}=\sum _{i=1}^{n}\alpha _{i}\lambda _{i}^{k}v_{i}.}

Adesso, per comodità di notazione, spostiamo gli indici da pedice in apice: x k = x ( k ) {\displaystyle x_{k}=x^{(k)}} e x ( k ) = i = 1 n α i λ i k v ( i ) . {\displaystyle x^{(k)}=\sum _{i=1}^{n}\alpha _{i}\lambda _{i}^{k}v^{(i)}.}

Indicando con x r ( k ) {\displaystyle x_{r}^{(k)}} e v r ( i ) {\displaystyle v_{r}^{(i)}} le componenti r {\displaystyle r} -esime dei vettori x ( k ) {\displaystyle x^{(k)}} e v ( i ) {\displaystyle v^{(i)}} , per gli indici j {\displaystyle j} per cui x j ( k ) 0 {\displaystyle x_{j}^{(k)}\neq 0} e v j ( 1 ) 0 {\displaystyle v_{j}^{(1)}\neq 0} si ha:

x j ( k + 1 ) x j ( k ) = λ 1 α 1 v j ( 1 ) + i = 2 n α i ( λ i λ 1 ) k + 1 v j ( i ) α 1 v j ( 1 ) + i = 2 n α i ( λ i λ 1 ) k v j ( i ) . {\displaystyle {\frac {x_{j}^{(k+1)}}{x_{j}^{(k)}}}=\lambda _{1}{\frac {\alpha _{1}v_{j}^{(1)}+\sum _{i=2}^{n}\alpha _{i}({\frac {\lambda _{i}}{\lambda _{1}}})^{k+1}v_{j}^{(i)}}{\alpha _{1}v_{j}^{(1)}+\sum _{i=2}^{n}\alpha _{i}({\frac {\lambda _{i}}{\lambda _{1}}})^{k}v_{j}^{(i)}}}.}

E poiché | λ i | | λ 1 | < 1 {\displaystyle {\frac {|\lambda _{i}|}{|\lambda _{1}|}}<1} per i 2 {\displaystyle i\geq 2} si ha:

lim k x j ( k + 1 ) x j ( k ) = λ 1 . {\displaystyle \lim _{k\rightarrow \infty }{\frac {x_{j}^{(k+1)}}{x_{j}^{(k)}}}=\lambda _{1}.}

Quindi da un certo indice k {\displaystyle k} in poi l'autovalore λ 1 {\displaystyle \lambda _{1}} può essere approssimato con il rapporto indicato.

Con questo metodo si può approssimare anche l'autovettore v 1 {\displaystyle v_{1}} . Infatti si ha:

x ( k + 1 ) x j ( k ) = λ 1 α 1 v ( 1 ) + i = 2 n α i ( λ i λ 1 ) k + 1 v ( i ) α 1 v j ( 1 ) + i = 2 n α i ( λ i λ 1 ) k v j ( i ) . {\displaystyle {\frac {x^{(k+1)}}{x_{j}^{(k)}}}=\lambda _{1}{\frac {\alpha _{1}v^{(1)}+\sum _{i=2}^{n}\alpha _{i}({\frac {\lambda _{i}}{\lambda _{1}}})^{k+1}v^{(i)}}{\alpha _{1}v_{j}^{(1)}+\sum _{i=2}^{n}\alpha _{i}({\frac {\lambda _{i}}{\lambda _{1}}})^{k}v_{j}^{(i)}}}.}

E passando al limite (poiché α 1 0 {\displaystyle \alpha _{1}\neq 0} ) si ottiene:

lim k x ( k + 1 ) x j ( k ) = v ( 1 ) v j ( 1 ) , {\displaystyle \lim _{k\rightarrow \infty }{\frac {x^{(k+1)}}{x_{j}^{(k)}}}={\frac {v^{(1)}}{v_{j}^{(1)}}},}

che sarebbe l'autovettore v ( 1 ) {\displaystyle v^{(1)}} opportunamente normalizzato.

Implementazione

Il metodo delle potenze non viene praticamente mai implementato nella formulazione data, poiché dopo pochi passi si potrebbero avere problemi di underflow o overflow. Per evitare questi problemi è necessario eseguire a ogni passo una normalizzazione del vettore ottenuto, costruendo una successione x k = A x k 1 , {\displaystyle x_{k}=Ax_{k-1},} per k = 1 , 2 , , {\displaystyle k=1,2,\ldots ,} così definita:

{ y k = A x k 1 x k = y k β k , {\displaystyle {\begin{cases}y_{k}=Ax_{k-1}\\x_{k}={\frac {y_{k}}{\beta _{k}}},\end{cases}}}

dove β k {\displaystyle \beta _{k}} è uno scalare tale che x k = 1 {\displaystyle \|x_{k}\|=1} (tipicamente si prende la norma euclidea di y k {\displaystyle y_{k}} ).

Utilizzi

Il metodo delle potenze è scarsamente utilizzato poiché permette il calcolo dei soli autovalori e autovettori dominanti. Trova però degli impieghi in specifici problemi: ad esempio è alla base del metodo utilizzato da Google per il proprio algoritmo di PageRank.[1]

Varianti

Esistono numerose varianti del metodo delle potenze. La più famosa è quella del metodo delle potenze inverse che permette il calcolo approssimato dell'autovalore in modulo minore e del rispettivo autovettore. L'algoritmo si basa sull'osservazione che l'autovalore minore in modulo di una matrice, sarà l'autovalore dominante della matrice inversa.

Per il calcolo di un autovalore di modulo compreso fra il massimo ed il minimo autovalore si può invece utilizzare il metodo delle potenze inverse con shift, abbinato ai teoremi di Gerschgorin sulla localizzazione degli autovalori: modificando la matrice tramite un parametro μ , {\displaystyle \mu ,} il metodo trova l'autovalore di modulo più prossimo al valore del parametro.

Note

  1. ^ Ipsen, Ilse, and Rebecca M. Wills, 7th IMACS International Symposium on Iterative Methods in Scientific Computing (PDF), Fields Institute, Toronto, Canada, 5–8 May 2005.

Bibliografia

  • D. Bini, M. Capovani, O. Menchi (1988): Metodi Numerici per l'Algebra Lineare, Zanichelli, ISBN 88-08-06438-7
  Portale Matematica: accedi alle voci di Wikipedia che trattano di matematica