Ricerca…


Sintassi

  1. R = chol (A);
  2. [L, U] = lu (A);
  3. R = qr (A);
  4. T = schur (A);
  5. [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. qr-runtime

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. lu-runtime

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: Schur-runtime

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.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow