Warum funktioniert der konjugierte Gradient mit diesem unsymmetrischen Vorkonditionierer?

8

In diesem vorherigen Thread wurde der folgende multiplikative Weg vorgeschlagen, um die symmetrischen Vorkonditionierer und P 2 für das symmetrische System A x = b zu kombinieren : P - 1- Kombination : = P - 1 1 + P - 1 2 ( I - A P - 1 1 ) = P - 1 1 + P - 1 2 - P -P.1P.2EINx=b

P.Combo- -1: =P.1- -1+P.2- -1(ich- -EINP.1- -1)=P.1- -1+P.2- -1- -P.2- -1EINP.1- -1.

Dieser kombinierte Vorkonditionierer ist nicht symmetrisch. Ich habe jedoch versucht, es trotzdem in konjugierten Verläufen in verschiedenen Kontexten zu verwenden, und die Methode scheint immer gut zu konvergieren. Warum ist das?


Beispiel 1: Zufallsmatrizen.

% Testing multiplicative combination of preconditioners
n = 500;
[U,S,~] = svd(randn(n,n)); A = U*S*U';
[W1,S1,~] = svd(randn(n,n)); noise1 = W1*S1*W1';
[W2,S2,~] = svd(randn(n,n)); noise2 = W2*S2*W2';
P1 = A + 0.5 * noise1;
P2 = A + 0.5 * noise2;

solve_P = @(x) P1\x + P2\x - P2\(A*(P1\x));

b = randn(n,1);
x_true = A\b;
pcg(A,b,1e-6,n);
pcg(A,b,1e-6,n,P1);
x = pcg(A,b,1e-6,n,solve_P);
norm(x_true - x)/norm(x_true)

Hier ist die Ausgabe, die ich bekomme:

pcg converged at iteration 127 to a solution with relative residual 9.9e-07.
pcg converged at iteration 62 to a solution with relative residual 6.8e-07.
pcg converged at iteration 51 to a solution with relative residual 8.1e-07.
relative error= 4.23e-07

Beispiel 2: Kombination von Multigrid mit unvollständigem Cholesky zur Lösung der Poisson-Gleichung.

n = 50; N = n^2;
A = gallery('poisson',n); %Laplacian on n-by-n grid, zero dirichlet BC

L = ichol(A);
solve_P1 = @(x) L'\(L\x);
% Combinatorial multigrid: http://www.cs.cmu.edu/~jkoutis/cmg.html
solve_P2 = cmg_sdd(A); 

solve_P = @(x) solve_P1(x) + solve_P2(x) - solve_P1(A*solve_P2(x));

b = randn(N,1);
x_true = A\b;
pcg(A,b,1e-6,N);
pcg(A,b,1e-6,N,solve_P1);
pcg(A,b,1e-6,N,solve_P2);
x = pcg(A,b,1e-6,N,solve_P);
disp(['relative error= ', num2str(norm(x_true - x)/norm(x_true),3)])

Dafür bekomme ich die Ergebnisse:

pcg converged at iteration 131 to a solution with relative residual 8.4e-07.
pcg converged at iteration 44 to a solution with relative residual 6e-07.
pcg converged at iteration 19 to a solution with relative residual 7e-07.
pcg converged at iteration 12 to a solution with relative residual 4.7e-07.
relative error= 5.2e-07

Anmerkungen:

  • Ich habe auch das gleiche qualitative Verhalten bei Matrizen gesehen, das in komplizierteren / realistischeren Situationen auftritt.
  • EINx=berEINe=rP.1EINP.2EIN
Nick Alger
quelle
x
@ WolfgangBangerth Danke, das war ein Tippfehler, behoben.
Nick Alger

Antworten:

4

Kurz gesagt, die Orthogonalisierung der Krylov-Vektoren erfolgt in Bezug auf den Operator, jedoch nicht in Bezug auf den Vorkonditionierer.

Okay, sagen wir, wir wollen lösenEINx=bB.

v^1=v~1=B.bv1=v~1/.c1v^ich=B.EINvich- -1v~ich=v^ich- -j=1ich- -1EINvk,v^ichvkvich=v~ich/.cichcich=v~ich,v~ich
  • v^ich
  • v~ich
  • vich

Das Interessante daran ist, dass wir eine Reihe von Eigenschaften erhalten. Die beiden, die für Sie wirklich wichtig sind, sind

  1. Spanne{vich}}ich=1m=Spanne{(B.EIN)ich- -1(B.b)}}ich=1m
  2. V.T.EINV.=ich

v^ichB.EINvich- -1v1B.bv~ichB.EIN

Angenommen, wir möchten das System lösenEINx=bxβ

EINV.β=b
V.T.EINV.β=V.T.b
V.T.EINV.=ich
β=V.T.b
x=V.V.T.b.
B.EINB.B.EINB.

Verlieren wir etwas mit einer unsymmetrischen B.B.rich,rj=0ichjB.EINvich,EINvj=0|ich- -j|2B.

B.B.

wyer33
quelle
1

Lesen Sie http://www.sciencedirect.com/science/article/pii/S1877050915010492 "Unsymmetrische Vorkonditionierung für konjugierte Gradienten- und steilste Abstiegsmethoden"

user25364
quelle
6
Willkommen bei SciComp.SE! Antworten sollten nicht nur einen Link enthalten, da diese jederzeit verschwinden oder - wie in diesem Fall - von einer Paywall abprallen können. Können Sie den Inhalt dieses Dokuments zusammenfassen? Ansonsten ist dies eher ein Kommentar als eine Antwort.
Christian Clason