Transformation auf Hessenbergform und Tridiagonalform Proseminar - Numerische Mathematik Sommersemerster 200 - Universität Hamburg Fachbereich Mathematik geleitet von Prof. Wolf Hofmann von Patrick Schuch Transformation auf Hessenbergform Als Ausgangspunkt haben wir eine Matrix A = (a ij, i,j [,..,n]) der Form: a a n.. A=.... a n a nn Für Untersuchungen der Matrix A bezüglich Eigenwerten und Eigenvektoren ist es von Vorteil, die Matrix A mittels Ähnlichkeitstransformationen auf eine Form zu bringen, in der solche Untersuchungen einfacher sind. Eine Form, die dafür gut geeignet ist, ist die Hessenbergform. Eine Matrix H = (h ij, i,j [,..,n] : h ij = 0 i > j+) entspricht der Hessenbergform und sieht damit wie folgt aus:
2 h h 2 h n h 2 h 22. 0 h 32. H=. 0....... 0 h n,n 2 h n,n. 0 0 h n,n h n,n Um eine Hessenbergform nun zu erreichen, wenden wir Ähnlichkeitstransformationen auf die Matrix A an. Ähnlichkeitstransformationen wandeln eine Matrix B in eine ähnliche Matrix C um. DEF: Zwei Matrizen B und C heißen ähnlich, wenn eine reguläre (invertierbare) Matrix C existiert, so daß gilt: C AC = B Ähnliche Matrizen besitzen die gleichen Eigenwerten. Wenden wir also Ähnlichkeitstransformationen auf die Matrix A an, so besitzt die transformierte Matrix dann auch die gleichen Eigenwerte wie die Matrix A. Bringen wir die Matrix A mit endlich vielen Ähnlichkeitstransformationen auf Hessenbergform, besitzt diese Matrix dann immer noch die gleichen Eigenwerte. Diese sind dann aber wesentlich einfacher zu berechnen. Eine dieser Ähnlichkeitstransformationen ist die Transformation mittels Rotationen. Rotationsmatrizen sind recht einfach aufzustellen und was sie bei einer Matrix bewirken, ist ebenfalls gut zu überblicken. Sie sind daher recht gut geeignet für unser Vorhaben, die Matrix A auf Hessenbergform zu trimmen. Eine solche Rotationsmatrix U= (u ij, i,j [,..,n] : u ii = i p,q; u pp =u qq =cos ϕ ; u pq = u qp =sin ϕ ; restliche u ij =0) =: U(p,q;ϕ) dreht eine Matrix um den Winkel -ϕ in der Ebene, die durch die Achsen p und q aufgespannt wird, wird daher auch (p,q)-rotationsmatrix zum Rotationsindexpaar (p,q) genannt. Zur Veranschaulichung noch einmal die Rotationsmatrix
3 U(p,q;ϕ)= cos ϕ sin ϕ sin ϕ cos ϕ mit reelem ϕ. Solch eine Rotationsmatrix ist orthogonal, also U T = U und damit erst recht regulär und somit eine Ähnlichkeitstransformationen. Diese Rotationsmatrizen sind für reellwertige Matrizen A gedacht. Prinzipiell ist es auch möglich komplexe Matrizen mittels geeigneter Rotationsmatrizen auf Hessenbergform zu bringen. Diese müßte dann entsprechend unitär sein und würden wie folgt aussehen:
4 U(p, q; ϕ) = cos ϕ e iψ sin ϕ e iψ sin ϕ cos ϕ mit reellen ϕ und ψ. Der Einfachheit halber wollen wir im weiteren aber davon ausgehen, daß die Ausgangsmatrix A reelwertig ist. Rechnet man grundsätzlich mit der Rotationsmatrix U, so setzt man einfach ψ = 0. Um genauer feststellen zu können, was die Rotationsmatrix U nun mit unserer Matrix macht, teilen wir, die eigentlich aus zwei Teilen bestehende, Transformation in selbige auf: A = U AU = U T AU = A U mit A =U T A Die Elemente der Zwischenmatrix A = U T A unterscheiden sich von denen der Ausgangsmatrix A nur in der p-ten und q-ten Zeile, der Rest bleibt gleich. Die Elemente der Matrix A ergeben sich wie folgt: a pj = a pj cosϕ a qj sinϕ j [,..., n] a qj = a pj sinϕ + a qj cosϕ j [,..., n] a ij = a ij j [,..., n] i p, q (0.) Wird die Zwischenmatrix A nun von rechts mit der Rotationmatrix U multipliziert, so ergibt sich für die Einträge der Matrix A = A U = U T AU nur eine Änderung zu den
Einträgen der Zwischenmatrix A in der p-ten und q-ten Spalte, der Rest der Einträge bleibt der gleiche wie bei A : a ip = a ip cosϕ a iq sinϕ i [,..., n] a iq = a ip sinϕ + a iq cosϕ i [,..., n] a ij = a ij i [,..., n] j p, q (0.2) Damit ergibt sich eine gedrehte Matrix A, die sich von der Ausgangsmatrix A nur in den p-ten und q-ten Spalten und Zeilen unterscheidet: # # p te Zeile A = # # k te Zeile Die Kreuze markieren die Einträge der Matrix, die sich von denen der Ausgangsmatrix unterscheiden. Die Zeilen ergeben sich mit (0.), die Spalten mit (0.2). Einzig die Einträge, die mit einer Raute markiert sind, wurden zweimal geändert. Die zweimal geänderten Einträge ergeben sich durch Einsetzen von (0.) in (0.2): a pp = a pp cos 2 ϕ 2a pq cos ϕ sinϕ + a qq sin 2 ϕ a qq = a pp sin 2 ϕ 2a pq cos ϕ sinϕ + a qq cos 2 ϕ a qp = a pq = (a pp a qq ) cos ϕ sin ϕ + a pq (cos 2 ϕ sin 2 ϕ) (0.3) Nun kann man mit jeweils einer Rotation einen Eintrag der Matrix A zu Null werden lassen, indem man den Winkel ϕ geschickt wählt. Um den Eintrag a ij gleich Null zu erhalten, benutzt man eine (j+,i)-drehung, so daß der zu eliminierende Eintrag nur von einer Zeilenänderung betroffen ist. Man will also folgendes erhalten: a ij = a j+,j sin ϕ + a ij cos ϕ = 0 Nun bedient man sich noch folgender Identität cos 2 ϕ + sin 2 ϕ =
6 und kann diese beiden Gleichungen in einander einsetzen. Für den sinϕ und den cosϕ folgt damit: a F ür a j+,j 0 : cos ϕ = j+,j a 2 j+,j +a 2 ij sin ϕ = sgn(a j+,j) a ij a 2 j+,j +a 2 ij F ür a j+,j = 0 : cos ϕ = 0 sin ϕ = (0.4) Nun fängt man an, die Matrix A sukzesssive auf Hessenbergform zu bringen. Man fängt dabei mit dem Eintrag a 3 an und benutzt dafür eine (2,3)-Drehung. Dann geht man zum nächsten Element a 4 und so weiter. Man arbeitet also Spalten von oben nach unten ab. So geht man sicher, daß alle Elemente die schon zu Null gemacht wurden nur mit anderen Nullelementen bei den Drehung als Linearkombination verknüpft werden und damit auch Null bleiben. Um Hessenbergform zu erreichen, werden (n-)(n-2) 2 Rotationen benötigt. Insgesamt benötigt man 0 3 n3 + 8 n 2 + 2 n+4 Multiplikationen und 3 für jede Rotation eine Quadratwurzel. Man sollte die Winkel ϕ, die für jede Rotation benutzt wurden, in der Matrix an der Stelle abspeichern, wo das damit gerade eliminierte Element war. So kann man alle Rotationen auch wieder rückgängig machen und beispielsweise über die Beziehung x i = Q y i (mit y i als i-ter Eigenvektor der Endmatrix, x i der i-te Eigenvektor der Ausgangsmatrix A und Q als Produkt aller Rotationen) leicht die Eigenvektoren von A errechnen. Allerdings speichert man nicht den Winkel ϕ ab, sondern einen Zahlenwert ϱ : ϱ = falls sinϕ = ϱ = sinϕ falls sinϕ < cosϕ ϱ = sgn(sinϕ) cosϕ falls sinϕ cosϕ und sinϕ So ist alles Eindeutig abgespeichert, da wir in (0.4) den Drehwinkel durch die Vorzeichenfestlegung den Winkel ϕ auf Werte zwischen π und + π beschränkt haben. 2 2 Transformation auf Tridiagonalform Ist die Ausgangsmatrix A symmetrisch, so erreicht man mittels der Rotationen sogar eine Matrix J mit tridiagonaler Gestalt, da die Symmetrie bei der Ähnlichkeitstranformation erhalten bleibt und somit zwei Einträge gleichzeitig Null werden:
7 α β 2 β α 2 β 2 0. β J= 2 α 3........ βn 2 0 β n 2 α n β n β n α n Man kann den Rechenaufwand noch verringern, in dem man die Formeln für die Einträge, die von Zeilen- und Spaltenänderung betroffen sind, leicht abändert: a pp = a pp z sin ϕ a qq = a qq + z cos ϕ a qp = a qp + z cos ϕ mit z = (a pp a qq ) sin ϕ + 2 a pq cos ϕ (0.) Mit dieser Abänderung (0.) und mit Hilfe der Symmetrie ergibt sich, daß wir für die Transformation der Matrix A auf tridiagonale Form 4 3 n3-7 2 n2 + 7n + Multiplikationen 6 und wieder (n )(n 2) Quadratwurzel benötigen. 2 Beispiel Gegeben: A= 2 2 2 3 4 0 Als erstes ist das Element a 3 zu eliminieren. Das erfolgt mit einer (2,3)-Rotation. a j+,j = a 2 0 cos ϕ= sin ϕ = sgn(a j+,j) a ij a 2 j+,j +a 2 ij a j+,j a 2 j+,j +a 2 ij = sgn(a 2) a 3 a 2 2 +a2 3 = a 2 a 2 2 +a2 3 = sgn(2) 2 = 2 + 2 = 2 2 2 + 2 = 2 mit (0.2) ergeben sich die Elemente der zweiten Zeile wie folgt : a 2 = a 2 cosϕ a 3 sinϕ = 2 cosϕ sinϕ = 2 2 = = a 22 = 2 2 2 = 6 a 23 = 2 3 = =
8 a 24 = 2 4 = 6 Dann arbeitet man die dritte Zeile ab. a 3 = a pj sinϕ + a qj cosϕ = 2 + 2 = 0. Dadurch erhält man die Zwischenmatrix A = U T 6 6 A = 2 0 7 0 Nun kommen die Spaltenänderungen entsprechend (0.3). Am Ende erhält man die Matrix: 3 A = U T 7 4 6 AU = 2+ 7 0 9 0 3 An die Stelle des Elementes a 3 speichert man nun den Wert ϱ. Da sinϕ < cosϕ ist ϱ = sinϕ. Das schließt die erste Rotation ab. Die Matrix A hat an der nächsten zu bearbeitenden Stelle (4,) eine Null. Sie braucht daher nicht weiter gedreht werden und die (4,)-Rotation kann entfallen. Nach der dritten Rotation erreichen wir dann, daß die Matrix A auf Hessenbergform gebracht wurde. Literatur H. R. Schwarz: Numerische Mathematik - 997 Stuttgart - Teubner Stoer Bulirsch: Numerische Mathematik 2-978 Heidelberg - Springer Deuflhard Hohmann: Numerische Mathematik I - 2002 Berlin - De Gruyter