Warum ist das Fixieren eines Punktes zum Entfernen eines Null-Leerzeichens schlecht?


13

Eine Poisson-Gleichung mit allen Neumann-Randbedingungen hat einen einzigen konstanten dimensionalen Nullraum. Beim Lösen mit einer Krylov-Methode kann der Nullraum entweder durch Subtrahieren des Mittelwerts der Lösung bei jeder Iteration oder durch Fixieren des Werts eines einzelnen Scheitelpunkts entfernt werden.

Das Fixieren eines einzelnen Scheitelpunkts hat den Vorteil der Einfachheit und vermeidet außerdem eine zusätzliche globale Reduzierung pro Projektion. Es wird jedoch typischerweise aufgrund seiner Wirkung auf die Konditionierung als schlecht angesehen. Deshalb habe ich immer Mittel abgezogen.

Die beiden Methoden unterscheiden sich jedoch höchstens durch eine Rang-2-Korrektur, so dass sie gemäß (1) in nahezu der gleichen Anzahl von Iterationen konvergieren sollten (zumindest in exakter Arithmetik). Ist diese Argumentation richtig, oder gibt es einen zusätzlichen Grund, warum das Festhalten von Punkten schlecht ist (möglicherweise ungenaue Arithmetik)?

(1): Wie wirken sich Änderungen mit niedrigem Rang auf die Konvergenz der Krylov-Methode aus?

Antworten:


9

Ihre Argumente gelten natürlich für den nicht aufbereiteten Fall. Der Grund, warum ich das Fixieren nicht empfehle, ist, dass es Normen und Vorkonditionierung verwechselt. Wenn Sie die Größe eines typischen Diagonalwerts kennen, können Sie die Trivialgleichung für den fixierten Knoten so skalieren, dass die Normen wieder vernünftig werden.

Um die Konsequenzen für die Vorkonditionierung zu erkennen, müssen wir zwischen verschiedenen Methoden zur Durchsetzung der Fixierung unterscheiden. Ich halte zwei der beliebtesten.

  1. Wenn das Fixieren durch "Nullstellen einer Zeile" erreicht wird (Setzen einer Zeile gleich einer skalierten Zeile der Identität), führt dies zu einer Asymmetrie, die die Wahl der Krylov-Methode einschränkt und Vorkonditionierer verwirren kann (z. B. algebraisches Multigrid dazu bringen, ein schlechtes Aggregat zu wählen).
  2. Wenn die entsprechende Spalte ebenfalls auf Null gesetzt wird (wobei der Beitrag nach rechts "angehoben" wird), ist der Effekt ziemlich harmlos.

Beachten Sie, dass Interpolationsoperatoren für Multigrid möglicherweise angepasst werden müssen, um die Fixierung auf jeder Ebene auf kompatible Weise durchzuführen. Wenn Sie die Komplexität nicht stören, die durch das Implementieren der Fixierung mit einer guten Skalierung entsteht, ist dies ein guter Ansatz. In den meisten Fällen ist es störender und fehleranfälliger, das Fixieren unterbrechungsfrei zu implementieren, als den Null-Raum bereitzustellen. Indem die ursprüngliche (singuläre) Matrix vorhanden ist, kann die Lösungsbibliothek auch überprüfen, ob der bereitgestellte Nullraum tatsächlich ein Nullraum ist, um so vor einem häufigen Fehler zu schützen.

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.