Uma coisa que CG tem a seu favor é que ele não está minimizando o discreto norma para seus polinômios residuais (que GMRES faz). Em vez disso, está minimizando uma norma induzida por matriz, e muitas vezes essa norma induzida por matriz acaba ficando muito próxima da norma energética para discretizações de problemas físicos, e freqüentemente essa é uma norma muito mais razoável para medir erros devido às propriedades de conservação que estão surgindo. da física.l2
Você também pode obter esse tipo de efeito com o GMRES, se a fatoração de Cholesky de uma matriz de massa não for muito cara, você pode forçar os produtos internos a serem os produtos internos de energia que você deseja.
Então, os casos em que se deve esperar que o CG tenha um desempenho muito diferente do GMRES são quando as constantes implícitas na equivalência de normas são muito diferentes. Isso pode ser verdade, por exemplo, em um método espectral de Galerkin de alta ordem, em que a norma discreta usada no GMRES trata todos os graus de liberdade como iguais, quando, na realidade, os gradientes polinomiais são os limites próximos mais nítidos (daí o agrupamento de nós); constantes de equivalência de norma entre essa norma e digamos que a norma L 2 contínua dada pela matriz de massa pode ser muito grande.l2L2
Suspeito que em geral não exista muita diferença entre GMRES e CG para uma matriz SPD.
fonte
Uma coisa é que o GMRES nunca é usado onde quer que o CG possa ser aplicado. Não acho que faça sentido comparar esses dois. Para matrizes SPD, o CG é definitivamente o vencedor, devido aos requisitos de armazenamento e aos motivos mencionados acima. Uma pergunta que seria interessante é encontrar uma extensão do CG aplicável a problemas nos quais o CG não pode ser aplicado. Existem métodos como o BiCG-stab que não requerem aumento linear de memória como o GMRES, mas a convergência não é tão boa quanto o GMRES (algumas vezes, mesmo com o GMRES reiniciado).
fonte