Wie kann festgestellt werden, dass eine iterative Methode für große lineare Systeme in der Praxis konvergent ist?


11

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


1
Gute Frage! Wenn Sie "Konvergenz herstellen" sagen, meinen Sie damit "Feststellen, dass die Lösung konvergiert" oder "Feststellen, dass Konvergenz stattfinden wird"? Ich weiß zum Beispiel, dass das PETSc KSP-Objekt einige Standardtechniken zum Testen der Konvergenz hat (die Fehlernorm nimmt ab, die maximale Anzahl von Iterationen). Ist dies die Art von Antwort, nach der Sie suchen?
Aron Ahmadia

@aron: Ich denke, es wird interessant sein, Antworten zu beiden Themen zu sehen.
Allan P. Engsig-Karup

Antworten:


6

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

Ax=b

x^r^
  1. Linke Vorkonditionierung(P1(Axb))

    r^=P1(Ax^b)
  2. Nein / Rechts Vorkonditionierung(AP1Px=b)

    r^=Ax^b

Konvergenzkriterien

  1. Absolute Toleranz - Das absolute Toleranzkriterium ist erfüllt, wenn die Norm des Residuums kleiner als die vordefinierte Konstante : atol
    r^atol
  2. Relative Toleranz - Das relative Toleranzkriterium ist erfüllt, wenn die Norm des Residuums um einen Faktor der vordefinierten Konstanten kleiner als die Norm der rechten Seite ist :rtol
    r^rtolb
  3. Andere Kriterien - Die iterative Lösung kann auch aufgrund der Erkennung einer kleinen Schrittlänge oder einer negativen Krümmung konvergieren.

Divergenzkriterien

  1. 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.

  2. Restliches NaN - Wenn der Rest zu irgendeinem Zeitpunkt NaN ergibt, kehrt der Löser als divergierend zurück.

  3. 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

    r^dtolb
  4. Solver-Aufschlüsselung Die Krylov-Methode selbst kann Divergenz signalisieren, wenn sie eine singuläre Matrix oder einen Vorkonditionierer erkennt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.