−→ On utilisera un double critère pour stopper l’algorithme : un critère sur le nombre
maximal d’itération et un autre critère sur la norme du résidu. On notera à chaque
fois le nombre d’itérations nécessaires pour atteindre la solution.
−→ On pourra comparer la solution trouvée par ce programme avec la solution réelle de
ce système calculée par Matlab.
4. Troisième méthode : la méthode du gradient conjugué préconditionné.
Cette méthode sert à réduire le nombre d’itérations de l’algorithme. L’idée de cette mé-
thode est basée sur la remarque suivante : si Mest une matrice inversible, alors, la
solution du système ANuN=fNest la solution du système M−1ANuN=M−1fN.
Des difficultés numériques peuvent survenir si le conditionnement de la matrice ANest
mauvais. On va donc choisir Mpour que le conditionnement de M−1ANsoit meilleur que
le conditionnement de AN, et pour que l’inverse de Msoit aisée à calculer.
(a) Expliquer brièvement le principe de factorisation de Cholesky.
(b) ANétant une matrice creuse, on note RI, la factorisée incomplète de Cholesky de AN,
et on pose M=tRI ×RI. Vérifier que le conditionnement de la matrice M−1ANest
meilleur que celui de ANet que l’inverse de Mse calcule aisément.
Fonction Matlab utile : inv, cholinc(avec l’option 000).
(c) Nouveau système à résoudre. Une difficulté de cette méthode réside dans le fait que la
matrice M−1ANn’est a priori pas symétrique. Pour contourner cette difficulté, justifier
que les matrices M−1ANet f
M:= tRI−1ANRI−1sont semblables. Que peut-on dire
du conditionnement de ces matrices ? En déduire qu’il est pertinent de résoudre le
système f
MyN=tRI−1fNavec yN=RIuN.
(d) En utilisant les remarques précédentes, améliorer le programme précédent pour calculer
la solution du système ANuN=fN. Le nouveau programme s’appellera gradConjPre.m.
On tiendra compte des remarques faites pour la méthode du gradient conjugué sans
préconditionnement.
(e) Comparaison des deux méthodes.
Compléter les deux programmes précédents (gradient conjugué et gradient conjugué
préconditionné) afin de tracer, à chaque appel des programmes le résidu logarithmique
en fonction du nombre d’itérations. Conclure.
5. Autres exemples. En réutilisant les approches précédentes, déterminer une solution
approchée du problème
−u00(x) + xu(x) = sin x x ∈]0,1[
u(0) = u(1) = 0.
EXERCICE N◦2(distance d’un point à un plan)
Dans cet exercice, on cherche à déterminer numériquement la plus courte distance entre un point
x0∈Rnet un hyperplan (H)d’équation Ax =b, où les lignes de la matrice Asont linéairement
indépendantes et b, un vecteur colonne de taille n. Ce problème peut s’écrire comme un problème
de programmation quadratique :
inf
Ax=b
1
2(x−x0)>(x−x0).
1. Étude théorique.
3