Verbesserung der Genauigkeit einer Lösung

Die Lösung eines linearen Gleichungssystems kann durch die unvermeidlichen Rundungsfehler bei der sehr großen Anzahl von Operationen ungenau bis unbrauchbar werden (siehe z. B. "Beispiel: System mit schlecht konditionierter Matrix"). Man kann auf folgende Weise versuchen, die Genauigkeit zu verbessern:

Zeilenskalierung

Das Skalieren aller Zeilen der Koeffizientenmatrix auf die Art, dass das größte Element einer Zeile den Wert 1 hat, bringt häufig eine deutliche Verringerung (und damit Verbesserung) der Konditionszahl. Man kann dies als Multiplikation des Gleichungssystems

AxGleichB10

mit einer Diagonalmatrix D auffassen, die auf der Hauptdiagonalen jeweils den reziproken Wert des betragsgrößten Elements der entsprechenden Zeile von A hat:

DAxGleichDB

Es ist klar, dass dieses Gleichungssystem die gleiche Lösung x wie das ursprüngliche System hat (es ist ja nichts anderes als die Division jeder einzelnen Gleichung durch ihren betragsgrößten Koeffizienten).

Dass diese Skalierung die Konditionszahl tatsächlich verbessert, dass man allerdings darin kein Allheilmittel sehen kann, verdeutlicht dieses Beispiel mit einer schlecht konditionierten Matrix.

Man kann noch einen Schritt weitergehen und auf die Zeilenskalierung noch eine Spaltenskalierung folgen lassen, so dass auch das größte Element jeder Spalte den Wert 1 hat. Dies ist durch eine entsprechende Rechtsmultiplikation mit einer Diagonalmatrix zu realisieren, was auf ein Gleichungssystem mit einem transformierten Vektor der Unbekannten führt (entsprechend dem nachfolgend beschriebenen Verfahren zur Skalierung symmetrischer Matrizen). Da diese zusätzliche Skalierung im Regelfall keine nennenswerte weitere Verbesserung bringt, wird sie hier nicht näher beschrieben.

Skalierung bei symmetrischer Koeffizientenmatrix

Bei linearen Gleichungssystemen mit symmetrischer (positiv definiter) Koeffizientenmatrix, wie sie für die Finite-Elemente-Methode typisch sind, sollte bei der Skalierung unbedingt die Symmetrie erhalten bleiben. Multiplikation der Koeffizientenmatrix sowohl von links als auch von rechts mit einer Diagonalmatrix D garantiert das Erhalten der Symmetrie:

DADDxGleichDB

Um das Gleichungssystem nicht zu verfälschen, muss die Rechtsmultiplikation der Matrix A mit der Diagonalmatrix D durch die zusätzliche Multiplikation mit der Inversen der Diagonalmatrix kompensiert werden. Diese wird mit dem Vektor der Unbekannten x zu einem neuen Vektor

yGleichDM1x

zusammengefasst. Es wird das Gleichungssystem

AqueryGleichBquer

nach y aufgelöst. Schließlich ergibt sich der gesuchte Lösungsvektor des Originalsystems aus

xGleichDy

Vorab muss natürlich die Diagonalmatrix D auf geeignete Weise festgelegt werden. Man kann z. B. die reziproken Werte der Quadratwurzeln der Diagonalelemente von A verwenden. In diesem Fall skaliert man die Matrix A so, dass durch die Rechts- und Linksmultiplikation mit D auf der Hauptdiagonalen nur Einsen stehen.

Auf diesen etwas umständlichen Prozess kann im Allgemeinen bei Verwendung von Eliminationsverfahren verzichtet werden, weil die symmetrischen und positiv definiten Koeffizientenmatrizen, wie sie z. B. bei der Finite-Elemente-Methode entstehen, mit dem Cholesky-Verfahren numerisch sehr stabil gelöst werden können und bei schlecht konditionierten Matrizen in diesen Fällen die Skalierung keine nennenswerte Verbesserung bringt.

Diese Aussage gilt nicht bei der Lösung des Gleichungssystems mit iterativen Verfahren (z. B. mit der Methode der konjugierten Gradienten), die in vielen Fällen nur bei Präkonditionierung erfolgreich arbeiten. Die hier vorgestellte Skalierung ist ein zwar einfaches, vielfach jedoch ausreichendes Verfahren dafür. Dies wird auf der Seite "Beispiel: Skalierung einer symmetrischen Matrix" demonstriert.