13.01.2014 Aufrufe

Link - Hochschule Ulm

Link - Hochschule Ulm

Link - Hochschule Ulm

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!