Método residual mínimo generalizado - Generalized minimal residual method

Em matemática, o método dos resíduos mínimos generalizados (GMRES) é um método iterativo para a solução numérica de um sistema não simétrico indefinido de equações lineares . O método aproxima a solução pelo vetor em um subespaço de Krylov com resíduo mínimo . A iteração de Arnoldi é usada para encontrar esse vetor.

O método GMRES foi desenvolvido por Yousef Saad e Martin H. Schultz em 1986. É uma generalização e melhoria do método MINRES devido a Paige e Saunders em 1975. O método MINRES requer que a matriz seja simétrica, mas tem a vantagem de requer apenas o manuseio de três vetores. GMRES é um caso especial do método DIIS desenvolvido por Peter Pulay em 1980. DIIS é aplicável a sistemas não lineares.

O método

Denote a norma euclidiana de qualquer vetor v por . Denote o sistema (quadrado) de equações lineares a ser resolvido por

A matriz A é considerada invertível de tamanho m- by- m . Além disso, assume-se que b é normalizado, ou seja, isso .

O n -ésimo subespaço Krylov para este problema é

onde é o erro inicial dado uma estimativa inicial . Claramente se .

GMRES aproxima a solução exata de pelo vetor que minimiza a norma euclidiana do resíduo .

Os vetores podem ser quase linearmente dependentes , portanto, em vez dessa base, a iteração de Arnoldi é usada para encontrar vetores ortonormais que formam uma base para . Em particular ,.

Portanto, o vetor pode ser escrito como com , onde é a matriz m -by- n formada por .

O processo de Arnoldi também produz uma matriz ( ) -by- Upper Hessenberg com

Para matrizes simétricas, uma matriz tri-diagonal simétrica é realmente obtida, resultando no método de minres .

Como as colunas de são ortonormais, temos

Onde

é o primeiro vetor na base padrão de , e

sendo o primeiro vetor de teste (geralmente zero). Portanto, pode ser encontrado minimizando a norma euclidiana do resíduo

Este é um problema de mínimos quadrados lineares de tamanho n .

Isso produz o método GMRES. Na -ésima iteração:

  1. calcular com o método de Arnoldi;
  2. encontre o que minimiza ;
  3. compute ;
  4. repita se o resíduo ainda não for pequeno o suficiente.

A cada iteração, um produto matriz-vetor deve ser calculado. Isso custa sobre operações de ponto flutuante para matrizes densas gerais de tamanho , mas o custo pode diminuir para matrizes esparsas . Em adição ao produto de matriz-vector, as operações de vírgula flutuante deve ser calculado no N iteração -ésimo.

Convergência

O n th iteração minimiza o residual no subespaço Krylov . Como cada subespaço está contido no próximo subespaço, o resíduo não aumenta. Após m iterações, onde m é o tamanho da matriz A , o espaço de Krylov K m é o todo de R m e, portanto, o método GMRES chega à solução exata. No entanto, a ideia é que após um pequeno número de iterações (em relação a m ), o vetor x n já é uma boa aproximação da solução exata.

Isso não acontece em geral. De fato, um teorema de Greenbaum, Pták e Strakoš afirma que para cada sequência não crescente a 1 ,…, a m −1 , a m = 0, pode-se encontrar uma matriz A tal que || r n || = a n para todo n , onde r n é o resíduo definido acima. Em particular, é possível encontrar uma matriz para a qual o resíduo permanece constante por m  - 1 iterações, e só cai para zero na última iteração.

Na prática, porém, o GMRES geralmente tem um bom desempenho. Isso pode ser comprovado em situações específicas. Se a parte simétrica de A , isto é , é definida positiva , então

onde e denotam o menor e o maior autovalor da matriz , respectivamente.

Se A é simétrico e definido positivo, então temos até

onde denota o número de condição de A na norma euclidiana.

No caso geral, onde A não é definido positivo, temos

onde P n indica o conjunto de polinómios de grau no máximo n com p (0) = 1, V é a matriz que aparecem no decomposição espectral de um , e σ ( A ) é o espectro de Uma . Grosso modo, isso diz que a convergência rápida ocorre quando os autovalores de A estão agrupados longe da origem e A não está muito longe da normalidade .

Todas essas desigualdades limitam apenas os resíduos em vez do erro real, ou seja, a distância entre a iteração atual x n e a solução exata.

Extensões do método

Como outros métodos iterativos, GMRES é geralmente combinado com um método de pré - condicionamento para acelerar a convergência.

O custo das iterações cresce como O ( n 2 ), onde n é o número da iteração. Portanto, o método às vezes é reiniciado após um número, digamos k , de iterações, com x k como estimativa inicial. O método resultante é denominado GMRES ( k ) ou GMRES reiniciado. Para matrizes definidas não positivas, este método pode sofrer estagnação na convergência, pois o subespaço reiniciado está frequentemente próximo ao subespaço anterior.

