26.12.2013 Aufrufe

4.4.3 Givens-Rotationen

4.4.3 Givens-Rotationen

4.4.3 Givens-Rotationen

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.

4.4 Orthogonalisierungsverfahren und die QR-Zerlegung<br />

<strong>4.4.3</strong> <strong>Givens</strong>-<strong>Rotationen</strong><br />

Das Gram-Schmidt Verfahren basiert auf Projektionen, die Householder-Transformationen<br />

sind Spiegelungen. Schließlich stellen wir kurz eine Methode vor, die auf <strong>Rotationen</strong> beruht.<br />

Wir definieren:<br />

Definition 4.61 (<strong>Givens</strong>-Rotation). Unter einer <strong>Givens</strong>-Rotation im R n versteht man<br />

die Drehung in der durch zwei Einheitsvektoren e i und e j aufgespannten Ebene. Die Transformationsmatrix<br />

ist gegeben durch:<br />

⎛<br />

1<br />

G(i, j, θ) =<br />

⎜<br />

⎝<br />

. ..<br />

1<br />

c<br />

s<br />

. ..<br />

−s<br />

c<br />

1<br />

⎞<br />

, c := cos(θ), s := sin(θ).<br />

. ⎟ .. ⎠<br />

1<br />

Es gilt:<br />

Satz 4.62 (<strong>Givens</strong>-Rotation). Die <strong>Givens</strong>-Rotation G(i, j, θ) ist eine orthogonale Matrix<br />

mit det(G) = 1. Es ist G(i, j, θ) −1 = G(i, j, −θ).<br />

Wie die Householder-Transformationen sind die <strong>Givens</strong>-<strong>Rotationen</strong> orthogonale Matrizen.<br />

Die Multiplikation von links an eine Matrix, also GA oder einen Vektor, also Gx ändert<br />

nur die i-te und j-te Zeile von A, bzw. von x:<br />

⎛<br />

⎞<br />

a 11 · · · a 1n<br />

. . .. .<br />

a i−1,1 · · · a i−1,n<br />

ca i1 − sa j1 · · · ca in − sa jn<br />

a i+1,1 · · · a i+1,n<br />

G(i, j)A =<br />

. . .. .<br />

.<br />

a j−1,1 · · · a j−1,n<br />

sa i1 + ca j1 · · · sa in + ca jn<br />

a j+1,1 · · · a j+1,n<br />

⎜<br />

⎝<br />

.<br />

. ..<br />

⎟ . ⎠<br />

a n1 · · · a nn<br />

Die QR-Zerlegung auf der Basis von <strong>Givens</strong>-<strong>Rotationen</strong> transformiert die Matrix A wieder<br />

schrittweise in eine obere rechte Dreiecksmatrix R. Durch Anwenden einer <strong>Givens</strong>-Rotation<br />

159


4 Numerische Lineare Algebra<br />

kann jedoch nur ein einzelnes Unterdiagonalelement eliminiert werden und nicht eine ganze<br />

Spalte:<br />

⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞<br />

∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗<br />

∗ ∗ ∗ ∗<br />

⎜ ⎟<br />

⎝∗ ∗ ∗ ∗⎠ → 0 ∗ ∗ ∗<br />

⎜ ⎟<br />

⎝∗ ∗ ∗ ∗⎠ → 0 ∗ ∗ ∗<br />

⎜ ⎟<br />

⎝0 ∗ ∗ ∗⎠ → 0 ∗ ∗ ∗<br />

⎜ ⎟<br />

⎝0 ∗ ∗ ∗⎠<br />

∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ 0 ∗ ∗ ∗<br />

⎛ ⎞ ⎛ ⎞<br />

∗ ∗ ∗ ∗<br />

∗ ∗ ∗ ∗<br />

0 ∗ ∗ ∗<br />

→ ⎜ ⎟<br />

⎝0 0 ∗ ∗⎠ → · · · → 0 ∗ ∗ ∗<br />

⎜ ⎟<br />

⎝0 0 ∗ ∗⎠ .<br />

0 ∗ ∗ ∗<br />

0 0 0 ∗<br />

Wir betrachten einen Schritt des Verfahrens. Dazu sei die Matrix A gegeben in der Form:<br />

⎛<br />

⎞<br />

a 11 · · · · · · · · · · · · a 1n<br />

. 0 .. . .. .<br />

. . .. aii .<br />

. 0 a i+1,i+1 .<br />

A =<br />

. . . .<br />

. 0 . .<br />

. . a ji . .. .<br />

⎜<br />

⎟<br />

⎝ . . . . ⎠<br />

0 · · · a ni a n,i+1 · · · a nn .<br />

Wir suchen die <strong>Givens</strong>-Rotation G(i, j, θ) zur Elimination von a ji . Für GA gilt:<br />

(G(i, j, θ)A) ji = sa ii + ca ji , c := cos(θ), s := sin(θ).<br />

Anstelle den Winkel θ zu finden bestimmen wir gleich die Werte c und s mit dem Ansatz<br />

sa ii + ca ji = 0, c 2 + s 2 = 1 ⇒ c :=<br />

a ii<br />

√<br />

a 2 ii + a2 ji<br />

, s := −<br />

a ji<br />

√<br />

a 2 ii + .<br />

a2 ji<br />

