Sök…


Syntax

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

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

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

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.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow