Givens-Rotation

Aus testwiki
Version vom 13. Februar 2025, 16:11 Uhr von imported>CRau080 (Literatur: Korrektur der vorhergehenden Bearbeitung)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

In der linearen Algebra ist eine Givens-Rotation (nach Wallace Givens) eine Drehung in einer Ebene, die durch zwei Koordinaten-Achsen aufgespannt wird. Manchmal wird dies auch als Jacobi-Rotation (nach Carl Gustav Jacobi) bezeichnet.

Die Anwendung als Methode in der numerischen linearen Algebra zum Beispiel bei der Bestimmung von Eigenwerten und QR-Zerlegung stammt aus den 1950er Jahren, als Givens am Oak Ridge National Laboratory war. Solche Drehungen werden schon im älteren Jacobi-Verfahren (1846) benutzt, praktikabel wurden sie allerdings erst mit dem Aufkommen von Computern.

Beschreibung

Die Transformation lässt sich durch eine orthogonale Matrix der Form

G(i,k,θ)=[10000cs00sc00001]

beschreiben, wobei c=cos(θ) und s=sin(θ) in der i-ten und k-ten Zeile und Spalte erscheinen. Eine solche Matrix heißt Givens-Matrix. Formaler ausgedrückt:

G(i,k,θ)j,l={cosθ falls j=i,l=i oder j=k,l=ksinθ falls j=i,l=ksinθ falls j=k,l=i1 falls j=l,ji,jk0 sonst. 

Das Matrix-Vektor-Produkt GT(i,k,θ)x stellt eine Drehung (gegen den Uhrzeigersinn) des Vektors x um einen Winkel θ in der (i,k)-Ebene dar, diese wird Givens-Rotation genannt.

Die Hauptanwendung der Givens-Rotation liegt in der numerischen linearen Algebra, um Nulleinträge in Vektoren und Matrizen zu erzeugen. Dieser Effekt kann beispielsweise bei der Berechnung der QR-Zerlegung einer Matrix ausgenutzt werden. Außerdem werden solche Drehmatrizen beim Jacobi-Verfahren benutzt.

QR-Zerlegung mittels Givens-Rotationen

  • Das Verfahren ist stabil. Pivotisierung ist nicht erforderlich.
  • Flexible Berücksichtigung von schon vorhandenen 0-Einträgen in strukturierten (insbesondere dünnbesetzten) Matrizen.
  • Die Idee besteht darin, sukzessiv die Elemente unterhalb der Hauptdiagonalen auf Null zu setzen, indem man die Matrix von links mit Givens-Rotationen multipliziert. Zunächst bearbeitet man die erste Spalte von oben nach unten und dann nacheinander die anderen Spalten ebenfalls von oben nach unten.
  • Man muss also 𝒪(mn) Matrizenmultiplikationen durchführen. Da sich jeweils pro Multiplikation höchstens 2n Werte verändern, beträgt der Aufwand für eine QR-Zerlegung einer vollbesetzten m×n-Matrix insgesamt 𝒪(mn2). Für dünn besetzte Matrizen ist der Aufwand allerdings erheblich niedriger.
  • Will man den Eintrag an der Matrixposition (i,j) zu null transformieren, so setzt man c=ajj/ρ und s=aij/ρ, wobei ρ=sgn(ajj)ajj2+aij2.

Beispiel

G2,4G1,4[35020045]=G2,4[57020001]=[57050000]

mit

G1,4=[35004501000010450035], G2,4=[10000250150010015025]

Man erhält schließlich die QR-Zerlegung:

Q=(G2,4G1,4)T=(G1,4TG2,4T)=[3545508550250150010453550655],R=[57050000],QR=[35020045]

Algorithmus

Zur Berechnung einer QR-Zerlegung einer Matrix A=(ai,j)i,jm×n,mn geht man wie folgt vor.

Drehe die erste Spalte a,1 der Matrix A auf einen Vektor mit einer Null als letzten Eintrag:

G1,mA=[****0**]

wobei c,s,ρ für G1,m wie oben beschrieben gewählt werden müssen:

ρ=sgn(a1,1)a1,12+am,12,c=a1,1ρ,s=am,1ρ.

Nun geht man analog mit den nächsten Einträgen der ersten Spalte vor und speichert sich alle Umformungsmatrizen G1,i,i=2,,m in der Matrix G1:

G1A=[**0*0**]mitG1:=G1,2G1,m.

Dabei muss unbedingt darauf geachtet werden, dass sich die einzelnen Einträge (c,s,ρ) der Matrizen G1,i nicht mehr auf die ursprüngliche Matrix A beziehen, sondern auf die schon umgeformte Matrix: G1,i+1G1,mA.

Nun muss man die folgenden Spalten analog bearbeiten und somit Umformungsmatrizen Gi,i=2,,n finden, welche jeweils die i-te Spalte der Matrix Gi1G1A auf einen Vektor mit Nulleinträgen unterhalb des i-ten Elements transformiert.

Schlussendlich ergibt sich die QR-Zerlegung mittels:

Q:=G1TGnTundR:=GnG1A.

Verallgemeinerung

In drei Dimensionen gibt es 3 Givens-Rotationen:

RX(θ)=(1000cosθsinθ0sinθcosθ)
RY(θ)=(cosθ0sinθ010sinθ0cosθ)[Anmerkung 1]
RZ(θ)=(cosθsinθ0sinθcosθ0001)

Diese 3 zusammengesetzten Givens-Rotationen können jede Drehmatrix nach dem Davenport's chained rotation theorem erzeugen. Dies bedeutet, dass sie die Standardbasis des Vektorraums in jede andere Basis im Vektorraum umwandeln können.

Literatur

  • Gene H. Golub, Charles F. van Loan: Matrix Computations. 2nd Edition. The Johns Hopkins University Press, 1989.
  • Martin Hermann: Numerische Mathematik, Band 1: Algebraische Probleme. 4., überarbeitete und erweiterte Auflage, Walter de Gruyter Verlag, Berlin und Boston 2020, ISBN 978-3-11-065665-7.
  • W. Dahmen, A. Reusken: Numerik für Ingenieure und Naturwissenschaftler. Springer-Verlag Berlin Heidelberg, 2006, ISBN 3-540-25544-3

Anmerkungen

  1. Die RY(θ)Matrix direkt unterhalb ist keine Givens-Rotation. Die RY(θ) -Matrix direkt unterhalb befolgt die Rechte-Hand-Regel und wird üblicherweise in der Computergrafik verwendet. Eine Givens-Rotation ist jedoch einfach eine Matrix gemäß Definition im Abschnitt Beschreibung oben und befolgt nicht zwingend die Rechte-Hand-Regel. Die Matrix unterhalb zeigt tatsächlich die Givens-Rotation um einen Winkel -θ.
    RY(θ)=[cosθ0sinθ010sinθ0cosθ]