In Anwendungen tauchen immer häufiger spärliche lineare Systeme auf. Man hat eine Menge Routinen zur Auswahl, um diese Systeme zu lösen. Auf der höchsten Ebene gibt es eine Wasserscheide zwischen direkten (z. B. spärlichen Gaußschen Eliminierungen oder Cholesky-Zerlegungen mit speziellen Ordnungsalgorithmen und multifrontalen Methoden) und iterativen (z. B. GMRES, (bi-) konjugierten Gradienten) Methoden.
Wie bestimmt man, ob man eine direkte oder eine iterative Methode verwendet? Wie wählt man nach dieser Wahl einen bestimmten Algorithmus aus? Ich weiß bereits über die Ausnutzung der Symmetrie Bescheid (z. B. konjugierter Gradient für ein dünn besetztes symmetrisches positives bestimmtes System), aber gibt es noch andere Überlegungen, die bei der Auswahl einer Methode berücksichtigt werden müssen?
Die Wahl zwischen direkten und iterativen Methoden hängt von den jeweiligen Zielen und Problemen ab.
Bei direkten Methoden können wir Folgendes beachten:
Bei iterativen Methoden können wir Folgendes beachten:
Richtlinien für die Verwendung direkter oder iterativer Methoden?
quelle
Ich stimme den bereits gegebenen Antworten vollkommen zu. Ich wollte hinzufügen, dass alle iterativen Methoden eine Art Anfangsschätzung erfordern. Die Qualität dieser anfänglichen Vermutung kann häufig die Konvergenzrate der von Ihnen gewählten Methode beeinflussen. Methoden wie Jacobi, Gauss Seidel und Sukzessive Überentspannung arbeiten alle daran, bei jedem Schritt so viele Fehler wie möglich iterativ "auszugleichen" ( siehe dieses Dokument für Details)). Die ersten paar Schritte reduzieren den Hochfrequenzfehler ziemlich schnell, aber der Niederfrequenzfehler benötigt viel mehr Iterationen, um geglättet zu werden. Dies verlangsamt die Konvergenz dieser Methoden. In solchen Fällen können wir die Konvergenz beschleunigen, indem wir zuerst einen Niederfrequenzfehler lösen (z. B. dasselbe Problem bei einem gröberen Netz) und dann den Fehler mit höherer Frequenz (z. B. bei einem feineren Netz). Wenn wir dieses Konzept rekursiv durch Teilen und Erobern anwenden, erhalten wir eine sogenannte Multi-Grid-Methode. Selbst wenn das lineare System nicht symmetrisch ist, gibt es alternative Implementierungen der Mehrfachgittermethode für jedes nicht singuläre, dünn besetzte Matrixsystem (z. B. algebraische Mehrfachgittermethode), die die Konvergenz des Lösers beschleunigen können. Ihre Skalierbarkeit auf parallelen Systemen ist jedoch Gegenstand zahlreicher Untersuchungen.
quelle
In Ihrer Frage fehlt eine wichtige Information: Woher stammt die Matrix? Die Struktur des Problems, das Sie zu lösen versuchten, weist ein großes Potenzial auf, um eine Lösungsmethode vorzuschlagen.
Wenn Ihre Matrix aus einer partiellen Differentialgleichung mit glatten Koeffizienten stammt, ist eine geometrische Mehrgittermethode schwer zu übertreffen, insbesondere in drei Dimensionen. Wenn Ihr Problem weniger häufig auftritt, ist algebraisches Multigrid eine gute Methode. Beides wird üblicherweise mit Krylov-Raumfahrtmethoden kombiniert. Andere effiziente Löser können aus schnellen Multipolmethoden oder schnellen Fourier-Transformationen abgeleitet werden.
quelle