MATLAB Language
Scomposizioni della matrice
Ricerca…
Sintassi
- R = chol (A);
- [L, U] = lu (A);
- R = qr (A);
- T = schur (A);
- [U, S, V] = svd (A);
Scomposizione di Cholesky
La scomposizione di Cholesky è un metodo per decomporre una matrice ermetica, positivamente definita in una matrice triangolare superiore e la sua trasposizione. Può essere utilizzato per risolvere sistemi di equazioni lineari ed è circa il doppio della decomposizione LU.
A = [4 12 -16
12 37 -43
-16 -43 98];
R = chol(A);
Questo restituisce la matrice triangolare superiore. Quello inferiore è ottenuto per trasposizione.
L = R';
Finalmente possiamo controllare se la decomposizione è stata corretta.
b = (A == L*R);
Decomposizione QR
Questo metodo decompone una matrice in una matrice triangolare superiore e una matrice ortogonale.
A = [4 12 -16
12 37 -43
-16 -43 98];
R = qr(A);
Ciò restituirà la matrice triangolare superiore mentre il seguente restituirà entrambe le matrici.
[Q,R] = qr(A);
Il grafico seguente mostra il tempo di esecuzione di qr
dipendente dalla radice quadrata degli elementi della matrice.
Decomposizione LU
In questo modo una matrice sarà scomposta in una matrice triangolare superiore e inferiore. Spesso sarà usato per aumentare le prestazioni e la stabilità (se è fatta con permutazione) dell'eliminazione di Gauß.
Tuttavia, molto spesso questo metodo non funziona o funziona male in quanto non è stabile. Per esempio
A = [8 1 6
3 5 7
4 9 2];
[L,U] = lu(A);
È sufficiente aggiungere una matrice di permutazione tale che PA = LU:
[L,U,P]=lu(A);
Nel seguito, ora tracciamo il tempo di esecuzione di "lu" dipendente dalla radice quadrata degli elementi della matrice.
Scomposizione di Schur
Se A è una matrice complessa e quadratica esiste una Q unitaria tale che Q * AQ = T = D + N con D essendo la matrice diagonale costituita dagli autovalori e N essendo strettamente tridiagonale superiore.
A = [3 6 1
23 13 1
0 3 4];
T = schur(A);
Visualizziamo anche il tempo di esecuzione di schur
base alla radice quadrata degli elementi di matrice:
Scomposizione di un valore singolo
Dato un m volte n matrice A con n maggiore di m. La decomposizione del valore singolare
[U,S,V] = svd(A);
calcola le matrici U, S, V.
La matrice U è costituita dai singoli autovettori di sinistra che sono gli autovettori di A*A.'
mentre V è costituito dagli autovalori singolari giusti che sono gli autovettori di A.'*A
La matrice S
ha le radici quadrate degli autovalori di A*A.'
e A.'*A
sulla sua diagonale.
Se m è più grande di n si può usare
[U,S,V] = svd(A,'econ');
per eseguire la decomposizione del valore singolare di dimensioni economiche.