Riesiges dichtes lineares System lösen?


11

Gibt es Hoffnung, das folgende lineare System mit einer iterativen Methode effizient zu lösen?

ARn×n,xRn,bRn, with n>106

Ax=b

mit

A=(ΔK) , wobeiΔ eine sehr spärliche Matrix mit einigen Diagonalen ist, die sich aus der Diskretisierung des Laplace-Operators ergibt. Auf der Hauptdiagonale gibt es6 und es gibt6 andere Diagonalen mit1 darauf.

K ist eine vollständigeRn×n Matrix, die vollständig aus Einsen besteht.

Das Lösen von A=Δ funktioniert gut mit iterativen Methoden wie Gauß-Seidel, da es sich um eine spärliche diagonal dominante Matrix handelt. Ich vermute, dass das Problem A=(ΔK) für eine große Anzahl von so gut wie unmöglich effizient zu lösen ist n, aber gibt es einen Trick, um es vielleicht zu lösen und die Struktur von auszunutzen K?

EDIT: Würde so etwas machen

Δxk+1=b+Kxk // lösemit Gauß-Seidelnachxk+1

zur richtigen Lösung konvergieren? Ich habe gelesen, dass eine solche Aufteilungsmethode konvergiert, wenn , wobei ρ die Spektralnorm ist. Ich habe die Eigenwerte von Δ - 1 K für einige verschiedene kleine Werte von n manuell berechnet und sie sind alle Null mit Ausnahme desjenigen, der einen ziemlich hohen negativen Wert hat. (ungefähr ~ 500 für n = 256 ) Ich denke, das würde nicht funktionieren.ρ(Δ1K)<1ρΔ1Knn=256

EDIT: Weitere Informationen zu Δ :

ist symmetrisch und negativ bestimmt und diagonal dominant.ΔRn×n

Es wird folgendermaßen in matlab erstellt

n=W*H*D;

e=ones(W*H*D,1);

d=[e,e,e,-6*e,e,e,e];

delta=spdiags(d, [-W*H, -W, -1, 0, 1, W, W*H], n, n);


Können Sie bitte weitere Informationen zu bereitstellen ? Symmetrisch? Bestimmt, halbbestimmt, nicht eindeutig? Δ
Stefano M

ist symmetrisch und negativ bestimmt. Δ
yon

Hilft Ihnen die Woodbury Matrix Identity , da K einen niedrigen Rang hat?
Aron Ahmadia

Antworten:


14

n>106n1012ΔΔ

  • Verwenden Sie das umrandete System

M=(ΔeeT1)

Dabei ist ein Spaltenvektor, der aus allen besteht und das System löste

M(xy)=(b0)

Verwenden eines iterativen oder direkten Lösers.

  • Verwenden Sie eine Krylov-Methode und wenden Sie die Matrix als (dh spärliche Matrix plus Rang-1-Korrektur. Verwenden Sie Ihren vorhandenen Vorkonditionierer oder Aktualisieren Sie diese mit der Sherman-Morrison-Formel , insbesondere wenn Sie eine direkte Lösung mit möchten .Δ - e e T P - 1Δ - 1 ΔAΔeeTP1Δ1Δ

Ich würde eher denken, dass Sie mit dem zweiten Ansatz viel besser dran sind. Der Punkt ist einfach, dass Sie nicht versuchen dürfen, die Matrix im Speicher zu speichern oder ein Matrixvektorprodukt damit zu erstellen. Vielmehr multiplizieren Sie jedes Mal, wenn Sie mit mit einem Vektor in Ihrem iterativen Schema multiplizieren müssen, und berechnen dann . Der Begriff in Klammern ist nur die Summe der Einträge von und Sie berechnen ihn nur einmal. Jed hat das bereits gut erklärt, aber ich wollte die Reihenfolge der Operationen hervorheben. A z h = Δ z y = h - e ( e T z ) zKAzh=Δzy=he(eTz)z
Wolfgang Bangerth
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.