Vorkonditionierer
Vorkonditionierer
Eine unvollständige
Zerlegung von
kann als effizienter Vorkonditionierer für symmetrische
Matrizen verwendet werden [van89].
Man versteht darunter eine partielle Cholesky-Zerlegung,
bei der jedes Auffüllen von Nebendiagonalelementen unterdrückt wird. Im Zusammenhang
mit CG-Lösern gehört die Methode zur Klasse der ICCG
(Incomplete Cholesky Conjugate Gradient)-Löser. Da kein Auffüllen der Nebendiagonalelemente
erlaubt ist, spricht man von einem ICCG(0) Löser.
Eine vollständige symmetrische Faktorisierung einer Matrix
kann immer nur dann erfolgen,
wenn die Matrix
symmetrisch, positiv definit und eine M-Matrix ist.
Die genannten Vorbedingungen gelten ebenso für eine unvollständige Zerlegung von
[van89][Mei77][Man79].
Die Vorkonditionierungsmatrix wird aus
in der
heuristischen Form

angesetzt.
Unter der Forderung, daß die Matrix
möglichst genau approximiert wird, wobei nur die
Diagonalmatrix
variiert und
bzw.
unverändert bleiben,
ergibt sich folgende Rechnung:

Die Rekursion
welche die unvollständige Cholesky-Faktorisierung beschreibt, ist in Komponentenschreibweise ohne Berücksichtigung komprimierter Matrixformate z.B. als

anzuschreiben.
Es ist natürlich effizienter, gleich
zu berechnen
und dazu die Rekursion mit
in die Form

zu bringen.
Als Ergebnis erhält man die invertierte Diagonalmatrix
, die im
Vektor
zurückgegeben wird.
Das zu lösende System
wird zunächst in seiner
vorkonditionierten Form

angeschrieben. Für die weitere Rechnung ist es vorteilhaft,
mit
symmetrisch

zu skalieren.




Der vorkonditionierte CG-Löser kann daher auf der neuen Struktur

operieren.
In Abschnitt 4.5.4 wird erwähnt, daß es nicht notwendig ist, den Ausdruck

direkt zu bilden, sondern durch eine Matrix-Vektor-Multiplikation, eine Rücksubstitution und eine Vorwärtselimination

zu ersetzen. In [Eis81] wird gezeigt, daß sich der Aufwand stark reduziert, wenn folgende Identitäten ausgenützt werden:

Bei dieser als Eisenstat-Trick bekannten Methode wird die
Multiplikation
durch eine Vorwärtselimination,
eine Vektormultiplikation und eine Rücksubstitution in der Art
ersetzt.
Die Vorwärtselimination (4.71) kann auch für die Berechnung von
herangezogen werden.
Eine unwesentliche, aber einfach zu implementierende Verbesserung des Algorithmus erhält man dadurch, daß
man nicht
, sondern
abspeichert.
Es ist auch anzumerken, daß man während der Iteration mit

arbeiten kann und nach der Iteration die Lösung

rückskaliert und rücksubstituiert.