Anwendung von G(i, j, θ) auf A ergibt:<br />

(G(i, j, θ)A) ji = −a jia ii + a ii a ji<br />

√<br />

a 2 ii + a2 ji<br />

= 0, (G(i, j, θ)A) ii = a2 ii + a2 ji<br />

√<br />

a 2 ii + a2 ji<br />

=<br />

√<br />

a 2 ii + a2 ji .<br />

Das Element a ji wird eliminiert. Zur Elimination der i-ten Spalte (unterhalb der Diagonale)<br />

sind (n − i − 1) <strong>Givens</strong>-<strong>Rotationen</strong> notwendig. Hieraus lässt sich leicht abschätzen,<br />

dass der Aufwand zum Erstellen der QR-Zerlegung nach <strong>Givens</strong> großer ist als der Aufwand<br />

bei Verwenden der Householder-Transformationen. Genaue Analyse und effiziente Durchführung<br />

führt zu 4n3<br />

3<br />

+ O(n 2 ) arithmetische Operationen, also dem doppelten Aufwand<br />

verglichen mit der Householder-Methode.<br />

160


4.4 Orthogonalisierungsverfahren und die QR-Zerlegung<br />

Die QR-Zerlegung nach <strong>Givens</strong> gewinnt aber an Bedeutung, wenn die Matrix A bereits<br />

dünn besetzt ist. Nur Unterdiagonalelemente a ji ≠ 0 müssen gezielt eliminiert werden. Bei<br />

sogenannten Hessenberg-Matrizen (das sind rechte obere Dreiecksmatrizen, die zusätzlich<br />

noch eine linke Nebendiagonale besitzen) kann die QR-Zerlegung mit <strong>Givens</strong>-<strong>Rotationen</strong> in<br />

nur O(n 2 ) Operationen durchgeführt werden. Die QR-Zerlegung von Hessenberg-Matrizen<br />

spielt die entscheidende Rolle bei dem wichtigsten Verfahren zur Berechnung von Eigenwerten<br />

einer Matrix, siehe Abschnitt 4.6.<br />

Beispiel 4.63 (QR-Zerlegung nach <strong>Givens</strong>). Wie in Beispielen 4.54 und 4.60 sei wieder<br />

die folgende Matrix gegeben:<br />

⎛<br />

⎞<br />

1 1 1<br />

⎜<br />

⎟<br />

A := ⎝0.01 0 0.01⎠<br />

0 0.01 0.01<br />

Wir führen alle Rechnungen mit dreistelliger Genauigkeit durch. Zur Elimination von<br />

a 21 = 0.01 ist:<br />

d.h.<br />

c (1) =<br />

1<br />

√<br />

1 + 0.01 2 ≈ 1,<br />

⎛<br />

⎞<br />

1 0.01 0<br />

G (1) ⎜<br />

⎟<br />

= ⎝−0.01 1 0⎠ ,<br />

0 0 1<br />

0.01<br />

s(1) = −√ ≈ −0.01,<br />

1 + 0.01 2<br />

⎛<br />

A (1) = G (1) ⎜<br />

1 1 1<br />

⎞<br />

⎟<br />

A ≈ ⎝0 −0.01 0 ⎠<br />

0 0.01 0.01<br />

Im zweiten Schritt wählen wir zur Elimination von a (1)<br />

32 = 0.01<br />

c (2) =<br />

−0.01<br />

√<br />

0.01 2 + 0.01 2 ≈ −0.707,<br />

0.01<br />

s(2) = −√ 0.01 2 + 0.01 ≈ −0.707,<br />

2<br />

also<br />

⎛<br />

G (2) ⎜<br />

1 0 0<br />

⎞<br />

⎟<br />

= ⎝0 −0.707 0.707 ⎠ ,<br />

0 −0.707 −0.707<br />

⎛<br />

A (2) = G (2) A (1) ⎜<br />

1 1 1<br />

⎞<br />

⎟<br />

≈ ⎝0 0.0141 0.00707 ⎠ = ˜R.<br />

0 0 −0.00707<br />

Zur Probe berechnen wir zunächst ˜Q := (G (1) ) T (G (2) ) T :<br />

⎛<br />

⎞<br />

1 0.00707 0.00707<br />

⎜<br />

⎟<br />

˜Q = ⎝0.01 −0.707 −0.707⎠ .<br />

0 0.707 −0.707<br />

Die Matrizen ˜Q sowie ˜R sind nahezu identisch zu denen der Householder-Transformation<br />

in Beispiel 4.60. Daher ist auch die Genauigkeit der Approximation entsprechend gut:<br />

⎛<br />

⎞ ⎛<br />

⎞<br />

1.0001 0 0<br />

1 1 1<br />

˜Q T ⎜ ˜Q = ⎝ 0 0.99975 −5 · 10 −5 ⎟ ⎜<br />

⎠ , ˜Q ˜R ≈ ⎝0.01 3 · 10 −5 ⎟<br />

0.01 ⎠ ,<br />

0 −5 · 10 −5 0.99975<br />

0 0.00997 0.009997<br />

mit relativen Fehlern ‖ ˜Q ˜R − A‖ 2 /‖A‖ 2 ≈ 0.00005 sowie ‖ ˜Q T ˜Q − I‖2 ≈ 0.0003.<br />

161

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!