Zoeken…


Syntaxis

  1. R = chol (A);
  2. [L, U] = lu (A);
  3. R = qr (A);
  4. T = schur (A);
  5. [U, S, V] = svd (A);

Cholesky-ontbinding

De Cholesky-ontleding is een methode om een hermitische, positieve bepaalde matrix te ontleden in een bovenste driehoekige matrix en deze om te zetten. Het kan worden gebruikt om lineaire vergelijkingen op te lossen en is ongeveer twee keer zo snel als LU-ontleding.

A = [4 12 -16
    12 37 -43
    -16 -43 98];
R = chol(A);

Dit geeft de bovenste driehoekige matrix terug. De onderste wordt verkregen door transpositie.

L = R';

We kunnen eindelijk controleren of de ontbinding correct was.

b = (A == L*R);

QR-ontbinding

Deze methode zal een matrix ontleden in een bovenste driehoekige en een orthogonale matrix.

A = [4 12 -16
    12 37 -43
    -16 -43 98];
R = qr(A);

Dit retourneert de bovenste driehoekige matrix, terwijl het volgende beide matrices retourneert.

[Q,R] = qr(A);

De volgende plot toont de runtime van qr afhankelijk van de vierkantswortel van elementen van de matrix. qr-runtime

LU-ontleding

Hierbij zal een matrix worden ontleed in een bovenste driehoekige en een onderste driehoekige matrix. Vaak wordt het gebruikt om de prestaties en stabiliteit (als het met permutatie wordt gedaan) van Gauß-eliminatie te verbeteren.

Vaak werkt deze methode echter niet of slecht omdat deze niet stabiel is. Bijvoorbeeld

A = [8 1 6
    3 5 7
    4 9 2];
[L,U] = lu(A);

Het is voldoende om een permutatiematrix toe te voegen zodat PA = LU:

[L,U,P]=lu(A);

In het volgende zullen we nu de looptijd van `lu 'plotten, afhankelijk van de vierkantswortel van elementen van de matrix. lu-runtime

Schur-ontbinding

Als A een complexe en kwadratische matrix is, bestaat er een eenheid Q zodat Q * AQ = T = D + N waarbij D de diagonale matrix is die bestaat uit de eigenwaarden en N strikt bovenste tridiagonaal is.

A = [3 6 1
    23 13 1
    0 3 4];
T = schur(A);

We tonen ook de looptijd van schur afhankelijk van de vierkantswortel van matrixelementen: Schur-runtime

Singuliere waarden ontbinding

Gegeven een m maal n matrix A met n groter dan m. De enkelvoudige waardeontleding

[U,S,V] = svd(A);

berekent de matrices U, S, V.

De matrix U bestaat uit de linker enkelvoudige eigenvectoren die de eigenvectoren zijn van A*A.' terwijl V bestaat uit de juiste enkelvoudige eigenwaarden die de eigenvectoren van A.'*A De matrix S heeft de vierkantswortels van de eigenwaarden van A*A.' en A.'*A op zijn diagonaal.

Als m groter is dan n, kan men gebruiken

[U,S,V] = svd(A,'econ');

om enkelvoudige waarde-ontleding met economische waarde uit te voeren.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow