Por que o gradiente conjugado funciona com esse pré-condicionador não simétrico?

8

Em esta discussão anterior da seguinte maneira multiplicativo para combinar precondicionadores simétricas e P 2 para o sistema simétrico Um x = b foi sugerido: P - 1 combinação : = P - 1 1 + P - 1 2 ( I - A P - 1 1 ) = P - 1 1 + P - 1 2 - P -P1P2Ax=b

Pcombo1:=P11+P21(IAP11)=P11+P21P21AP11.

Este pré-condicionador combinado não é simétrico. No entanto, tentei usá-lo de qualquer maneira em gradientes conjugados em vários contextos diferentes, e o método sempre parece convergir muito bem. Por que é isso?


Exemplo 1: Matrizes aleatórias.

% 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)

Aqui está a saída que recebo:

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

Exemplo 2: Combinando multigrid com cholesky incompleto para resolver a equação de Poisson.

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)])

Para isso, recebo os resultados:

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

Notas:

  • Também vi o mesmo comportamento qualitativo em matrizes surgindo em situações mais complicadas / realistas.
  • Ax=berAe=rP1AP2A
Nick Alger
fonte
x
@WolfgangBangerth Obrigado, isso foi um erro de digitação, corrigido.
Nick Alger

Respostas:

4

Em resumo, a ortogonalização dos vetores de Krylov ocorre em relação ao operador, mas não em relação ao pré-condicionador.

Ax=bB

v^1=v~1=Bbv1=v~1/c1v^i=BAvi1v~i=v^ij=1i1Avk,v^ivkvi=v~i/cici=v~i,v~i
  • v^i
  • v~i
  • vi

Agora, o interessante disso é que obtemos várias propriedades. Os dois que realmente importam para você são

  1. span{vi}i=1m=span{(BA)i1(Bb)}i=1m
  2. VTAV=I

v^iBAvi1v1Bbv~iBA

Ax=bxβ

AVβ=b
VTAVβ=VTb
VTAV=I
β=VTb
x=VVTb.
BABBAB

BBri,rj=0ijBAvi,Avj=0|ij|2B

BB

wyer33
fonte
1

Leia http://www.sciencedirect.com/science/article/pii/S1877050915010492 "Pré-condicionamento não simétrico para métodos de gradiente conjugado e descida mais íngreme"

user25364
fonte
6
Bem-vindo ao SciComp.SE! As respostas não devem conter apenas um link, pois elas podem desaparecer a qualquer momento ou - como neste caso - ricochetear em um paywall. Você poderia resumir o conteúdo deste artigo? Caso contrário, isso é mais um comentário do que uma resposta.
Christian Clason