0% ont trouvé ce document utile (0 vote)
42 vues7 pages

Méthodes Itératives en Calcul Scientifique

Ce document présente plusieurs exercices sur des méthodes itératives pour résoudre des systèmes linéaires. Il décrit des méthodes classiques comme Jacobi, Gauss-Seidel et relaxation ainsi que des méthodes particulières comme les directions alternées et les multi-décompositions. Les exercices portent sur la programmation et l'analyse de convergence de ces méthodes.

Transféré par

Mbaye NDOYE
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
42 vues7 pages

Méthodes Itératives en Calcul Scientifique

Ce document présente plusieurs exercices sur des méthodes itératives pour résoudre des systèmes linéaires. Il décrit des méthodes classiques comme Jacobi, Gauss-Seidel et relaxation ainsi que des méthodes particulières comme les directions alternées et les multi-décompositions. Les exercices portent sur la programmation et l'analyse de convergence de ces méthodes.

Transféré par

Mbaye NDOYE
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université de Picardie Jules Verne

Master 2 AAM
Calcul Scientifique
2019-2020

Méthodes Itératives 1 - Méthodes classiques

1 Commandes Scilab
• Partie triangulaire supérieure : triu(A)

• Partie triangulaire inférieure : tril(A)

• Calcul du temps de calcul


tic
.
.
.
instructions
.
.
.
toc

• Comparaison de l’historique des résidus


plot(it1,log(R1)/log(10))
plot(it2,log(R2)/log(10))
drawnow

• Matrice creuse
Convertir une matrice pleine en matrice creuse
A=sparse(X)
Convertir une matrice creuse en matrice pleine
A=full(X)

• Opérations sur les matrices creuses

– sprand : matrice creuse aléatroire


– speye : matrice identité creuse
– spones : matrice de 1 creuse
– spzeros : matrice nulle
– nnz : nombre déléments non nuls
– lufact: factorisation LU d’une matrice creuse
– lusolve : solveur LU de système linéaire creux
– spchol: factorisation de Cholesky d’une matrice creuse
– chsolve : solveur de Cholesky de système linéaire creux

1
– spget : entrées non nulles d’une matrice creuse

Exercice 1
Effectuer et chronométrer le produit A ∗ B de deux matrices creuses, déclarées comme pleines, puis comme
creuses. Que constatez-vous ?

2
2 Méthodes classiques
On rappelle que les méthodes itératives classiques peuvent se programmer comme suit :

Algorithm 1 Méthode itérative classique


1: x(0) donné dans Rn
2: k = 0, r(0) = b − Ax(0)
3: while k < Kmax & kr(k) k >  do
4: Résoudre : M z (k) = r(k)
5: Poser : x(k+1) = x(k) + z (k)
6: Poser : r(k+1) = r(k) − Az (k)
7: Poser : k = k + 1
8: end while

Exercice 2 (Programmation générale)


1. Construire un seul programme principal Scilab pour les méthodes itératives classiques.

2. Soit la matrice  
2 −1
 −1 2 −1 
1  .

A= 2
 .. ... ... .

h  
 −1 2 −1 
−1 2
Résoudre le système linéaire Ax = b avec b=ones(n,1) avec les méthodes de Jacobi, Gauss-Seidel et
relaxation ; on partira à chaque fois de la donné initiae x=zeros(n,1). On rangera dans un vecteur
la suite des normes des résidus et on calculera le temps de calcul à chaque fois.

3. Comparer l’historique des résidus pour ces méthodes.

4. Conclusion ?
Exercice 3 (Méthode de Jacobi pour les systèmes triangulaires)
1. Soit A = D−F n×n, triangulaire supérieure, inversible, on note D = diag(A). Montrer que J = D−1 F
est nilpotente.

2. En déduire que la méthode de Jacobi converge en au plus n itérations.

3. Illustration sur un exemple de votre choix. On représentera graphiquement l’historique des résidus.

Exercice 4 (Méthode SSOR (Symmetric Successive Over Relaxation))


Soit A = D + L + LT une matrice symétrique. On considère la matrice M :

M = (D + L)D−1 (D + L)T

et plus généralement
   T
ω 1 −1 1
M (ω) = D + L (D) D+L
2−ω ω ω

