Am besten lösen Sie ein nicht symmetrisches, nicht diagonal dominantes, spärliches System

8

Ich erinnere mich schwach an meine frühen "numerischen" Vorlesungen, dass iterative lineare Löser für oft erfordern, wenn zerlegt wird alsEINx=bEIN

EIN=D.+M.

Wenn D eine Diagonalmatrix ist und eine Diagonale von Null hat, sollten die Elemente von über den Einträgen in dominieren, damit iterative Löser eine gute Leistung erbringen.M.D.M.

Was ist, wenn dies nicht der Fall ist und die Einträge von sehr klein werden?D.

Soll ich dann einen Direktlöser verwenden?

Genauer gesagt beinhaltet das lineare System, das ich lösen möchte, eine Matrix wobei der nicht diagonale Teil konstant ist, der diagonale Teil jedoch von einem Parameter in einigen nicht diagonalen Teilen abhängt. trivialer Weg. Bisher sehe ich keinen Weg, um für jedes neu zu lösen .

EIN(ω)=D.(ω)+M.
ωEIN(ω)x=bω

Die diagonalen Einträge haben die Form wobei eine reelle Zahl ist, die von der Zeile abhängt, in der wir uns befinden, während ein sehr kleiner Konvergenzfaktor ist und die imaginäre Einheit ist. Könnte dies zu numerischen Instabilitäten führen, wenn ?EINjj=ω+zj+ichηzjηichω+z0

EDIT: Nun, vielleicht noch eine Sache über die Natur von : Wenn man genau auf , dann hat garantiert Pole. Dies liegt daran, dass ich letztendlich diese Matrix verwende, um die (Vielteilchen-) Green-Funktionen im Frequenzbereich zu berechnen, und diese benötigen einen Konvergenzfaktor , um ihre Pole von der realen Achse zu entfernen. Die Summe der Absolutwerte von Matrixelementen außerhalb der Diagonale in jeder Zeile beträgt höchstens , aber die Diagonale enthält immer einige Einträge, deren Realteil sehr nahe oder gleich Null ist.η 0 A ( ω ) η 10A(ω)η0A(ω)η10

Lagerbaer
quelle
@JackPoulson Stokes ist vielleicht das kanonische Beispiel für ein PDE-Sattelpunktproblem. Inkompressible Navier-Stokes werden manchmal als verallgemeinertes Sattelpunktproblem bezeichnet, da sie nicht symmetrisch sind, aber dieselbe Beschränkungsstruktur aufweisen.
Jed Brown
@JedBrown: Fair genug, es ist jetzt offensichtlich, dass ich nicht an Stokes gearbeitet habe! Ich denke immer an gemischte Methoden für Darcy, wenn ich an Sattelpunkte denke.
Jack Poulson

Antworten:

4

Obwohl es einige Einschränkungen hinsichtlich der Funktionsweise von Methoden gibt, ist das Fehlen einer diagonalen Dominanz oder Symmetrie nicht von Natur aus katastrophal. Diese Eigenschaften sind jedoch häufig mit dem schwierigeren Problem des nicht lokalen Einflusses und der Schwierigkeit der Vergröberung verbunden, und viele "Black-Box" -Löser funktionieren nicht. Um Ihre Frage inhaltlicher zu beantworten, müssen wir die Details dieses bestimmten Systems (Physik, Diskretisierung, Parameterregime) kennen.

Mein praktischer Vorschlag ist, mit direkten Lösern zu beginnen und sich nur bei Bedarf mit iterativen Lösern zu befassen. Sie können eine Karriere damit verbringen, robuste iterative Löser für ein besonders schwieriges Problem zu entwickeln.

Jed Brown
quelle
3

Eine diagonal dominante Matrix hat nach dem Satz von Gershgorin garantiert entweder alle positiven (wenn die Einträge der Diagonale alle positiv sind) oder alle negativen (wenn die Einträge alle negativ sind) Eigenwerte. Die meisten iterativen Methoden funktionieren nur, wenn sich die Eigenwerte der Iterationsmatrix in einem bestimmten Bereich der komplexen Ebene befinden. Die diagonale Dominanz stellt also sicher, dass alle Eigenwerte entweder einen streng positiven oder einen streng negativen Realteil haben (oder dass alle Eigenwerte innerhalb von a liegen bestimmter Radius einer Zahl).

Wenn Ihre Iterationsmatrix Eigenwerte aufweist, die für eine bestimmte Methode außerhalb des vorgeschriebenen Bereichs liegen, funktioniert dies normalerweise nicht richtig. Es gibt viele Methoden, aber ich kann keine bestimmte Methode auswählen, ohne mehr über das Spektrum von zu wissen .EIN(ω)

Dan
quelle
2

Wie groß / spärlich ist Ihr System? Müssen Sie das wirklich iterativ lösen?

Ich würde vorschlagen, es in Matlab oder Octave mit dem Sparse Solver zu lösen (initialisieren Sie die Matrix einfach mit "Sparse" und verwenden Sie dann Backslash). Wenn das für Sie funktioniert, verwenden Sie UMFPACK direkt, was Matlab und Octave intern für die spärlichen Lösungen verwenden.

Pedro
quelle
105106
1
106
Daher mein Vorschlag, es zuerst in Matlab oder Octave auszuprobieren - Sie werden sehen, ob der Solver effizient damit umgehen kann oder nicht. Die Effizienz hängt stark von der Struktur des Problems ab, sodass keine eindeutigen Empfehlungen abgegeben werden können.
Pedro