5 Méthode du gradient conjugué

publicité
Université Pierre et Marie Curie
Année universitaire 2011-2012
5
LM 335 : Calcul numérique matriciel
Travaux pratiques (Scilab)
Méthode du gradient conjugué
Exercice 5.1 On se propose de résoudre le système Ax = b, où A est une matrice réelle symétrique
définie positive de taille n×n et b un vecteur de Rn , par la méthode du gradient conjugué. La méthode
de gradient utilisée pour résoudre le système Ax = b peux aussi être vue comme une méthode pour
minimiser la fonction f définie par
1
x ∈ Rn , f (x) = hAx, xi − hb, xi .
2
La méthode du gradient conjugué est définie comme suit : Soit x0 ∈ Rn donné. On construit les suites
de vecteurs de Rn (xk )k , (rk )k et (pk )k par p0 = r0 = b − Ax0 , puis, pour k ≥ 0,


 xk+1 = xk + αk pk ,
rk+1 = rk − αk Apk ,
(1)

p
k+1 = rk+1 + βk pk ,
où αk =
satisfait.
krk k2
<Apk ,pk >
et βk =
krk+1 k2
.
krk k2
Les itérations (1) sont répétées jusqu’a ce qu’un critère d’arrêt soit
1. Programmer la méthode de gradient conjugué dans une fonction
[x, iter] = GradientConj(A, b, tol, iterM ax, x0 )
où x0 est le vecteur initial, x est la solution proposée par la méthode du gradient conjugé au
bout d’un nombre d’itérations iter. Les itérations de la méthode du gradient conjugué s’arrêtent
si ||b − Ax||2 ≤ tol ou si le le nombre maximal d’itérations iterM ax est atteint.
2. On souhaite maintenant voir l’impact du condionnement de la matrice A sur la performance
de la méthode du gradient conjugué. On s’intéressera plus particulièrement à la résolution du
système Ax = (0, . . . , 0). La solution de ce système est xexact = (0, . . . , 0). On construit la
matrice A de la façon suivante :
i−1
A = U ∗ diag(α0 = 1, . . . , α n−1 , . . . , α)U ,
où U est une matrice orthogonale, i.e., U ∗ = U −1 et α ≥ 1. On a donc
cond2 (A) = cond2 (diag(1 = α0 , . . . , α(i−1)/(n−1) , . . . , α)) = α .
Résoudre le système Ax = (0, . . . , 0) pour plusieurs conditionnements i.e. plusieurs valeurs
de α puis tracer le nombre d’itérations iter nécessaires pour atteindre la tolérance tol (On
prendra iterM ax assez grand pour assurer que l’arrêt de l’algorithme du gradient conjugué soit
uniquement dû au fait que la tolérance tol soit atteinte).
1
Téléchargement