In algebra lineare, l'algoritmo degli autovalori di Jacobi è un metodo iterativo per il calcolo degli autovalori e degli autovettori di una matrice simmetrica reale (processo noto come diagonalizzazione). Prende il nome da Carl Gustav Jacob Jacobi, che per primo propose il metodo nel 1846,[1] ma divenne ampiamente utilizzato solo negli anni '50 con l'avvento dei computer.[2]
Descrizione
Sia
una matrice simmetrica e
una matrice di rotazione di Givens. Si dimostra che la matrice

è simmetrica e simile a
.
Inoltre,
ha i seguenti valori:

dove
e
.
Essendo
ortogonale,
E
hanno la stessa norma di Frobenius
(la somma delle radici quadrate dei quadrati di tutti gli elementi). In ogni caso, è possibile scegliere
tale che
, in tal caso
ha una somma maggiore dei quadrati sulla diagonale:

Imponendo
uguale a 0, e riorganizzando i termini, si ottiene:

Se
, allora

Per ottimizzare questo effetto,
dovrebbe essere l'elemento fuori diagonale con il valore assoluto più grande, chiamato pivot .
Il metodo degli autovalori di Jacobi esegue ripetutamente rotazioni finché la matrice non diventa quasi diagonale. Iterando questo processo, gli elementi nella diagonale sono approssimazioni degli autovalori (reali) di S.
Convergenza
Se
è un elemento pivot, allora per definizione
per
.
Si definisce
come la somma dei quadrati di tutti gli elementi fuori diagonale di
. Essendo che
ha esattamente
elementi fuori diagonale, si ha che
O
.
Di conseguenza
. Questo implica
oppure
; in altre parole, la sequenza delle rotazioni di Jacobi converge almeno linearmente di un fattore
ad una matrice diagonale.
Un numero di
rotazioni di Jacobi sono chiamate spazzate; si definisce con
il risultato delle
spazzate. La stima precedente rende
;
Ovvero, la sequenza di spazzate converge almeno linearmente con un fattore ≈
.
Tuttavia il seguente risultato di Schönhage[3] fornisce una convergenza localmente quadratica. A tal fine sia S la presenza di m autovalori distinti
con molteplicità
, e sia d > 0 la distanza più piccola tra due autovalori diversi. Chiamiamo un numero di

