Welche Richtlinien sollte ich bei der Auswahl eines Solvers für spärliche lineare Systeme beachten?


49

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?

Antworten:


33

Das Wichtigste bei der Auswahl iterativer Löser ist das Spektrum des Operators (siehe dieses Dokument) . Es gibt jedoch so viele negative Ergebnisse, dass in diesem Artikel kein iterativer Löser für alle Probleme gewinnt, und in diesem Artikel wird nachgewiesen, dass sie für jedes Spektrum eine beliebige Konvergenzkurve für GMRES erhalten können. Daher scheint es unmöglich, das Verhalten von iterativen Lösern vorherzusagen, außer in einigen wenigen Einzelfällen. Daher ist es Ihre beste Option, sie alle mit einem System wie PETSc zu testen , das auch direkte Löser hat.


2
"Werfen Sie alles, was Sie können" war so ziemlich der Rat, den ich gewohnt war. :) Das dritte Papier, auf das Sie verlinken, habe ich noch nie gesehen. Dank dafür!
JM

2
Matt hat eine großartige Antwort, aber Sie müssen sie im Kontext der Community sehen, aus der er stammt (groß angelegte wissenschaftliche Berechnungen). Sie werden feststellen, dass bei kleinen Problemen (z. B. weniger als hunderttausend Unbekannten) die direkten Löser die iterativen Methoden bei weitem übertreffen, wenn das Problem nicht stark elliptisch ist. Ich habe in der Literatur keine guten allgemeinen Veröffentlichungen gesehen, die Sie zu einer anfänglichen Startstrategie führen würden, die mir etwas peinlich ist.
Aron Ahmadia

5
Arons Schätzung ist gut, hängt jedoch stark von der Füllung ab, da spärliche direkte Methoden normalerweise den Speicher ausschöpfen, bevor sie die Geduld erschöpfen.
Matt Knepley

18

Die Wahl zwischen direkten und iterativen Methoden hängt von den jeweiligen Zielen und Problemen ab.

Bei direkten Methoden können wir Folgendes beachten:

  • Die Koeffizientenmatrix des linearen Systems ändert sich im Laufe der Berechnung und kann bei spärlichen Systemen den Speicherbedarf erschöpfen und den Arbeitsaufwand durch das Ausfüllen erhöhen
  • Muss vervollständigt werden, um nützliche Ergebnisse zu liefern
  • Die Faktorisierung kann in nachfolgenden Schritten wiederverwendet werden, wenn mehrere rechte Seiten vorhanden sind
  • Kann nur zum Lösen von linearen Systemen verwendet werden.
  • Scheitert selten.

Bei iterativen Methoden können wir Folgendes beachten:

  • Ziel ist es, erst nach wenigen Iterationen ein Teilergebnis zu erhalten.
  • Der Lösungsaufwand sollte geringer sein als bei direkten Methoden für dasselbe Problem.
  • Sparsam in Bezug auf die Lagerung (kein Ausfüllen)
  • Oft einfach zu programmieren.
  • Eine bekannte ungefähre Lösung kann ausgenutzt werden.
  • Manchmal sind sie schnell und manchmal nicht (manchmal sogar divergent).
  • Bei komplexen Problemen sind iterative Methoden im Vergleich zu direkten Methoden erheblich weniger robust.

Richtlinien für die Verwendung direkter oder iterativer Methoden?

  • Iterative Methoden, wenn die Koeffizientenmatrix spärlich ist und direkte Methoden die Spärlichkeit nicht effizient nutzen können (vermeiden Sie das Erstellen von Ausfüllungen).
  • Direkte Methoden für mehrere rechte Seiten.
  • Iterative Methoden können effizienter sein, wenn die Genauigkeit weniger wichtig ist
  • Iterative Methoden für nichtlineare Gleichungssysteme.

8
O(n)O(n)O(n2)O(1)

8

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.


5
Diese Antwort scheint den Eindruck zu erwecken, dass die Effektivität von Multigrid auf der Suche nach einer guten ersten Schätzung beruht. In Wirklichkeit ist die anfängliche Vermutung für lineare Probleme von untergeordneter Bedeutung und für Full Multigrid von untergeordneter Bedeutung. Multigrid arbeitet aufgrund spektraler Trennung. Beachten Sie, dass die Leistung von Multigrid bei schwierigen Problemen eine erhebliche Herausforderung darstellt. Multigrid funktioniert ziemlich gut parallel, es war die Hauptzutat für mehrere Gordon Bell-Preise und einige Open-Source-Pakete, die auf den größten Maschinen von heute mit hoher Effizienz ausgeführt werden. Informationen zu GPU-Implementierungen finden Sie in der CUSP-Bibliothek.
Jed Brown

Meistens ist eine zufällige erste Vermutung gut genug. Beim Extrahieren von Eigenwerten mit dem Lanczos-Algorithmus hilft ein zufälliger Start- / Neustartvektor. Im Lanczos-Algorithmus finden gelegentlich Neustarts statt.
AnilJ

3

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.

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.