sujet

publicité
Sup’Galilée
MACS1
lundi 5 décembre 2016
Travaux pratiques d’analyse numérique-TP5
Résolution des systèmes linéaires par des méthodes itératives
Pour ce TP, vous pouvez télécharger des trames de codes (exercices 1 et 2) à l’adresse suivante :
http ://www.math.univ-paris13.fr/∼delourme/TeachingProjetsNumeriquesMACS1_2016_2017.html
Dans cette première partie du TP, nous nous intéressons à la résolution numérique des systèmes linéaires Ax = b par des
méthodes itératives du type
(
x(0) donné
(1)
Mx(k+1) = Nx(k) + b;
avec A = M − N.
Dans la suite, on aura besoin de la décomposition suivante :
A=D−E−F
où D est la matrice diagonale telle que Dii = Aii , E est la matrice triangulaire inférieure telle que
(
−Ai,j si j < i,
Eij =
0 sinon.
et F est la matrice triangulaire supérieure telle que
(
−Ai,j si j > i,
Fij =
0 sinon.
On rappelle que les méthodes itératives de la forme 1 sont convergentes si et seulement si le module du rayon spectral de la
matrice M−1 N est strictement inférieur à 1.
Remarque (Crtitère d’arrêt des méthodes itératives). Une question importante lors de la mise en oeuvre d’un algorithme itératif
de type (1) est de savoir quand arrêter les itérations de cet algorithme. Comme la solution exacte x est en générale inconnue, on
ne peut souvent pas évaluer directement la norme de l’erreur e(k) = kx(k) − xk. Par contre, à chaque étape de l’algorithme on
peut évaluer le résidu
r(k) = kAx(k) − bk.
On décidera alors d’arrêter les itérations lorsque r(k) < ε, où ε est une précision donnée (choisie par l’utilisateur en fonction de
la précision souhaitée). On remarquera que si x est la solution du système linéaire Ax = b, alors pour toute norme matricielle
induite,
kx(k) − xk ≤ kA−1 kkAx(k) − bk.
Autrement dit, si le résidu est petit et si la norme de A−1 n’est pas trop grande, alors l’erreur entre la solution approchée et la
solution exacte reste petite.
D’un point de vue pratique, il faut aussi absolument pouvoir arrêter l’algorithme quand celui ci ne converge pas. Dans ce cas, il
est donc nécéssaire d’ajouter au critère précédent, un critère sur le nombre maximal d’itérations N_iter_max à ne pas dépasser
afin d’éviter les boucles infinies.
Exercice 1 : méthode de Jacobi
La méthode de Jacobi est la méthode itérative de type (1) pour laquelle M = D et N = E + F.
1. On suppose x(k) connu. Vérifier que les composantes du vecteur x(k+1) sont données par


n
X
1 
(k+1)
(k) 
xi
=
bi −
Aij xj
Aii
j=1,j6=i
1
(2)
2. Algorithme : écrire un algorithme (basé sur la formule (2)) pour résoudre le système linéaire Ax = b à l’aide de la
méthode de Jacobi. Prévoir le critère d’arrêt de votre algorithme. L’algorithme doit pouvoir s’arrêter s’il diverge, il ne
doit pas comporter de boucles infinies. Prévoir un test pour valider votre algorithme.
3. Coder la fonction Jacobi.m qui calcule la solution du système linéaire Ax = b à l’aide de la méthode de Jacobi.
4. Tester votre programme en prenant comme matrice A une matrice de type diagonale strictement dominante.
5. Tester votre programme pour la matrice suivante A et

14 10
A =  10 14
6 2
le second membre b suivant :



6
30
2 
b =  26 
4
12
Expliquer le résultat obtenu.
Exercice 2 : méthode de Gauss-Seidel
La méthode de Gauss Seidel est une variante de la méthode de Jacobi qui découle de la remarque suivante : quand on applique
(k+1)
la méthode de Jacobi, chaque composante xi
du vecteur x(k+1) est calculée indépendamment des autres. On peut espérer
(k+1)
(k+1)
accélérer la convergence si, pour calculer xi
, on exploite les nouvelles composantes xj
pour 1 ≤ j ≤ i − 1 en plus des
(k)
anciennes xj pour j ≥ i (puisqu’on espère que xk+1 est plus proche de la solution exacte que xk ). Ceci revient à remplacer
l’algorithme (2) par


n
i−1
X
X
1
(k)
(k+1)
(k+1)
bi −
(3)
Aij xj 
Aij xj
−
xi
=
Aii
j=i+1
j=1
1. Montrer que la méthode de Gauss Seidel décrite ci dessus revient à prendre M = D − E et N = F.
2. Écrire l’algorithme associé à la méthode de Gauss-Seidel (basé sur la formule (3)). Prévoir le critère d’arrêt de votre
algorithme (L’algorithme doit pouvoir s’arrêter s’il diverge, il ne doit pas comporter de boucles infinies).
3. Tester votre programme en prenant comme matrice A une matrice de type diagonale strictement dominante.
Exercice 3 : méthode de Relaxation
Soit ω un paramètre réel. On définit la méthode de relaxation par


n
i−1
X
X
ω 
(k+1)
(k)
(k)
(k+1)
xi
=
bi −
Aij xj
−
Aij xj  + xi ;
Aii
j=i
j=1
1. Montrer que la méthode de Relaxation correspond à prendre M =
1
ωD
− E et N =
(4)
1−ω
ω D
+ F.
2. Écrire l’algorithme associé à la méthode de Relaxation.
3. Coder la fonction Relaxation.m qui calcule la solution du système linéaire Ax = b à l’aide de la méthode de
relaxation.
4. Tester votre programme en prenant comme matrice A une matrice de type diagonale strictement dominante et
ω ∈]0, 1[.
Exercice 4 : cas des matrices tridiagonales
Soit n un nombre entier naturel. Soit A la matrice de taille n × n tri-diagonale telle que les coefficients diagonaux sont égaux
à 2, la première sous-diagonale est composée de −1 et la première sur-diagonale de −1. On choisit le second membre b ∈ Rn
tel que la solution du système Ax = b soit le vecteur √1n (1, 1, · · · , 1). On prend x(0) = 0.
1. Appliquer l’algorithme de Jacobi et de Gauss-Seidel pour résoudre le système linéaire Ax = b dans le cas où n = 10.
- Sur un même graphique tracer l”évolution de l’erreur e(k) = kx(k) − xk et du résidu r(k) = kAx(k) − xk en fonction
du nombre d’itérations pour l’algorithme de Jacobi et de Gauss-Seidel. Quel est l’algorithme le plus rapide ?
- Pour chacune des deux méthodes, combien d’itérations sont-elles nécessaires pour obtenir une précision sur le résidu
de 10−12 ?
2
- Évaluer le rayon spectral de la matrice d’itération de Jacobi et de Gauss-Seidel.
2. On fait maintenant varier n entre 10 et 100 (par exemple par pas de 10).
- Évaluer le nombre d’itérations nécessaires pour obtenir un résidu inférieur ou égal à 10−12 . Sur un même graphe, tracer
l”évolution du nombre d’itérations en fonction de n pour les méthodes de Jacobi et de Gauss-Seidel.
- Sur une autre figure, tracer l’évolution du rayon spectral en fonction de n pour méthodes de Jacobi et de Gauss-Seidel.
Exercice 5 : Étude de la méthode de relaxation
On considère la matrice A et le second membre b de l’exercice précédent dans le cas où n = 10.
1. Tracer l’évolution du résidu en fonction du nombre d’itérations pour ω = 0.2, ω = 0.5 et ω = 0.8.
2. Calculer le rayon spectral de la matrice d’itération R = M−1 N pour ω compris entre 0 et 2. Estimer numériquement
ω ? correspondant au paramètre ω pour lequel le rayon spectral de la matrice R est minimal.
3. Tracer sur un même graphe le résidu en fonction du nombre d’itérations pour la méthode de Jacobi et pour la méthode
de Gauss-Seidel et la méthode de relaxation pour le paramètre ω ? optimal ?
4. Que se passe-t-il quand ω = 2.5 ? Expliquer.
Exercice 6
Soit la matrice

0

A = I − E − F avec E =  −1
0
−2
0

0

0 
0
0


0
0
0

et F =  0
0

0 
−1
−1
0
On pose
1
1−ω
I − E et N =
+ F.
ω
ω
L’objectif de cet exercice et de tester l’algorithme général 1 avec les matrice M et M définit ci-dessus pour différentens
valeurs de ω. Dans la suite, on pourra choisir b tel que la solution x du système linéaire Ax = b soit le vecteur (1, 1, 1).
M=
√
Pour ω = 1.5, ω = 1 et ω = 1/ 2, tracer l’évolution du résidu en fonction du nombre d’itérations. Expliquer les résultats
obtenus.
3
Téléchargement