Der implizite Euler mit Gleichungslöser

Bleiben wir beim Beispiel:

Hierzu stellen wir das Beispiel vom impliziten Euler in eine augenfreundliche Variante um.

implizter Euler: \[ x1 = (A_1 + \Delta t \cdot B_1)^{-1} \cdot (A_1 \cdot x0 + \Delta t \cdot C_1) \] umgestellt: \[ (A_1 + \Delta t \cdot B_1) \cdot x1 = (A_1 \cdot x0 + \Delta t \cdot C_1) \]

Die Matrizen sind bekannt, ebenso \(x0\). Die einzige Unbekannte ist \(x1\). So kann man auch zusammenfassen:

\[ A = A_1 + \Delta t \cdot B_1 \] \[ b = A_1 \cdot x0 + \Delta t \cdot C_1 \]

Damit bekommt man eine Gleichung in der Form:

$$ A \cdot x1 = b $$

Dieses Gleichungssystem kann evt Mithilfe einer Matrixinvertierung gelöst werden. Allerdings ist eine Matrixinvertierung eine langwierige Sache, die bei schwachbesetzten Matrizen auch instabil werden kann. Insbesondere Divisionen mit Werten nahe Null erzeugen Probleme durch die Genauigkeiten der Gleitkommazahlen.

Der normale Weg ist eine Lösung des Systems ohne Matrixinvertierung. Hierzu haben sich schon viele Mathematiker versucht.
Man kann für \( A \cdot x1 = b \) einen Gleichungslöser der Wahl bemühen:

Zum ersten Ausprobieren taugen das Gauss-Seidel und das Jacobi- Verfahren. Allerdings haben diese Verfahren bei schwach besetzten Matrizen massive Konvergenzprobleme. Wenn man das ganze etwas professioneller angehen will, sollte man das CG-, GMRES- oder BIGC- Verfahren in Erwägung ziehen. Die mathematische Umsetzung ist allerdings etwas aufwändiger.

Mein persöhnlicher Favorit ist das GMRES-Verfahren, das man auch als MinRES-Verfahren, also ein Verfahren mit begrenzter Genauigkeit, benutzen kann.

Weiter