Ajude a manter o site livre, gratuito e sem propagandas. Colabore!
Em revisão
Em revisão
O GMRES (do inglês, Generalized Minimal Residual Method1111endnote: 11Desenvolvido por Yousef Saad e H. Schultz, 1986. Fonte: Wikipedia.) é um método de subespaço de Krylov1212endnote: 12Alexei Nikolajewitsch Krylov, 1863 - 1945, engenheiro e matemático russo. Fonte: Wikipédia. e é considerado uma das mais eficientes técnicas para a resolução de sistemas lineares gerais e de grande porte (esparsos).
Em revisão
A ideia básica é resolver o sistema linear
(1.57) |
por um método de projeção. Mais especificamente, busca-se uma solução aproximada no subespaço afim de dimensão , impondo-se a condição de Petrov1313endnote: 13Georgi Iwanowitsch Petrov, 1912 - 1987, engenheiro soviético. Fonte: Wikipedia.-Galerkin1414endnote: 14Boris Galerkin, 1871 - 1945, engenheiro e matemático soviético. Fonte: Wikipédia.
(1.58) |
onde também é um subespaço de dimensão . Quando é um subespaço de Krylov, i.e.
(1.59) |
temos o método de subespaço de Krylov. Aqui, temos o resíduo
(1.60) |
sendo uma aproximação inicial para a solução do sistema. Notamos que com isso, temos que a aproximação calculada é tal que
(1.61) |
onde é um dado polinômio de grau . No caso particular de , temos
(1.62) |
Diferentes versões deste método são obtidas pelas escolhas do subespaço e formas de precondicionamento do sistema.
Em revisão
O GMRES é um método de subespaço de Krylov assumindo , com
(1.63) |
onde é o vetor unitário do resíduo para uma dada aproximação inicial da solução do sistema .
Vamos derivar o método observando que qualquer vetor em pode ser escrito como segue
(1.64) |
onde, é a matriz cujas colunas formam uma base ortogonal de e . Aqui, é computada usando-se o seguinte método de Arnoldi1515endnote: 15Walter Edwin Arnoldi, 1917 - 1995, engenheiro americano estadunidense. Fonte: Wikipédia.- Gram1616endnote: 16Jørgen Pedersen Gram, 1850 - 1916, matemático dinamarquês. Fonte: Wikipédia.-Schmidt1717endnote: 17Erhard Schmidt, 1876 - 1959, matemático alemão. Fonte: Wikipédia. modificado [9, Subseção 6.3]:
Dado de norma 1
Para :
Para :
Se , então pare.
Seja, então, a matriz de Hessenberg1818endnote: 18Karl Adolf Hessenberg, 1904 - 1959, engenheiro e matemático alemão. Fonte: Wikipédia. cujas entradas não nulas são computadas pelo algoritmo acima (Passos 2(a)i-ii). Pode-se mostrar que [9, Proposição 6.5]
(1.65) | ||||
(1.66) | ||||
(1.67) |
onde, .
A aproximação GMRES é então computada como
(1.68) | ||||
(1.69) |
Observamos que este último é um pequeno problema de minimização, sendo que requer a solução de um sistema de mínimos quadrados, sendo normalmente pequeno.
Em resumo, a solução GMRES é computada seguindo os seguintes passos:
Escolhemos uma aproximação inicial para a solução de .
Computamos o resíduo .
Computamos o vetor unitário .
Usamos o método de Arnoldi-Gram-Schmidt modificado para calculamos uma base ortogonal de e a matriz de Hessenberg associada.
Computamos .
Computamos .
Pode-se mostrar que o GMRES converge em ao menos passos.
No algoritmo acima, o método modificado de Gram-Schmidt é utilizado no processo de Arnoldi. Uma versão numericamente mais eficiente é obtida quando a transformação de Householder1919endnote: 19Alston Scott Householder, 1904 - 1993, matemático americano estadunidense. Fonte: Wikipédia. é utilizada. Consulte mais em [9, Subsetion 6.5.2].
O restarted GMRES é uma variação do método para sistemas que requerem uma aproximação GMRES com grande. Nestes casos, o método original pode demandar um custo muito alto de memória computacional. A ideia consiste em assumir pequeno e, caso não suficiente, recalcular a aproximação GMRES com . Este algoritmo pode ser descrito como segue.
Computamos , e
Computamos e pelo método de Arnoldi
Computamos
(1.70) | |||
(1.71) |
Se é satisfatória, paramos. Caso contrário, setamos e voltamos ao passo 1.
A convergência do restarted GMRES não é garantida para matrizes que não sejam positiva-definidas.
Em revisão
Considere o problema discreto do Exercício 1.1.3.
Compute a solução com a implementação restarted GMRES
Por padrão, o intervalo de iterações entre as inicializações é restart=20. Compare o desempenho para diferentes intervalos de reinicialização.
Compare o desempenho entre as abordagens dos ítens a) e b) frente a implementação do método de eliminação gaussiana disponível em
Considere o problema discreto trabalhado no Exemplo 1.1.2.
Compute a solução com a implementação restarted GMRES
Por padrão, o intervalo de iterações entre as inicializações é restart=20. Compare o desempenho para diferentes intervalos de reinicialização.
Compare o desempenho entre as abordagens dos ítens a) e b) frente a implementação do método de eliminação gaussiana disponível em
Considere o seguinte problema de Poisson2020endnote: 20Siméon Denis Poisson, 1781 - 1840, matemático francês. Fonte: Wikipédia:Siméon Denis Poisson. com condições de contorno não homogêneas.
(1.72) | |||
(1.73) |
Para fixarmos as ideias, vamos assumir o domínio , a fonte
(1.74) |
e os valores no contorno
(1.75) |
Observamos que a solução analítica deste problema é
(1.76) |
Empregue o método de diferenças finitas para computar uma aproximação para a solução. Assumimos uma malha uniforme de nodos
(1.77) | |||
(1.78) |
com tamanho de malha , e . Empregando a fórmula de diferenças central encontramos o seguinte problema discreto associado
(1.79) | |||
(1.80) | |||
(1.81) | |||
(1.82) | |||
(1.83) |
Este pode ser escrito na forma matricial
(1.84) |
onde, é e assumindo a enumeração
(1.85) |
Consulte a Figura 1.4.
Compute a solução do problema discreto associado usando a seguinte implementação Python do GMRES
Compare o desempenho com a aplicação do método LU implemento em
Faça sua própria implementação do método GMRES. Valide-a e compare-a com a resolução do exercício anterior (Exercício 1.2.3).
Em revisão
O método do gradiente conjugado é uma das mais eficientes técnicas iterativas para a resolução de sistema linear com matriz esparsa, simétrica e definida positiva. Vamos assumir que o sistema
(1.86) |
onde, a é simétrica e definida positiva.
O método pode ser derivado a partir do método de Arnoldi2121endnote: 21Walter Edwin Arnoldi, 1917 - 1995, engenheiro americano estadunidense. Fonte: Wikipédia. [9, Seção 6.7] ou como uma variação do método do gradiente. Este é caminho que será adotado aqui.
Em revisão
A ideia é reformular o sistema como um problema de minimização. Vamos começar definindo o funcional
(1.87) |
O vetor que minimiza é a solução de . De fato, denotando a solução de , temos
(1.88) | ||||
(1.89) |
O último termo é independente de e, portanto, é mínimo quando
(1.90) |
é minimizado. Agora, como é definida positiva2222endnote: 22 para todo ., o menor valor deste termo ocorre quando , i.e. .
Observamos, também, que o gradiente de é
(1.91) |
i.e., é o oposto do resíduo . Com isso, temos que é a única escolha tal que . Ainda, temos que é o vetor que aponta na direção e sentido de maior crescimento de . Isso nos motiva a aplicarmos a seguinte iteração2323endnote: 23Iteração do método do máximo declive.
(1.92) | |||
(1.93) |
onde, é um escalar que regula o tamanho do passo a cada iteração. Lembrando que , temos que a iteração é equivalente a
(1.94) |
Notamos que é um ponto na reta que tem a mesma direção de e passa pelo ponto . O procedimento de escolher um entre todos os possíveis, é conhecido como pesquisa linear (em inglês, line search).
A cada iteração, queremos escolher de forma que . Isso pode ser garantido fazendo a seguinte escolha2424endnote: 24Chamada de pesquisa linear exata. Qualquer outra escolha para é conhecida como pesquisa linear não exata.
(1.95) |
A fim de resolver este problema de minimização, vamos denotar
(1.96) |
Então, observamos que
(1.97) |
Agora, usando o fato de ser simétrica, obtemos
(1.98) | ||||
(1.99) |
a qual, é uma função quadrática. Seu único mínimo, ocorre quando
(1.100) | ||||
(1.101) |
Logo, encontramos
(1.102) |
Com isso, temos a iteração do Método do Gradiente
(1.103) | |||
(1.104) | |||
(1.105) |
Observamos que, a cada iteração, precisamos computar (no cálculo de ) e (no cálculo do resíduo). Essas multiplicações matriz-vetor são os passos computacionais mais custosos do método. Podemos otimizar isso usando o fato de que
(1.106) |
Em revisão
Faça sua implementação do método do gradiente.
Use a implementação feita no Exercício 1.2.5 nos seguintes itens.
Compute a solução do problema discreto do Exemplo 1.1.2 pelo Método do Gradiente. Quantas iterações são necessárias para obter um resíduo com norma ?
Compute a solução do problema discreto do Exercício 1.2.3 pelo Método do Gradiente. Quantas iterações são necessárias para obter um resíduo com norma ?
Compare a aplicação do método GMRES2525endnote: 25scipy.sparse.linalg.gmres e do método LU2626endnote: 26scipy.sparse.linalg.spsolve nos itens anteriores.
Considere o Exercício 1.2.3.
Use sua implementação do método do gradiente para computar uma solução aproximada, cuja norma do resíduo .
Compare o desempenho com a aplicação da implementação GMRES
Em revisão
O método do gradiente consiste em uma iteração da forma
(1.107) | |||
(1.108) |
com . Ou seja, a nova aproximação é buscada na direção de . Aqui, a ideia é usar uma melhor direção para buscar a solução.
O método do gradiente conjugado é um método de gradiente que busca encontrar a solução de pela computação do mínimo do seguinte funcional2727endnote: 27Compare com o funcional dado em (1.87).
(1.109) |
onde, denota o produto interno padrão e
(1.110) |
é o produto interno induzido por , lembrando que é positiva definida2828endnote: 28Mostre que é de fato um produto interno.. Associada a este produto interno, temos a norma
(1.111) |
chamada de norma da energia. O produto interno associado é também conhecido como produto interno da energia. Com isso, definimos que dois vetores e são conjugados, quando eles são ortogonais com respeito ao produto interno da energia, i.e. quando
(1.112) |
Aqui, a ideia é desenvolver um método iterativo em que o erro a cada passo seja conjugado a todas as direções de busca anteriores. Consulte o desenvolvimento detalhado do método em [11, Seção 7.7].
Em revisão
Use o Código 3 na resolução dos seguintes itens.
Compute a solução do problema discreto do Exemplo 1.1.2 pelo método do gradiente conjugado. Quantas iterações são necessárias para obter um resíduo com norma ?
Compute a solução do problema discreto do Exercício 1.2.3 pelo método do gradiente conjugado. Quantas iterações são necessárias para obter um resíduo com norma ?
Compare a aplicação do método GMRES2929endnote: 29scipy.sparse.linalg.gmres e da implementação SciPy do método do gradiente conjugado3030endnote: 30scipy.sparse.linalg.cg
Considere o Exercício 1.2.3.
Use sua implementação do método do gradiente conjugado Código LABEL:lst:algGC para computar uma solução aproximada, cuja norma do resíduo .
Compare o desempenho com a aplicação de sua implementação do método do gradiente (Exercício 1.2.5).
Compare o desempenho com a aplicação da implementação GMRES
Em revisão
Precondicionamento refere-se a modificar o sistema linear original de forma que a computação de sua solução possa ser feita de forma mais eficiente. No lugar do sistema original
(1.113) |
resolvemos o sistema equivalente
(1.114) |
onde e a matriz é chamada de precondicionador do sistema. De forma geral, a escolha do precondicionador é tal que , mas com inversa fácil de ser computada. Além disso, uma característica esperada é que tenha esparsidade parecida com .
Em revisão
A ideia é tomar igual a uma fatoração LU incompleta (ILU, do inglês, Incomplete LU). Incompleta no sentido que entradas de e de sejam adequadamente removidas, buscando-se uma boa esparsidade e ao mesmo tempo uma boa aproximação para .
Em revisão
O precondicionamento ILU(0) impõe que as matrizes e tenham o mesmo padrão de esparsidade da matriz .
ex:possoinDnhIlu0 Consideramos o sistema linear associado ao problema discreto trabalhado no Exercício 1.2.3. Para uma malha , obtemos as matrizes representadas na Figura 1.5.
Observamos que a matriz contém duas diagonais com elementos não nulos a mais que a matriz original . Estes elementos são chamados de fill-in.
Em revisão
Considere o problema discreto do Exercício 1.2.3.
Compute a solução com o método GMRES com precondicionamento ILU(0).
Compare com a resolução com o método GMRES sem precondicionamento.
Compare com a resolução com o método CG sem precondicionamento.
O precondicionamento ILU(0) é eficiente para o método CG?
As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a Política de Uso de Dados para mais informações. Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!