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:
- calcular com o método de Arnoldi;
- encontre o que minimiza ;
- compute ;
- 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 n ∈ R n e γ n ∈ R , 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
- ^ Y. Saad e MH Schultz
- ^ 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
- ^ N.Nifa. "Tese de Doutorado" (PDF) .
- ^ Eisenstat, Elman & Schultz, Thm 3.3. NB todos os resultados para GCR também são válidos para GMRES, cf. Saad e Schultz
- ^ Trefethen & Bau, Thm 35,2
- ^ 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 .
- ^ 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 .
- ^ 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