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".
Vorsicht!
Die Standard-Variante für den Aufruf der iterativen Verfahren zur Lösung linearer Gleichungssysteme (nur Übergabe der Koeffizientenmatrix und des Vektors der rechten Seite) führt bei nur ganz wenigen kleinen Systemen zum Erfolg. Auch die Erhöhung der Anzahl zugelassener Iterationen bringt oft nicht den erhofften Erfolg. Präkonditionierung, die eine Vorleistung erfordert, ist in der Regel unabdingbar, garantiert aber auch nicht immer den Erfolg.
Man lasse sich auch nicht täuschen vom Namen des pcg-Verfahrens, der für "Preconditioned conjugate gradient" steht. Auch diese Function arbeitet nicht automatisch mit Präkonditionierung, sondern nur, wenn ihr (wie bei den anderen Verfahren) ein Präkonditionierer übergeben wird.
|
|
Liebe Matlab-Entwickler,
die Probleme, die in den Algorithmen der iterativen Verfahren stecken, kann man natürlich auch durch geschickteste Programmierung nicht beseitigen, aber man kann sie abschwächen. Und ...
- ... ist es wirklich sinnvoll, dass der Standardwert für die Anzahl zugelassener Iterationen so klein ist, und ...
- ... könnte nicht die Skalierung (der Aufwand dafür ist unbedeutend) als einfache Variante der Präkonditionierung der Standard für alle Verfahren sein (gegebenenfalls mit der Möglichkeit, diese Präkonditionierung zu unterdrücken)?
|
|
|