Singulärwert-Zerlegung Die Singulärwerte von A ∈ Rmxn , m ≥ n sollen berechnet werden. Zunächst wird A auf Bidiagonalgestalt transformiert: dn1 sdn2 O dn2 . . . ∈ Rnxn B= . . . sdnn O dnn Idee des Algorithmus: führe den QR-Algorithmus durch für B T B, ohne B T B explizit auszurechen. 1. Berechne den shift-Parameter µ gemäß Wilkinson, also EW von 2 dnn−1 + sdn2n−1 dnn−1sdnn−1 , dnn−1sdnn−1 dn2n + sdn2n der am nächsten zu dn2n + sdn2n liegt 2. Berechne (implizit) B T B − µId = QR, B̃ T B̃ := RQ + µId mit Givensrotationen: sei V1 Givensrotation mit (V1(B T B − µId))e1 = a e1 , berechne ∗ ∗ O + ∗ ∗ . . . BV1 = 0 0 ∗ . . . .. ∗ .. .. 0 0 O ∗ eliminiere das Element + mit Givensrotation U1 ∗ ∗ + O ∗ ∗ . ∗ .. U1BV1 = . .. ∗ O ∗ etc. bis man wieder Bidiagonalgestalt hat. Dabei soll blockweise in B T B vorgegangen werden: ein Superdiagonalelement wird durch Null ersetzt, falls |bi,i+1| < 10−11(|bii| + |bi+1,i+1|). Dann wird ein Block gebildet, der nur Superdiagonalelemente ungleich Null enthält. Falls Diagonalelemente in dem Block gleich Null sind, kann man mit Givensrotationen folgende Gestalt erreichen: ∗ ∗ O ∗ ∗ O ∗ ∗ ∗ ∗ 0 ∗ 0 0 ∗ → ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ O ∗ ∗ O ∗ ∗ ∗ ∗ O ∗ ∗ O ∗ ∗ ∗ ∗ 0 0 0 ∗ 0 → → ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ O ∗ ∗ O ∗ ∗ Andernfalls wird die (implizite) QR-Transformation in 2. angwendet. Dies wird solange iteriert, bis die Superdiagonale keine von Null verschiedenen Einträge mehr enthält. =⇒ Singulärwerte von A stehen (bis auf Vorzeichen) auf der Diagonalen von B
© Copyright 2024 ExpyDoc