Der QR-Algorithmus

Zu jeder (reellen) Matrix A existiert eine so genannte QR-Zerlegung

Die QR-Zerlegung einer Matrix erzeugt ein Produkt aus einer Orthogonalmatrix und einer Rechtsdreiecksmatrix

mit einer Orthogonalmatrix Q und einer Rechtsdreiecksmatrix R. Für die Realisierung dieser Zerlegung gibt es verschiedene Strategien, mit dem Schmidtschen Orthonormierungsverfahren wird eine Möglichkeit auf der Seite "Inverse simultane Vektoriteration (symm. AEWP)" gezeigt (dort mit einer Rechteckmatrix und einem etwas weiter gefassten Ziel).

Auf der Basis der QR-Zerlegung für quadratische Matrizen existiert ein sehr einfacher Algorithmus für das Erzeugen der Schurschen Form einer (reellen) Matrix A:

QR-Algorithmus in seiner einfachsten Form

Jeder Iterationsschritt besteht also aus einer QR-Zerlegung und einer anschließenden Matrixmultiplikation. Die Matrizen Hk konvergieren gegen die Schursche Form der Matrix A, deren Hauptdiagonalelemente die Eigenwerte der Matrix A sind (bei konjugiert komplexen Eigenwertpaaren repräsentiert ein 2*2-Hauptdiagonalblock diese beiden Eigenwerte).

Reduzierung einer Matrix auf Hessenberg-Form

Die Hessenberg-Form einer Matrix ist eine um eine Nebendiagonale erweiterte RechtsdreiecksmatrixDer Aufwand für die oben beschriebene QR-Zerlegung kann wesentlich reduziert werden, wenn die Matrix A vorher auf die so genannte Hessenberg-Form transformiert wird. Dies ist eine Matrix, auf der zusätzlich zur Rechtsdreiecksmatrix die  Nebendiagonale unter der Hauptdiagonalen mit von Null verschiedenen Elementen besetzt ist. Dabei ist darauf zu achten, dass nur Transformationen zugelassen sind, die die Eigenwerte nicht verändern.

Dies wird erreicht durch Ähnlichkeitstransformationen mit elementaren Orthogonalmatrizen . Das Ziel wird erreicht durch die so genannten Givens-Rotationen, mit denen durch eine p-q-Transformation, die nur die Zeilen p und q und die Spalten p und q der Ausgangsmatrix verändert, erreicht werden kann, dass das Matrixelement aq,p−1 zu Null wird, wenn der Rotationswinkels φk der Gleichung

Die Givens-Bedingung für die Orthogonalmatrix sorgt dafür, dass bei der Ähnlichkeitstransformation das Element auf der Position (q,p-1) zu Null wird

genügt. Im Gegensatz zum Jacobi-Verfahren, bei dem mit einer p-q-Transformation das Element aq,p zu Null wird, ist es bei der Givens-Rotation das linke Nachbarelement. Dies hat den Vorteil, dass (im Gegensatz zum Jacobi-Verfahren) durch geeignete Wahl der Reihenfolge der Transformationen bereits erzeugte Nullen nicht wieder zerstört werden, hat allerdings den Nachteil, dass die Nebendiagonale unterhalb der Hauptdiagonalen auf diesem Wege nicht zu Null gemacht werden kann.

Eine symmetrische Tridiagonalmatrix enthält die gesamte Information auf der Hauptdiagonalen und einer NebendiagonalenWenn man z. B. die Nullen unterhalb der Nebendiagonalen spaltenweise von links nach rechts erzeugt, kommt man nach genau (n−1)(n−2)/2 Transformationen zum Ziel. Diese Anzahl entspricht der Anzahl der Nullen in der Hessenberg-Form der Matrix, das Erzeugen dieser Form ist also (im Gegensatz zum Jacobi-Verfahren) kein iterativer Prozess.

Bei symmetrischen Matrizen entstehen die Null-Elemente automatisch auch im rechten oberen Bereich der Matrix, so dass das Ergebnis schließlich eine so genannte symmetrische Tridiagonalmatrix ist.

Der oben angegebene QR-Algorithmus wird also in dem Sinne modifiziert, dass die erste Zeile, die die Startmatrix für die Iteration festlegt, durch die Hessenberg-Transformation der Matrix A ersetzt wird.

Demonstration der Aussagen an einem Beispiel

Demonstrationsprogramm MateigTest8.m erzeugt Hesenberg-Formen und realisiert den QR-AlgorithmusDas auch für verschiedene andere Aussagen verwendete kleine Beispiel, dessen Hintergrund hier beschrieben wird, soll genutzt werden, um die oben gemachten Aussagen mit Matlab zu demonstrieren. In Matlab stehen für die Transformation einer Matrix auf Hessenberg-Form die Function hess und für die QR-Zerlegung einer Matrix die Function qr zur Verfügung.

Im nebenstehend zu sehenden Script werden die beiden symmetrischen Matrizen des Allgemeinen Matrizeneigenwertproblems in den Zeilen 3 bis 17 aufgebaut. In Zeile 22 wird daraus die unsymmetrische Matrix Aq, in Zeile 28 wird die symmetrische Matrixd  As eines jeweils äquivalenten Speziellen Matrizeneigenwertproblems erzeugt (siehe dazu: "Allgemeines → Spezielles Matrizeneigenwertproblem").

In Zeile 30 werden beide Matrizen in die Hessenberg-Form transformiert (und in das Command Window ausgegeben).

In den Zeilen 31 bis 34 werden für beide Matrizen 20 Iterationsschritte des oben beschriebenen QR-Algorithmus ausgeführt, die die Matrizen in die Schursche Form bringen, so dass auf den Hauptdiagonalen die Eigenwerte zu finden sind.

 

 

 

 

 

 

 

 

Nachstehend ist zunächst ein Ausschnitt des Command Windows zu sehen, der die in der Zeile 30 ermittelten Hessenberg-Formen zeigt. Die aus der unssymmetrischen Matrix Aq erzeugte Matrix Hqk zeigt die typische Besetzung mit von Null verschiedenen Elementen ("Rechtsdreiecksmatrix + Nebendiagonale"). Die aus der symmetrischen Matrix As erzeugte Hessenberg-Matrix Hsk ist eine symmetrische Tridiagonalmatrix:

Hessenberg-Formen einer unsymmetrischen bzw. einer symmetrischen Matrix

Nach 20 Iterationsschritten des QR-Algorithmus zeigen die Matrizen Schursche Form . Die unsymmetrische Matrix führt (es ergeben sich nur reelle Eigenwerte) auf eine reine Rechtsdreiecksmatrix, die symmetrische Matrix führt auf eine reine Diagonalmatrix. In beiden Matrizen stehen die Eigenwerte auf den Hauptdiagonalen:

Ergebnis der QR-Iteration (Schursche Formen) für eine unsymmetrische bzw. eine symmetrische Matrix

Hinweise:

Die Matlab-Functions hess und qr wurden hier zur Demonstration des Verfahrens verwendet. Tatsächlich wird der Matlab-Benutzer diese Functions zur Lösung des Matrizeneigenwertproblems in der Regel nicht nutzen, weil

  • mit der Matlab-Function schur die Schursche Form direkt erzeugt werden kann. Aber auch diese Function wird man kaum benutzen, weil
     
  • die Matlab-Functions eig und eigs verfügbar sind, mit denen je nach Aufgabenstellung und abhängig vom Speicherformat der Matrizen die Lösung von Matrizeneigenwertproblemen auf recht komfortable Weise gelingt, siehe "Lösung von Matrizeneigenwertproblemen mit Matlab".