rotazioni di Jacobi una spazzata di Schönhage. Se
denota il risultato, allora
.
Quindi la convergenza diventa quadratica non appena
Costo
Ogni rotazione di Jacobi può essere eseguita in O(n) passi quando l'elemento pivot p è noto. Tuttavia la ricerca di p richiede l'ispezione di tutti gli N ≈ 1/2 n 2 elementi fuori diagonale. Possiamo ridurre anche questo procedimento alla complessità O(n) se introduciamo un array di indici aggiuntivo
, con la proprietà che
è l'indice dell'elemento più grande nella riga i, (i = 1, ..., n − 1) dell'attuale S. Allora, gli indici del pivot ( k, l ) devono essere una delle coppie
.
Anche l'aggiornamento dell'array dell'indice può essere eseguito con complessità nel caso medio O(n): in primo luogo, l'elemento maggiore nelle righe aggiornate k e l può essere trovato nei passaggi O(n). Nelle altre righe i cambiano solo gli elementi nelle colonne k e l. Iterando su queste righe, se
non è né k né l, è sufficiente confrontare il vecchio massimo in
con i nuovi elementi, aggiornando
se necessario. Se
dovrebbe essere uguale a k o ad l, e l'elemento corrispondente è diminuito durante l'aggiornamento, il massimo sulla riga i deve essere trovato da zero nella complessità O(n). Tuttavia, ciò avverrà in media solo una volta per rotazione. Pertanto, ogni rotazione ha complessità nel caso medio O( n ), e ogni spazzata ha complessità media O (n 3), che equivale a una moltiplicazione di matrici. Inoltre il
deve essere inizializzato prima dell'avvio del processo, operazione che può essere eseguita in n 2 passaggi.
Tipicamente, il metodo di Jacobi converge alla precisione numerica dopo un piccolo numero di passaggi. Si noti che più autovalori riducono il numero di iterazioni, in quanto
.
Algoritmo
Il seguente algoritmo è una descrizione del metodo Jacobi in notazione di tipo matematico. Questo algoritmo calcola un vettore e che contiene gli autovalori, e una matrice E che contiene i corrispondenti autovettori; di conseguenza, ogni
è un autovalore e ogni colonna
un autovettore ortonormale per
, io = 1, ..., n .
Appunti
1. L'array logico changed mantiene lo stato di ciascun autovalore. Se il valore numerico di
o
viene modificato durante un'iterazione, il componente corrispondente di changed viene impostato su true, altrimenti su false. La variabile intera state conta il numero di componenti di changed che hanno valore true . L'iterazione si interrompe non appena state è uguale a 0. Ciò significa che nessuna delle approssimazioni
ha recentemente cambiato il suo valore, e quindi non è molto probabile che ciò accada se l'iterazione continua. Qui si presuppone che le operazioni in virgola mobile vengano arrotondate in modo ottimale al numero in virgola mobile più vicino.
2. Il triangolo superiore della matrice S viene distrutto, mentre il triangolo inferiore e la diagonale rimangono invariati. Pertanto, è possibile ripristinare S se necessario, seguendo il seguente algoritmo:
3. Gli autovalori non sono necessariamente in ordine decrescente. Ciò può essere ottenuto mediante un semplice algoritmo di ordinamento.
4. L'algoritmo è scritto utilizzando la notazione matriciale (array basati su 1 invece che su 0).
5. Quando si implementa l'algoritmo, la parte specificata utilizzando la notazione matriciale deve essere eseguita simultaneamente.
6. Questa implementazione non tiene conto correttamente del caso in cui una dimensione è un sottospazio indipendente. Ad esempio, nel caso in cui questo algoritmo analizzi una matrice diagonale, l'implementazione mostrata in precedenza non terminerà mai, poiché nessuno degli autovalori cambierà. Pertanto, nelle implementazioni reali, è necessario aggiungere ulteriore logica per tenere conto di questo caso.
Esempio
Sia
Quindi jacobi produce i seguenti autovalori e autovettori dopo 3 scansioni (19 iterazioni) :
Applicazioni per matrici reali simmetriche
Quando si conoscono gli autovalori (e gli autovettori) di una matrice simmetrica, si calcolano facilmente i seguenti valori.
- Valori singolari
- I valori singolari di una matrice (quadrata).
sono le radici quadrate degli autovalori (non negativi) di
. Nel caso di una matrice simmetrica
si ha che
, quindi i valori singolari di
sono i valori assoluti degli autovalori di
.
- Norma di ordine 2 e raggio spettrale
- La norma di ordine 2 di una matrice A è la norma basata sulla norma vettoriale euclidea; cioè, il valore più grande
quando x attraversa tutti i vettori con
. È il valore singolare più grande di
. Nel caso di una matrice simmetrica, è anche il valore assoluto più grande dei suoi autovettori, e quindi uguale al suo raggio spettrale.
- Numero di condizione
- Il numero di condizione di una matrice non singolare
è definito come
. Nel caso di una matrice simmetrica, è il valore assoluto del quoziente tra l'autovalore maggiore e quello minore. Matrici con numeri di condizione elevati possono causare risultati numericamente instabili: piccole perturbazioni possono causare grandi errori. Le matrici di Hilbert sono le matrici mal condizionate più famose. Ad esempio, la matrice di Hilbert del quarto ordine ha una condizione pari a 15514, mentre per l'ordine 8 è 2,7 × 10 8 .
- Rango
- Una matrice
ha rango
se ha
colonne linearmente indipendenti, mentre le restanti colonne sono linearmente dipendenti da queste. Equivalentemente,
è la dimensione dell'intervallo di
. Inoltre è il numero di valori singolari diversi da zero.
- Nel caso di una matrice simmetrica, r è il numero di autovalori diversi da zero. Sfortunatamente, a causa di errori di arrotondamento, le approssimazioni numeriche di autovalori nulli potrebbero non essere zero (può anche succedere che un'approssimazione numerica sia nulla, mentre il valore reale non sia effettivamente 0). Pertanto è possibile calcolare il rango numerico solo decidendo quali autovalori sono sufficientemente vicini a zero.
- Pseudo-inversa della matrice
- La pseudo-inversa di una matrice
è la matrice unica
per cui
E
sono simmetriche e per cui la condizione
è verificata.
- Se
non è singolare, quindi
.
- Quando viene chiamata la procedura jacobi(S, e, E), allora la relazione
vale dove Diag(e) denota la matrice diagonale con il vettore e sulla diagonale. Si definisce con
il vettore dove
è sostituito da
se
, e da 0 se
è (numericamente vicino a) zero. Poiché la matrice E è ortogonale, ne consegue che la pseudo-inversa di S è data da
.
- Soluzione dei minimi quadrati
- Se matrice
non ha rango completo, potrebbe non esserci una soluzione del sistema lineare
. Tuttavia, si può cercare un vettore x per il quale
è minimo. La soluzione è
. Nel caso di una matrice simmetrica S come prima, si ha
.
- Matrice esponenziale
- Da
si trova
dove exp
è il vettore dove
è sostituito da
. Allo stesso modo,
può essere calcolato in modo ovvio per qualsiasi funzione (analitica)
.
- Equazioni differenziali lineari
- L'equazione differenziale
ha la soluzione
. Per una matrice simmetrica
, ne consegue che
. Se
è l'espansione di
dagli autovettori di
, Poi
.
- Permettere
essere lo spazio vettoriale attraversato dagli autovettori di
che corrispondono ad un autovalore negativo e
analogamente per gli autovalori positivi. Se
Poi
; cioè, il punto di equilibrio 0 è attrattivo
. Se
Poi
; cioè, 0 è ripugnante
.
E
sono chiamate varietà stabili e instabili per
. Se
ha componenti in entrambe le varietà, quindi un componente viene attratto e l'altro viene respinto. Quindi
approcci
COME
.
Note
- ^ (DE) Journal für die reine und angewandte Mathematik, vol. 1846, 1846, DOI:10.1515/crll.1846.30.51.
- ^ Eigenvalue computation in the 20th century, vol. 123, 2000, DOI:10.1016/S0377-0427(00)00413-1.
- ^ (DE) Zur quadratischen Konvergenz des Jacobi-Verfahrens, vol. 6, 1964, DOI:10.1007/BF01386091, MR 174171.