Ich erinnere mich schwach an meine frühen "numerischen" Vorlesungen, dass iterative lineare Löser für oft erfordern, wenn zerlegt wird als
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.
Was ist, wenn dies nicht der Fall ist und die Einträge von sehr klein werden?
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 .
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 ?
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 ( ω ) η 10
quelle
Antworten:
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.
quelle
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 .A ( ω )
quelle
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.
quelle