In der Computerwissenschaft begegnen wir häufig großen linearen Systemen, die wir mit einigen (effizienten) Mitteln lösen müssen, z. B. entweder mit direkten oder iterativen Methoden. Wenn wir uns auf Letzteres konzentrieren, wie können wir feststellen, dass eine iterative Methode zur Lösung großer linearer Systeme in der Praxis konvergent ist?
Es ist klar, dass wir eine Trial-and-Error-Analyse durchführen können (vgl. Warum konvergiert mein iterativer linearer Löser nicht? ) Und uns auf iterative Methoden verlassen können, die Konvergenz durch Beweise garantieren oder eine solide Erfahrungsbasis haben (z. B. Krylov-Subraummethoden wie CG und GMRES) für symmetrische bzw. unsymmetrische Systeme).
Aber was kann getan werden, um Konvergenz in der Praxis herzustellen? und was wird gemacht
quelle
Antworten:
Für viele partielle Differentialgleichungen, die in der Natur auftreten, insbesondere bei starken Nichtlinearitäten oder Anisotropien, kann die Wahl eines geeigneten Vorkonditionierers einen großen Einfluss darauf haben, ob die iterative Methode schnell, langsam oder überhaupt konvergiert. Beispiele für Probleme, von denen bekannt ist, dass sie schnelle und wirksame Vorkonditionierer aufweisen, umfassen stark elliptische partielle Differentialgleichungen, bei denen das Mehrgitterverfahren häufig eine schnelle Konvergenz erreicht. Es gibt eine Reihe von Tests, mit denen die Konvergenz bewertet werden kann. Hier werde ich die Funktionalität von PETSc als Beispiel verwenden, da es wohl die älteste und ausgereifteste Bibliothek ist, um spärliche Systeme linearer (und nichtlinearer Gleichungen) iterativ zu lösen.
PETSc verwendet ein Objekt namens KSPMonitor, um den Fortschritt eines iterativen Lösers zu überwachen und zu entscheiden, ob der Löser konvergiert oder divergiert hat. Der Monitor verwendet vier verschiedene Kriterien, um zu entscheiden, ob angehalten werden soll. Weitere Details zur Diskussion hier finden Sie in der Manpage für KSPGetConvergedReason () .
Wir gehen davon aus, dass der Benutzer notational das folgende Gleichungssystem für löst : Wir nennen die aktuelle Vermutung und definieren den Rest basierend auf dem Stil der Vorkonditionierung:x
Linke Vorkonditionierung(P−1(Ax−b))
Nein / Rechts Vorkonditionierung(AP−1Px=b)
Konvergenzkriterien
Divergenzkriterien
Maximale Iterationen - Die Anzahl der Iterationen, die ein Solver ausführen kann, wird durch maximale Iterationen begrenzt. Wenn keines der anderen Kriterien erfüllt ist, wenn die maximale Anzahl von Iterationen erreicht ist, kehrt der Monitor als divergent zurück.
Restliches NaN - Wenn der Rest zu irgendeinem Zeitpunkt NaN ergibt, kehrt der Löser als divergierend zurück.
Divergenz der Residuen-Norm Der Monitor kehrt als divergent zurück, wenn zu irgendeinem Zeitpunkt die Norm des Residuums um einen Faktor der vordefinierten Konstanten größer als die Norm der rechten Seite ist :dtol
Solver-Aufschlüsselung Die Krylov-Methode selbst kann Divergenz signalisieren, wenn sie eine singuläre Matrix oder einen Vorkonditionierer erkennt.
quelle