MATLAB Language
Matrixontledingen
Zoeken…
Syntaxis
- R = chol (A);
- [L, U] = lu (A);
- R = qr (A);
- T = schur (A);
- [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.
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.
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:
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.