As deficiências do GMRES e do GMRES reiniciado são resolvidas pela reciclagem do subespaço Krylov nos métodos do tipo GCRO, como GCROT e GCRODR. A reciclagem de subespaços de Krylov no GMRES também pode acelerar a convergência quando sequências de sistemas lineares precisam ser resolvidas.

Comparação com outros solucionadores

A iteração de Arnoldi se reduz à iteração de Lanczos para matrizes simétricas. O método do subespaço de Krylov correspondente é o método residual mínimo (MinRes) de Paige e Saunders. Ao contrário do caso assimétrico, o método MinRes é dado por uma relação de recorrência de três termos . Pode-se mostrar que não existe um método de subespaço de Krylov para matrizes gerais, que é dado por uma relação de recorrência curta e ainda minimiza as normas dos resíduos, como faz o GMRES.

Outra classe de métodos baseia-se na iteração assimétrica de Lanczos , em particular o método BiCG . Estes usam uma relação de recorrência de três termos, mas não atingem o resíduo mínimo e, portanto, o resíduo não diminui monotonicamente para esses métodos. A convergência nem mesmo é garantida.

A terceira classe é formada por métodos como CGS e BiCGSTAB . Eles também funcionam com uma relação de recorrência de três termos (portanto, sem otimização) e podem até terminar prematuramente sem atingir a convergência. A ideia por trás desses métodos é escolher os polinômios geradores da sequência de iteração de maneira adequada.

Nenhuma dessas três classes é a melhor para todas as matrizes; sempre há exemplos em que uma classe supera a outra. Portanto, vários solucionadores são testados na prática para ver qual é o melhor para um determinado problema.

Resolvendo o problema dos mínimos quadrados

Uma parte do método GMRES é encontrar o vetor que minimiza

Observe que é uma matriz ( n  + 1) -by- n , portanto, ela fornece um sistema linear excessivamente restrito de n +1 equações para n incógnitas.

O mínimo pode ser calculado usando uma decomposição QR : encontre uma matriz ortogonal ( n  + 1) -by- ( n  + 1) Ω n e uma matriz triangular superior ( n  + 1) -by- n de modo que

A matriz triangular possui uma linha a mais do que colunas, portanto, sua linha inferior consiste em zero. Portanto, pode ser decomposto como

onde é uma matriz triangular n -by- n (portanto quadrada).

A decomposição QR pode ser atualizada de forma barata de uma iteração para a próxima, porque as matrizes de Hessenberg diferem apenas por uma linha de zeros e uma coluna:

onde h n + 1 = ( h 1, n + 1 , ..., h n + 1, n + 1 ) T . Isso implica que a pré- multiplicação da matriz de Hessenberg com Ω n , aumentada com zeros e uma linha com identidade multiplicativa, produz quase uma matriz triangular:

Isso seria triangular se σ fosse zero. Para remediar isso, é necessária a rotação Givens

Onde

Com esta rotação Givens, formamos

De fato,

é uma matriz triangular.

Dada a decomposição QR, o problema de minimização é facilmente resolvido observando que

Denotando o vetor por

com g nR n e γ nR , isso é

O vetor y que minimiza esta expressão é dado por

Novamente, os vetores são fáceis de atualizar.

Código de exemplo

GMRES regular (MATLAB / GNU Octave)

function [x, e] = gmres( A, b, x, max_iterations, threshold)
  n = length(A);
  m = max_iterations;

  % use x as the initial vector
  r = b - A * x;

  b_norm = norm(b);
  error = norm(r) / b_norm;

  % initialize the 1D vectors
  sn = zeros(m, 1);
  cs = zeros(m, 1);
  %e1 = zeros(n, 1);
  e1 = zeros(m+1, 1);
  e1(1) = 1;
  e = [error];
  r_norm = norm(r);
  Q(:,1) = r / r_norm;
  beta = r_norm * e1;     %Note: this is not the beta scalar in section "The method" above but the beta scalar multiplied by e1
  for k = 1:m

    % run arnoldi
    [H(1:k+1, k) Q(:, k+1)] = arnoldi(A, Q, k);
    
    % eliminate the last element in H ith row and update the rotation matrix
    [H(1:k+1, k) cs(k) sn(k)] = apply_givens_rotation(H(1:k+1,k), cs, sn, k);
    
    % update the residual vector
    beta(k + 1) = -sn(k) * beta(k);
    beta(k)     = cs(k) * beta(k);
    error       = abs(beta(k + 1)) / b_norm;

    % save the error
    e = [e; error];

    if (error <= threshold)
      break;
    end
  end
  % if threshold is not reached, k = m at this point (and not m+1) 
  
  % calculate the result
  y = H(1:k, 1:k) \ beta(1:k);
  x = x + Q(:, 1:k) * y;
