Die Verfahren Matlab bietet 9 verschiedene Verfahren für die iterative Lösung linearer Gleichungssysteme
an. Das nebenstehend zu sehende Script ItVerfTest1.m zeigt sie alle mit der Standardaufruf-Variante, bei der nur die Koeffizientenmatrix A des Gleichungssystems und der Vektor der rechten Seite b übergeben werden müssen, ansonsten werden voreingestellte Standardwerte benutzt. Für dieses kleine Beispiel liefern alle Verfahren die korrekte Lösung ab, siehe "Testrechnungen mit iterativen Verfahren (1)". Für solche kleinen Systeme sind aber die iterativen Verfahren nicht gedacht (siehe "Direkte Verfahren vs. Iterationsverfahren"). |
Versagen der Verfahren bei Standardaufruf, Korrektur durch mehr Iterationsschritte Schon für nicht unwesentlich größere Systeme als in dem oben zu sehenden akademischen Beispiel (hier ein Beispiel mit 33 Gleichungen) versagen alle Verfahren mit dem Standardaufruf, bei dem maximal 20 Iterationsschritte vorgesehen sind, was nicht einmal ausreicht, um eine grobe Näherung zu erzielen. Man kann zunächst eine Verbesserung durch Erhöhung der Anzahl der zugelassenen Iterationsschritte erreichen. Wenn man z. B. bei einem Gleichungssystem mit m Gleichungen 2m Iterationsschritte zulässt (bei dem Beispiel mit 33 Gleichungen also anstatt 20 nun 66 Iterationen), dann verbessert sich die Situation (in dem zitierten Beispiel liefern immerhin 5 von 9 Verfahren brauchbare Ergebnisse ab). Aber befriedigend ist die Situation damit nicht, zumal bei größeren Systemen auch diese Maßnahme erfolglos sein kann. Weil die Anzahl zugelassener Iterationsschritte (außer bei gmres) der 4. zu übergebene Parameter ist, muss auch der 3. Parameter (Toleranz für die Norm des Restvektors) angegeben werden (Default-Wert: 10-6). Der Aufruf der Function pcg würde dann z. B. so aussehen: x = pcg (A , b , 1e-6 , m*2) |
Versagen der Verfahren bei Standardaufruf, Verbesserung durch Präkonditionierung Für praxisrelevante Systeme ist eine weitere Maßnahme zur Konvergenzverbesserung beinahe unerlässlich: Präkonditionierung verändert das Gleichungssystem in dem Sinne, dass sich die Lösung nicht ändert, die Konvergenz der iterativen Verfahren aber beschleunigt wird. Alle 9 Verfahren, die Matlab anbietet, sind dafür vorbereitet. Dafür müssen ihnen geeignete Präkonditionierer (Matrizen) als 5. bzw. 5. und 6. Parameter übergeben werden. Hier muss also der Anwender wissen, wie er solche Matrizen erzeugt, vgl. hierzu z. B. "Testrechnungen mit Präkonditionierung mit Matlab" und "Test: Präkonditionierung mit Incomplete Cholesky".
|