MATLAB Language
Matrisnedbrytningar
Sök…
Syntax
- R = kol (A);
- [L, U] = lu (A);
- R = qr (A);
- T = schur (A);
- [U, S, V] = svd (A);
Cholesky nedbrytning
Cholesky nedbrytning är en metod för att sönderdela en hermitisk, positiv bestämd matris till en övre triangulär matris och dess transponering. Det kan användas för att lösa linjära ekvationssystem och är ungefär dubbelt så snabbt som LU-sönderdelning.
A = [4 12 -16
12 37 -43
-16 -43 98];
R = chol(A);
Detta returnerar den övre triangulära matrisen. Den nedre erhålls genom införlivande.
L = R';
Vi kan äntligen kontrollera om nedbrytningen var korrekt.
b = (A == L*R);
QR sönderdelning
Denna metod kommer att sönderdela en matris till en övre triangulär och en ortogonal matris.
A = [4 12 -16
12 37 -43
-16 -43 98];
R = qr(A);
Detta returnerar den övre triangulära matrisen medan följande returnerar båda matriserna.
[Q,R] = qr(A);
Följande diagram visar körtiden för qr
beroende på kvadratroten av element i matrisen.
LU nedbrytning
Härmed kommer en matris att sönderdelas till en övre trangulär och en nedre triangulär matris. Ofta kommer det att användas för att öka prestandan och stabiliteten (om det görs med permutation) för eliminering av Gauß.
Men ofta fungerar denna metod inte eller dåligt eftersom den inte är stabil. Till exempel
A = [8 1 6
3 5 7
4 9 2];
[L,U] = lu(A);
Det är tillräckligt att lägga till en permutationsmatris så att PA = LU:
[L,U,P]=lu(A);
I det följande kommer vi nu att planera körtiden för `lu 'beroende på kvadratroten av element i matrisen.
Schur nedbrytning
Om A är en komplex och kvadratisk matris finns det en enhet Q så att Q * AQ = T = D + N med D är den diagonala matrisen som består av egenvärdena och N är strikt övre tridiagonala.
A = [3 6 1
23 13 1
0 3 4];
T = schur(A);
Vi visar också körtiden för schur
beroende på kvadratroten hos matriselement:
Singulärvärdesfaktorisering
Får en m gånger n matris A med n större än m. Singularvärdet sönderdelning
[U,S,V] = svd(A);
beräknar matriserna U, S, V.
Matrisen U består av de vänstra singulära egenvektorerna som är egenvektorerna för A*A.'
medan V består av rätt singulära egenvärden som är egenvektorerna för A.'*A
Matrisen S
har kvadratroten av egenvärdena A*A.'
och A.'*A
på dess diagonal.
Om m är större än n kan man använda
[U,S,V] = svd(A,'econ');
att utföra nedbrytning av singelvärde i ekonomi-storlek.