Link - Hochschule Ulm
Link - Hochschule Ulm
Link - Hochschule Ulm
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
51.6. Singulärwertzerlegung<br />
Die Singulärwertzerlegung (Singular Value<br />
Decomposition, kurz: SVD) einer (m, n)-<br />
Matrix A hat die Form A = USV ∗ , wobei<br />
U eine unitäre (m, m)-Matrix, S eine reelle<br />
(m, n)-Diagonalmatrix und V eine unitäre<br />
(n, n)-Matrix ist. Die Diagonalelemente von S<br />
sind die singulären Werte s i mit s 1 ≥ s 2 ≥<br />
· · · ≥ s min{m,n} ≥ 0. Die Anweisung [U,S,V]<br />
= svd(A) berechnet eine Singulärwertzerlegung.<br />
Gibt man nur eine Ausgabevariable an,<br />
so ist dies der Vektor, der aus den singulären<br />
Wert besteht. Die Anweisung [U,S,V]<br />
= svd(A,0) liefert eine reduzierte Singulärwertzerlegung<br />
(economy size), wenn m > n<br />
ist. Dann ist U eine (m, n)-Matrix mit orthonormalen<br />
Spalten und S hat die Größe (n, n).<br />
Die Anweisung [U,S,V] = svd(A,’econ’)<br />
liefert das gleiche Ergebnis wie [U,S,V] =<br />
svd(A,0), wenn m ≥ n ist, ist aber m < n,<br />
so hat V die Größe (n, m) mit orthonormalen<br />
Spalten, und S ist quadratisch mit Ordnung m.<br />
Hier ist ein Beispiel [6]:<br />
1 >> A = [1 2 1 -2; 4 2 3 1];<br />
2 >> [U,S,V] = svd(A,’econ’)<br />
3 U =<br />
4 -0.3583 -0.9336<br />
5 -0.9336 0.3583<br />
6 S =<br />
7 5.7839 0<br />
8 0 2.5586<br />
9 V =<br />
10 -0.7076 0.1952<br />
11 -0.4467 -0.4497<br />
12 -0.5462 0.0552<br />
13 -0.0375 0.8698<br />
Die Funktionen rank, null und orth berechnen<br />
den Rang, eine orthonormale Basis für den<br />
Nullraum und eine orthonormale Basis für den<br />
Spaltenraum der Argumentmatrix. Alle drei<br />
Funktionen basieren auf der Singulärwertzerlegung,<br />
wobei Ein Toleranzwert proportional<br />
zu eps verwendet wird, um zu entscheiden,<br />
wann ein singulärer Wert als Null betrachtet<br />
werden kann. Wir geben ein Beispiel.<br />
1 >> A = [1 -1 1; 1 0 0; 1 1 1; 1 2<br />
4];<br />
2 >> [U,S,V] = svd(A)<br />
3 U =<br />
4 -0.1517 0.8959 -0.3525<br />
5 -0.0612 0.4013 0.6207<br />
6 -0.3215 0.0406 0.6671<br />
7 -0.9327 -0.1861 -0.2134<br />
8<br />
9 0.2236<br />
10 -0.6708<br />
11 0.6708<br />
12 -0.2236<br />
13 S =<br />
14 4.8956 0 0<br />
15 0 1.6942 0<br />
16 0 0 1.0784<br />
17 0 0 0<br />
18 V =<br />
19 -0.2997 0.6798 0.6693<br />
20 -0.4157 -0.7245 0.5498<br />
21 -0.8587 0.1135 -0.4997<br />
22 >> rank(A)<br />
23 ans =<br />
24 3<br />
25 >> null(A)<br />
26 ans =<br />
27 Empty matrix: 3-by-0<br />
28 >> orth(A)<br />
29 ans =<br />
30 -0.1517 0.8959 -0.3525<br />
31 -0.0612 0.4013 0.6207<br />
103 Copyright c○ G. Gramlich