Une chose que CG a en sa faveur est qu'elle ne minimise pas la norme discrète pour ses polynômes résiduels (ce que fait GMRES). Cela minimise plutôt une norme induite par la matrice, et très souvent cette norme induite par la matrice finit par être très proche de la norme énergétique pour la discrétisation des problèmes physiques, et souvent c'est une norme beaucoup plus raisonnable pour mesurer l'erreur en raison des propriétés de conservation à venir de la physique.l2
Vous pouvez également obtenir ce type d'effet avec GMRES si effectuer une factorisation Cholesky d'une matrice de masse n'est pas trop cher, vous pouvez forcer les produits internes à être les produits énergétiques internes que vous souhaitez.
Ensuite, les cas où l'on devrait s'attendre à ce que CG fonctionne très différemment de GMRES, c'est quand les constantes impliquées dans l'équivalence de normes sont très différentes. Cela peut être vrai par exemple dans une méthode spectrale de Galerkin d'ordre élevé où la norme discrète utilisée dans GMRES traite tous les degrés de liberté comme étant égaux, alors qu'en réalité les gradients polynomiaux sont les plus nets près des frontières (d'où le regroupement de nœuds), etc. les constantes d'équivalence de norme entre cette norme et disons que la norme continue donnée par la matrice de masse peut être très grande.L 2l2L2
Je soupçonne qu'il n'y a en général pas beaucoup de différence entre GMRES et CG pour une matrice SPD.
Disons que nous résolvons avec A défini positif symétrique et la supposition de départ x 0 = 0 et générons des itérations avec CG et GMRES, appelons-les x c k et x g k . Les deux méthodes itératives construiront x k à partir du même espace de Krylov K k = { b , A b , A 2 b , … } . Ils le feront de manières légèrement différentes.Ax=b A x0=0 xck xgk xk Kk={b,Ab,A2b,…}
CG se caractérise en minimisant l'erreur dans la norme d'énergie induite par A , de sorte que ( A e c k , e c k ) = ( A ( x - x c k ) , x - x c k ) = min y ∈ K ( A ( x - y ) , x -eck=x−xck A
GMRES minimise à la place le résidu , et le fait dans la norme discrète ℓ 2 , de sorte que ( r k , r k ) = ( b - A x g k , b - A x g k ) = min y ∈ K ( b - A y , b - A y ) .rk= b - A xgk ℓ2
Pour être encore plus précis, dans la première itération avec l'espace de Krylov , CG et GMRES construiront une approximation de la forme x 1 = α b . CG choisira α = ( b , b )K1= { b } X1= α b
la source
Une chose est que GMRES n'est jamais utilisé partout où CG peut être appliqué. Je ne pense pas qu'il soit logique de comparer ces deux. Pour les matrices SPD, CG est définitivement le gagnant en raison des exigences de stockage et des raisons que vous avez mentionnées ci-dessus. Une question qui serait intéressante est de trouver une extension de CG, applicable aux problèmes où CG ne peut pas être appliqué. Il existe des méthodes comme BiCG-stab qui ne nécessitent pas d'augmentation linéaire de la mémoire comme GMRES, mais la convergence n'est pas aussi bonne que GMRES (parfois même avec GMRES redémarré).
la source