end

%----------------------------------------------------%
%                  Arnoldi Function                  %
%----------------------------------------------------%
function [h, q] = arnoldi(A, Q, k)
  q = A*Q(:,k);   % Krylov Vector
  for i = 1:k     % Modified Gram-Schmidt, keeping the Hessenberg matrix
    h(i) = q' * Q(:, i);
    q = q - h(i) * Q(:, i);
  end
  h(k + 1) = norm(q);
  q = q / h(k + 1);
end

%---------------------------------------------------------------------%
%                  Applying Givens Rotation to H col                  %
%---------------------------------------------------------------------%
function [h, cs_k, sn_k] = apply_givens_rotation(h, cs, sn, k)
  % apply for ith column
  for i = 1:k-1
    temp   =  cs(i) * h(i) + sn(i) * h(i + 1);
    h(i+1) = -sn(i) * h(i) + cs(i) * h(i + 1);
    h(i)   = temp;
  end

  % update the next sin cos values for rotation
  [cs_k sn_k] = givens_rotation(h(k), h(k + 1));

  % eliminate H(i + 1, i)
  h(k) = cs_k * h(k) + sn_k * h(k + 1);
  h(k + 1) = 0.0;
end

%%----Calculate the Given rotation matrix----%%
function [cs, sn] = givens_rotation(v1, v2)
%  if (v1 == 0)
%    cs = 0;
%    sn = 1;
%  else
    t = sqrt(v1^2 + v2^2);
%    cs = abs(v1) / t;
%    sn = cs * v2 / v1;
    cs = v1 / t;  % see http://www.netlib.org/eispack/comqr.f
    sn = v2 / t;
%  end
end

Veja também

Referências

  1. ^ Y. Saad e MH Schultz
  2. ^ Paige e Saunders, "Solution of Sparse Indefinite Systems of Linear Equations", SIAM J. Numer. Anal., Vol 12, página 617 (1975) https://doi.org/10.1137/0712047
  3. ^ N.Nifa. "Tese de Doutorado" (PDF) .
  4. ^ Eisenstat, Elman & Schultz, Thm 3.3. NB todos os resultados para GCR também são válidos para GMRES, cf. Saad e Schultz
  5. ^ Trefethen & Bau, Thm 35,2
  6. ^ Amritkar, Amit; de Sturler, Eric; Świrydowicz, Katarzyna; Tafti, Danesh; Ahuja, Kapil (2015). "Reciclagem de subespaços de Krylov para aplicações CFD e um novo solucionador de reciclagem de híbridos". Journal of Computational Physics . 303 : 222. arXiv : 1501.03358 . Bibcode : 2015JCoPh.303..222A . doi : 10.1016 / j.jcp.2015.09.040 .
  7. ^ Gália, André (2014). Métodos de reciclagem de subespaço de Krylov para sequências de sistemas lineares (Ph.D.). TU Berlin. doi : 10.14279 / depositonce-4147 .
  8. ^ Stoer e Bulirsch, §8.7.2

Notas

  • A. Meister, Numerik linearer Gleichungssysteme , 2ª edição, Vieweg 2005, ISBN  978-3-528-13135-7 .
  • Y. Saad, Iterative Methods for Sparse Linear Systems , 2ª edição, Society for Industrial and Applied Mathematics , 2003. ISBN  978-0-89871-534-7 .
  • Y. Saad e MH Schultz, "GMRES: A generalized minimal residual algorithm for resolvendo nonsymmetric linear systems", SIAM J. Sei. Estado. Comput. , 7 : 856–869, 1986. doi : 10.1137 / 0907058 .
  • SC Eisenstat, HC Elman e MH Schultz, "métodos iterativos variacionais para sistemas não simétricos de equações lineares", SIAM Journal on Numerical Analysis , 20 (2), 345-357, 1983.
  • J. Stoer e R. Bulirsch, Introdução à análise numérica , 3ª edição, Springer, Nova York, 2002. ISBN  978-0-387-95452-3 .
  • Lloyd N. Trefethen e David Bau, III, Numerical Linear Algebra , Society for Industrial and Applied Mathematics, 1997. ISBN  978-0-89871-361-9 .
  • Dongarra et al. , Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods , 2ª Edição, SIAM, Filadélfia, 1994
  • Amritkar, Amit; de Sturler, Eric; Świrydowicz, Katarzyna; Tafti, Danesh; Ahuja, Kapil (2015). "Reciclagem de subespaços de Krylov para aplicações CFD e um novo solucionador de reciclagem de híbridos". Journal of Computational Physics 303: 222. doi: 10.1016 / j.jcp.2015.09.040