3
1. Programmer cette méthode pour différentes valeurs de ω ∈ [1, 2[. On calculera le nombre d’it́erations
nécessaires à la convergence.

2. Que constatez-vous ?

Exercice 5 (Directions alternées)N N N


1. On rappelle la propriété (A B)(C D) = AC BD. N N N
Soit A une admettant une décomposition LU . Montrer que (Id A) = (Id L)(Id U ).
N N
2. Soit A une matrice SDP et M = Id A + A Id = K1 + K2 . On considère la méthode itérative

Algorithm 2 Méthode des directions alternées


1: x(0) donné dans Rn
2: k = 0, r(0) = b − Ax(0)
3: while k < Kmax & kr(k) k >  do
4: Résoudre : (Id + α
2 K1 )u
(k+1/2) = (Id − α K )u(k) + α b
2 2 2
α
Résoudre : (Id + 2 K2 )u(k+1) = (Id − 2 K1 )u(k+1/2) + α
α
5:
2b
6: (k)
Poser : r = b − M u (k+1)

7: Poser : k = k + 1
8: end while

Ici α > 0. Exprimer u(k+1) en fonction de u(k) sous la forme u(k+1) = Gu(k) + c.

3. En déduire une CNS de convergence et montrer que si u(k) converge, c’est vers la solution de M u = b.

4. Montrer que K1 et K2 commutent. Montrer que ρ(G) < 1 et conclure.

5. Programmation de la méthode en Scilab

(a) Pour α > 0 fixé, calculer les décompositions de Cholesky de Id + α α


2 K1 et de Id + 2 K2 .
(b) Programmer la méthode des directions alternée pour la matrice obtenue avec
A=2*eye(N,N)-diag(ones(N-1,1),1)-diag(ones(N-1,1),-1)

Exercice 6 (Méthode de Multi-décompositions)


Soit A une matrice inversible. On considère m couples de matrices (Mi , Ni ) avec Mi inversible telles que

A = Mi − Ni , i = 1, · · · , m.

Soit alors m matrices diagonales à coefficients dans [0, 1] Ei telles que


m
X
Ei = Id
i=1

où Id désigne la matrice identité.

On introduit maintenant la méthode itérative


m
X
u(k+1)
= Ei Mi−1 (Ni u(k) + b) = Su(k) + T b
i=1

4
1. On se place dans le cas m = 1. Expliciter la méthode et donner une CNS de convergence.

2. Maintenant m > 1.

(a) Expliciter S et T .
(b) Montrer que
Id − T A = S.

(c) En déduire une CNS de convergence.

3. On se place dans le cas m = 2 et pour simplifier on impose

E1 = αId, E2 = (1 − α)Id

(a) Montrer que l’algorithme peut s’écrire sous la forme

u(k+1) = αv (k+1) + (1 − α)w(k+)

où v (k+1) et w(k+1) sont à préciser.


(k+1) (k+1)
(b) Exprimer le résidu r(k+1) = b−Au(k+1) en fonction de rv = b−Av (k+1) et de rw b−Aw(k+1) .
Quelle valeur de α permettrait d’obtenir une convergence plus rapide ?
(c) On modifie maintenant l’algorithme précédent en changeant α = αk à chaque itération. Calculer
αk de sorte à minimiser kr(k+1) k2 .
(d) Montrer qu’avec ce choix

kr(k+1) k2 ≤ krv(k+1) k2 et kr(k+1) k2 ≤ krw


(k+1)
k2 .

(e) Conclure.

Remarque : l’intérêt de cette méthode provient de ce que les calculs Ei Mi−1 (Ni u(k) + b) peuvent être
exécutés indépendamment les uns des autres. Cela se réalise avantageusement sur des ordinateurs ”par-
allèles”, c’est à dire avec plusieurs processeurs, chacun ayant un calcul à executer ”en même temps”
indépendemment des autres. Le résultat final est assemblé une fois tous les calculs terminés.

5
3 Méthodes particulières
Les Méthodes suivantes reposent sur l’observation que la solution d’un système linéaire m × n Ax = b , si
elle existe, est dans l’intersection des hyperplans affines :

Hi : ai,1 x1 + ai,2 x2 + · · · ai,n xn = bi , i = 1, · · · , m.

Bien sûr l’intersection est réduite à un point lorsque A est inversible. Une idée naturelle consiste donc à
construire une suite de projetée orthogonales successives sur ces hyperplans affines. Il n’est pas difficile de
voir que
P rojHi (x) = Pi (x)y
avec < ai , y >= bi et x − y = αai . Du coup

< x, ai >=< y, ai > +αkai k22 = bi + αkai k22 .

< x, ai > −bi b − < x, ai >


Il en découle que α = 2 et que Pi (x) = x + i ai .
kai k2 kai k22

Exercice 7 (Méthode de Kaczmarz)


Soit A une matrice m × n. Soit b ∈ Rm . On considère le système linéaire

Ax = b

On désigne par ai la ième ligne de A.

Algorithm 3 Méthode de Kaczmarz


1: x(0) donné dans Rn
2: while k < Kmax & kr (k) k >  do
bi − hai , xk i
3: Poser : xk+1 = xk + ai
kai k2
4: (avec i = k mod m, i = 1, 2, ..., m)
5: Poser : k = k + 1
6: end while

Cette méthode s’interprète de la manière suivante : xk+1 est la projection orthogonale de xk dans l’hyperplan
< ai , x >= bi , soit
xk+1 = Pi (xk ).
Le taux de convergence est 1 − 12 , pour κ = kAkkA−1 k assez grand.
κ
On peut généraliser cette méthode en introduisant un paramètre de relaxation λk comme suit :

bi − hai , xk i
xk+1 = xk + λk ai
kai k2

1. Programmer la méthode pour A m × n de rang maximal (rang(A) = m ≤ n).

2. Comparer la solution obtenue avec celle au sens des moindres carrés.

6
Exercice 8 (Méthode de Cimino)
La méthode de Karzmarz utilise les lignes de A séquentiellement, c’est à dire les unes après les autres. L a
méthde de Cimmino quant à elle utilise les lignes de A simultanément et calcule l’itération courante comme
moyenne de toutes les projection de l’itérée précédente, soit
m m m
1X 1X 1 X bi − hai , xk i
xk+1 = Pi (xk ) = xk + Pi (xk ) = xk + ai
m m m kai k2
i=1 i=1 i=1

1. Programmer la méthode pour A m × n de rang maximal (rang(A) = m ≤ n).

2. Comparer la solution obtenue avec celle au sens des moindres carrés.

Remarque 1
La méthode de Cimino peut se réécrire comme suit :
m
1
X bi − hai , xk i
xk+1 = xk + m Pi (xk ) ai
kai k2
i=1
b1 − < a1 , xk >
 
 
1
= xk + m a1 , · · · , am  .. 
ka1 k22 kam k22
 . 
bm − < am , x >k

 T
 1 
   
a1 ka k2 a1
 1 2 
1 
= xk + m .   .. ..  xk 
 ..    b − 
 
. .  
1
 
am 2
am
kam k2
= xk + AT M −1 b − Axk


Vous aimerez peut-être aussi