7.3. Die QR-Iteration#
Zum Abschluss wollen wir noch kurz ein Verfahren diskutieren, das alle Eigenwerte einer Matrix auf einmal berechnen kann. Hierbei wollen wir \(A\) durch Transformationen auf obere Dreicksstruktur oder zumindest Blockdreickstruktur bringen, um die Eigenwerte von der Diagonale ablesen zu können. Grundidee dabei ist, dass orthogonale Ähnlichkeitstransformationen die Eigenwerte einer Matrix unverändert lassen. Gilt \(A x = \lambda x\), so folgt für \(y=Qx\) auch
wegen \(Q^T Q = I\). Es ist also naheliegend einen Zusammenhang zur QR-Zerlegung einer Matrix zu nutzen, die wir stabil mit dem Householder-Verfahren berechnen können. Haben wir eine QR-Zerlegung \(A=QR\) gegeben, so folgt
was auf den QR-Algorithmus führt.
Algorithmus 7.2
Wir starten mit \(A^0 = A\) mit einer gegebenen Matrix \(A\in\C^{n\times n}\). Im \(k\)-ten Schritt berechnen wir die QR-Zerlegung \(A^{(k)} = Q^{(k)} R^{(k)}\) und setzten dann
Unter gewissen Voraussetzungen lässt sich zeigen, dass die QR-Iteration das gewünschte Ergebniss liefert. Der Beweis ist relativ technisch, weshalb wir hier auf die Literatur verweisen.
Satz 7.2
Es sei \(A\in\C^{n\times n}\) eine diagonalisierbare Matrix mit \(A=V \Lambda V^{-1}\) und Eigenwerten \(\abs{\lambda_1} > \abs{\lambda_2} > \ldots \abs{\lambda_n} > 0\). Weiterhin existiere für \(V^{-1}\) eine LR-Zerlegung. Dann konvergiert die Folge \(A^{(k)}\) aus der QR-Iteration Algorithmus 7.2 gegen eine obere Dreicksmatrix, deren Diagonaleinträge die Eigenwerte von \(A\) sind.
Proof. Siehe z.B. [MS19]. ◻
Beispiel 7.4
Wir betrachten als Beispiel die Matrix
und wenden die QR-Iteration darauf an. Nach 10 Iterationen erhalten wir die Matrix
und nach 50 Iterationen die Matrix
wobei die Werte auf den Diagonalen approximativ den Eigenwerten von \(A\) entsprechen. Wir konvergieren hier gegen eine Diagonalmatrix, da \(A\) symmetrisch ist.
Falls \(A\in\R^{n\times n}\) eine reelle Matrix ist und wir damit auch reelle QR-Zerlegungen durchführen, \(A\) allerdings auch komplexe Eigenwerte \(\lambda\in\C\) hat, so erhalten wir eine Blockdreickstruktur, wie folgendes Beispiel illustriert.
Beispiel 7.5
Wir wenden nun die QR-Iteration auf die Matrix
an welche auch komplexe Eigenwerte hat. Nach 50 Iterationen erhalten wir die Matrix
welche keine echte Dreicksstruktur hat. Der obere rechte Eintrag enthält den reellen Eigenwert \(\lambda_1=18\) von \(A\). Der linke untere Block enthält nun die komplexen Eigenwerte von \(A\), in dem Sinne, dass die Submatrix
die Eigenwerte \(\lambda_2 \approx -1.5 + 1.9 i, \lambda_3 \approx -1.5 - 1.9 i\) enthält was den komplexen Eigenwerten von \(A\) entspricht. Hat eine Matrix also komplexe Eigenwerte liefert die QR-Iteration jeweils \(2\times 2\)-Blöcke in welche diese Eigenwerte beinhalten.