Méthodes numériques pour systèmes linéaires
Méthodes numériques pour systèmes linéaires
L’objectif de ce chapitre est une introduction aux méthodes numériques pour la résolution des systèmes
linéaires A.X=B. La plupart du temps, A sera réelle, mais pas toujours carré.
- Les Méthodes directes : On obtient la solution en un nombre fini d’opérations. Si elle est
numériquement « mauvaise », à cause des erreurs d’arrondis par exemple, on ne peut en général plus
rien faire pour l’améliorer. Par contre, on a l’assurance de « Terminer ».
- Les Méthodes itératives : On construit une suite qui tend vers la solution. Si on n’est pas satisfait du
résultat fourni, on peut « continuer ». Cette fois, la qualité de la convergence est primordiale.
Ou encore :
' = ) = 1, 2, … , ,
(
⎡ ⎤ ⎡ ⎤
⎢ . ⎥ ⎢ ⎥
.
. = . ⎢ . ⎥ = ⎢ ⎥
⎢ ⎥ ⎢ . ⎥
,
⎢ ⎥. ⎢ . ⎥
⎣ ⎦ ⎣ ⎦
∆
= ; ∆= det(A)
∆
22
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
∆i : est le déterminant de A après avoir remplacé la colonne i dans A par le membre constant B.
Cette méthode est appelée méthode de Cramer, c‘est une méthode très connue pour la résolution des
systèmes linéaires. Toutefois, elle est la moins recommandable quand n est relativement grand (n > 8).
On a :
' = ) = 1, 2, … , ,
(
Où : = 0 .) / )
1
= 1 − ' 3 ) = ,, , − 1, … ,1
(0
III.3.2 Système à matrice A diagonale : Soit le système A.X=B, où A est une matrice diagonale. La solution
X s’obtient immédiatement par :
= ) = 1, 2, … , ,
A) Méthode de Gauss.
23
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
(4) (4 5 )
Etape1 :
Etape2 :
24
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
Résumé :
Etape1 :
Etape2 :
La formule générale pour la transformation des NO d'une étape à une autre par la méthode de GAUSS
dans le cas général est:
Notion de Pivot: Dans la pratique, il se peut que l'un des pivots de la méthode de Gauss soit nul. Dans ce cas,
on cherche dans la même colonne s'il y a une ligne où le pivot n'est pas nul, et on fait une permutation entre
les deux lignes. On ne choisit pas n'importe quelle ligne. En effet, dans un ordinateur, plus on divise par des
membres petits, plus on risque de faire des erreurs d'arrondis importantes. On choisit donc le nouveau pivot
de manière à minimiser ces erreurs ; on prend celui dont la valeur absolue est la plus grande.
2 + − 27 = 1
P + + 37 = 4
+ 2 − 7 = −1
Etape (0) :
25
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
2 1 −2 1
Z1 1 3 4[
1 2 −1 −1
Etape (1) :
2 1 −2 1
Z 0 1/2 4 7/2 [
0 3/ 2 0 − 3/2
Etape (2) :
2 1 −2 1
Z0 1/2 4 7/2[
0 0 − 12 − 12
Remarque: Si A a subit des permutations de lignes (cas d'un pivot nul) et leurs nombres est P.
+ 3 + 37 = 0
2
P + 2 = 4
3 + 2 + 67 = 11
Algorithme :
Si bb = 0
Alors
Chercher cb ≠ 0 (d = e + 1, . . . , ,)
Si cb ≠ 0 existe
Alors
Sinon
Finsi
Finsi
26
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
II.2.2.2) = − Ωb . b
III.1.1) S ←
YS
RSS
III.1.2.1) S ← −
(RST . mn )
RSS
Remarque :
Cette diagonalisation est opérée en n étapes qui se composent d'une opération de normalisation suivie
d'une opération de réduction.
Etape1 : Elimination de de toutes les équations sauf de la première ligne (même chose que Gauss).
Etape2 : Elimination de de toutes les équations sauf de la deuxième ligne (y compris la première
équation).
Le développement de l'algorithme de Jordan pour un système d'ordre n d'une étape (k-1) à une étape
(k) est comme suivant:
1 3 3 0
Z2 2 0 [ x Zp [ = Z2[
3 3 6 q 9
= 3 ; = −2 ; 7 = 1
Etape (0) :
1 3 3 0
Z2 2 0 2[
3 3 6 9
Etape (1) :
1 3 3 0
Z0 −4 −6 2[
0 −6 −3 9
Etape (2) :
28
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
Normalisation Réduction
⎡1 0 −
7 7
1 3 3 0 ⎤
⎢ ⎥
10 1 − 3 ⎢0 1 − ⎥
7 7
0 −6 −3 9 ⎢ ⎥
⎣0 0
⎦
Etape (3) :
Normalisation Réduction
1 0 −
7 7
1 0 0 3
s0 1
7
− t
Z0 1 0 − 2[
0 0 1 1
0 0 1 1
w= V
.u = V
, ()
, ()
,…, (v)
w= V
. u = x, V
. ()
, V
. ()
,…, V
. (v)
Les m vecteurs V
. ()
, V
. ()
,…, V
. (v)
sont les solutions respectives des m systèmes linéaires
suivants :
. () = ()
;
⎧
⎪ . = ;
() ()
.
⎨ .
⎪ .
⎩ . (v) = (v)
. = = V
.
29
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
⎡ ⎤
⎢ . ⎥
= V
. = ⎢ . ⎥ La solution du système . = donne la première colonne de la matrice A-1.
⎢ ⎥
⎢ . ⎥
⎣ ⎦
0
⎡1⎤ ⎡ ⎤
⎢ ⎥ ⎢ . ⎥
.
. = ù = ⎢ ⎥ ; . = = V
. = ⎢ . ⎥
⎢.⎥ ⎢ ⎥
⎢.⎥ ⎢ . ⎥
⎣0⎦ ⎣ ⎦
0
⎡0⎤ ⎡ ⎤
⎢ ⎥ ⎢ . ⎥
.
. = ù = ⎢ ⎥ ; . = = V
. = ⎢ . ⎥
⎢.⎥ ⎢ ⎥
⎢.⎥ ⎢ . ⎥
⎣1⎦ ⎣ ⎦
identité x , .
Comme les n systèmes ont la même matrice A on utilisera la matrice A augmentée en lui adjoignant la matrice
Où : x , = z | | … … | ]
On aura : u = z , x].
w= V
.u = V
z , x] ; w = zx, V
]
Résumé :
30
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
=? 7 V@
V
7
V
Etape (0) :
2 1 −4 1 0 0
Z3 3 −5 0 1 0[
4 5 −2 0 0 1
Etape (1) :
Normalisation Réduction
1 −2 0 0
1 −2 0 0
13 03 s0 0t
3 −5 0 1 1 − 1
7 7
4 5 −2 0 0 1
0 3 6 −2 0 1
Etape (2) :
Normalisation Réduction
1 −2 0 0 1 0 −7 1 −7 0
s0 1 −1
0t s0 1
−1 7
0t
7 7 7
0 3 6 −2 0 1 0 0 4 1 −2 1
Etape (3) :
Normalisation Réduction
⎡1 0 −7 1 −7 0⎤ ⎡1 0 0 − ⎤
7
⎢ ⎥ ⎢ ⎥
⎢ 0 1 −1 0⎥ ⎢1 1 0 − 1 − ⎥
7 7
⎢ ⎥ ⎢ ⎥
⎣ 0 0 1 − ⎣ 0 0 1 − ⎦
⎦
31
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
1 19 − 18 7
_VW = . Z−14 12 −2[
12
3 −6 3
En générale, les systèmes linéaires sont issus de problèmes physiques complexes (équations aux
dérivées partielles ou équations différentielles) et la dimension de la matrice est souvent très grande. Par
conséquent, la résolution peut avoir un coup de calcul plus ou moins important suivant la nature/structure de
la matrice. Pour cette raison, il existe différentes méthodes numériques dans la littérature. Nous allons nous
intéresser à la factorisation LU d’une matrice A afin de résoudre un système Ax = b.
triangulaires L et U. Comment cela nous permet-il de résoudre le système ⃗ = ⃗? Il suffit de remarquer que :
Supposons un instant que nous ayons réussi à exprimer la matrice A en un produit de deux matrices
⃗ = d⃗ = ⃗
Et de poser ⃗ = ⃗. La résolution du système linéaire se fait alors en deux étapes :
d⃗ = ⃗
⃗ = ⃗
⃗ et par la suite une remontée triangulaire sur la matrice U pour obtenir la solution recherchée ⃗.
Qui sont deux systèmes triangulaires. On utilise d’abord une descente triangulaire sur la matrice L pour obtenir
Il faut tout de suite souligner que la décomposition LU n’est pas unique. On peut en effet écrire un
nombre réel comme le produit de deux autres nombres d’une infinité de façons. Il en est de même pour les
matrices.
= V = V dV = V
32
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
= 0 .) e > )
Où, par définition : b = 0 .) e > /
b
D’où :
D’où :
=
9n V∑:
j: j .jn
j = r, ……..,n
=
9i V∑:
j: ij .j
i = r, ……..,n
Supposons que l’on connaisse les n2 éléments (aij) et que l’on cherche les (n2+n) éléments non nuls des
matrices L et U.
Les systèmes (aij) ou (urj + lir) sont donc de n2 équation à (n2+n) inconnues. Il y a donc n paramètres à fixer
arbitrairement, dans le système (urj + lir), on pourra par exemple fixer les éléments diagonaux urr ou lrr des
matrices U ou L. On débouche sur les deux algorithmes les plus connus.
33
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
lii =1 i = 1,………..,n
r =1,.........,n
Application : Soit à résoudre le système d’équations linéaires suivant, avec la méthode de Doolittle:
. = … … (1)
++ =5 ⎧
⎪ = d … … (2)
P + 2 + 2 = 6 d. =
+ 2 + 3 = 8 ⎨ d. = … … (3)
⎪
⎩ . = … … (4)
1 1 1
= Z1 2 2[
1 2 3
= − . = = 1 , avec : = = 77 = 1
r=1
= ( − . )/ = / = 1/1 = 1
----------------------------------------------------------------------------------
7 = (7 − 7 . )/ 7 = 7 / 7 = 1/1 = 1
Avec la factorisation, notre matrice A de départ est transformée en deux matrices comme suit :
1 0 0 1 1 1
d = Z1 1 0[ = Z0 1 1[
1 1 1 0 0 1
,
34
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
2ème méthode :
Etape (1) :
1 1 1 5
Z 1 2 2 [ . = Z6[
1 2 3 8
A . x = B
Etape (2) :
1 0 0 f N
= d d = Z 1 0[ = Z0 ℎ[
1 0 0 )
,
1 0 0 f N
= Z 1 0 [ . 1 0 ℎ3
1 0 0 )
f N 1 1 1
= 1f N + + ℎ 3 = Z 1 2 2 [
f N + + ℎ + ) 1 2 3
Avec la factorisation, notre matrice A de départ est transformée en deux matrices comme suit :
1 0 0 1 1 1
d = Z1 1 0[ = Z0 1 1[
1 1 1 0 0 1
,
Etape (3) :
/
d. = = Ze [
et
1 0 0 / 5
Z1 1 0[ . Ze[ = Z6[
1 1 1 8
On trouve :
35
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
/=5 / 5
6e = 6 − 1. (5) = 1 = Ze[ = Z1[
= 8 − 1. (5) − 1. (1) = 2 2
Etape (4) :
. = ¡ =
et
1 1 1 5
Z0 1 1[ . = Z 1[
0 0 1 2
++ =5
P4 − 1 + 2 = 5
5=5
uii =1 i = 1,………..,n
r =1,.........,n
Application : Soit à résoudre le système d’équations linéaires suivant, avec la méthode de Crout:
. = … … (1)
+ 2 + 3 = 14 ⎧
⎪ = d … … (2)
P 2 + 5 + 2 = 18 d. =
3 + 2 + 5 = 22 ⎨ d. = … … (3)
⎪
⎩ . = … … (4)
36
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
1 2 3
= Z2 5 2[
3 2 5
= − . = = 1 , avec : = = 77 = 1
r=1
= ( − . )/ = / = 2/1 = 2
----------------------------------------------------------------------------------
7 = (7 − . 7 )/ 7 = 7 / 7 = 3/1 = 3
7 = −4/1 = −4
77 = 77 − 7 . 7 − 7 . 7 77 = 5 − (3.3) − (−4. −4)
r=3
7 = −20
323
Avec la factorisation, notre matrice A de départ est transformée en deux matrices comme suit :
1 0 0 1 2 3
d = Z2 1 0 [ , = Z0 1 −4[
3 −4 −20 0 0 1
2ème méthode :
Etape (1) :
1 2 3 14
Z 2 5 2 [ . = Z18[
3 2 5 22
A . x = B
Etape (2) :
0 0 1 ℎ
= d d=Z 0[ = Z0 1 )[
f N 0 0 1
,
37
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
0 0 1 ℎ
=Z 0[ . Z0 1 ) [
f N 0 0 1
ℎ 1 2 3
=1 + ℎ + ) 3 = Z 2 5 2 [
f f + N fℎ + )N + 3 2 5
=1 = 2 ( = 2) ℎ = 3 (ℎ = 3)
=1 =2 + = 5 ( = 1) ℎ + ) = 2 () = −4) 3
f=3 f + N = 2 (N = −4) fℎ + )N + = 5 ( = −20)
Avec la factorisation, notre matrice A de départ est transformée en deux matrices comme suit :
1 0 0 1 2 3
d = Z2 1 0 [ , = Z0 1 −4[
3 −4 −20 0 0 1
Etape (3) :
/
d. = = Ze [
et
1 0 0 / 14
Z2 1 0 [ . Ze [ = Z 18[
3 −4 −20 22
On trouve :
/ = 14 / 14
6e = 18 − 2. (14) = −10 = Ze[ = Z−10[
= ¢22 − 3. (14) − (−4). (−10)£/−20 = 2 3
Etape (4) :
. = ¡ =
et
1 2 3 14
Z0 1 −4[ . = Z−10[
0 0 1 3
38
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
+ 2 + 3 = 14
P 1 + 2. (2) + 3. (3) = 14
14 = 14
matrice U telle que LU=A. L’algorithme de Crout génère une matrice 5 unitaire et une matrice d5 telle
L’algorithme de Doolittle génère une matrice L unitaire (à éléments diagonaux égaux à l’unité) et une
que d5 5 = .
A = LDU
Où L est une matrice triangulaire inférieure, U une matrice triangulaire supérieure et D une matrice
diagonale. La méthode de Cholevski sans racine carré est également une méthode de ce type.
d =
Pw =
=
Ces systèmes linéaires sont respectivement résolus par les formules vues au début du chapitre (descente
triangulaire, remontée triangulaire, système à matrice diagonale). La résolution de Dz = y est inutile dans le
cas (D = I) des algorithmes de Crout et Doolittle.
Si A est une matrice symétrique définie positive, alors elle peut être décomposée en :
= dd¤
39
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
a) Décomposition de la matrice A
b = 0 .) e > )
Où, par définition :
b = 0 .) e > /
On a donc :
Soit :
= ∑V
b( b . b + . , avec : j = r,n
r =1,....,n
Exemples:
4 1
=¥ ¦ ,
1 9
a)
2 0
d’où : d = © ª
1/2 ¨9 − 1/4
40
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
1 1 3
= Z1 5 5[
3 5 19
b)
= √ = 1 , = / = 1/1 = 1 , 7 = 7 / = 3/1 = 3
= ¨ − = √5 − 1 = √4 = 2 , 7 = 7 − . 7 / = 5 − 1.3/2 = 2/2 = 1
r=1
1 0 0
d’où : d = Z1 2 0[
3 1 3
2ème méthode :
1 1 3
= Z1 5 5[
3 5 19
0 0 f
d=Z 0[ d¤ = Z0 N[
f N 0 0
,
0 0 f f
= d. d = Z
¤ 0[ . Z0 N [ = 1
+ f + N 3
f N 0 0 f f + N f + N +
f 1 1 3
= 1
+ f + N 3 = Z1 5 5[
f f f + N f + N + 3 5 19
=1 = 1 ( = 1) f = 3 (f = 3)
=1
+ = 5 ( = 2)
f + N = 5 (N = 1) 3
f f + N f + N + = 19 ( = 3)
0 0 1 0 0
d’où : d = Z 0[ = Z1 2 0[
f N 3 1 3
On peut voir clairement que c’est le même résultat que la méthode précédente.
d =
¤
d=
41
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
Et la résolution peut se faire de la même manière pour résoudre un système triangulaire (inférieur et
supérieur).
Remarques :
moyen simple pour vérifier qu’une matrice A est bien définie positive.
2. On peut résoudre un système à matrice symétrique par une des méthodes précédentes (Gauss et Gauss-
Jordan). Toutefois, celles-ci ne tenant pas compte de la propriété de symétrie, elles impliqueront des
calculs redondants et donnant généralement des résultats moins précis. Cependant, on peut modifier la
méthode de Gauss, par exemple, afin qu’elle tienne compte de la symétrie et elle peut s’appliquer
même si A n’est pas définie positive.
c) Résolution d’un système [A,b] par factorisation de Cholevsky (technique de la matrice augmentée).
dd¤ =
d =
C’est donc la même transformation dV qui fait passer de A en d¤ et de b en y. On peut donc simplifier
l’algorithme en formant la matrice augmentée [A,b] et en appliquant la décomposition de Cholevsky, la
matrice [A,b] devient :
dV z , ] = zd¤ , ]
d¤ =
Avec la technique de la matrice augmentée les transformations sont faites sur place. La factorisation peut se
noter :
z , ] o zd¤ , ]
zd¤ , ] o zd¤ , ]
Permettra d’obtenir la solution x qui prendra la place du vecteur y qui lui-même a pris la place de b.
La résolution d’un système linéaire à l’aide de la factorisation = dd¤ de Cholevsky s’écrit donc :
42
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
1. Décomposition : dV z , ]
= − ∑V
b( b
/
2. Résolution de d¤ =
, 0 = , 0 − ∑(0 . , 0 / i = n, n-1,….,1
Application : Soit à résoudre le système d’équations linéaires suivant, avec la méthode de Cholevsky:
. = … … (1)
++ =3 ⎧
= d. d¤ … … (2)
P − + = 4
+− =5 ⎨ d. = … … (3)
⎩d¤ . = … … (4)
Etape (1) :
1 1 1 3
Z 1 − 1 1 [ . = Z4[
1 1 −1 5
A . x = B
Etape (2) :
0 0 f
= d. d¤
d=Z 0[ d = Z0
¤ N[
f N 0 0
,
0 0 f
=Z 0[ . Z0 N [
f N 0 0
f 1 1 1
= 1
+ f + N 3 = Z 1 − 1 1 [
f f f + N f + N + 1 1 −1
=1 = 1 ( = 1) f = 1 (f = 1)
=1
+ = −1 ( = )√2) f + N = 1 (N = 0)
3
f f + N f + N + = )√2 ( = )√2)
Avec la factorisation, notre matrice A de départ est transformée en deux matrices comme suit :
1 0 0 1 1 1
d = Z1 )√2 0 [ , d = Z0 )√2
¤ 0 [
1 0 )√2 0 0 )√2
43
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
Etape (3) :
/
d. = = Ze [
et
1 0 0 / 3
Z1 )√2 0 [ . Z e [ = Z 4[
1 0 )√2 5
On trouve :
/=3 3
⎧ /
3 + )√2. e = 4 e = 1/)√2 = () 2). () 2) = −)√2 /2
)√2
= Ze[ = s −) t
√
⎨
√ √
⎩ = )√2 = −)√2 −)√2
Etape (4) :
d . =
¤
¡ =
et
Maintenant, avec le vecteur y les inconnues du système Lt.x = y se déterminent comme suit :
1 1 1 3
Z0 )√2 0 [ . = s −) t
√
0 0 )√2 −)√2
9/2
¡ = = Z−1/2[
−1
On peut vérifier facilement en remplaçant les valeurs du vecteur x dans la première équation du système
d’origine :
++=3
9 1
− −1=3
2 2
3=3
=
44
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
particulière de A. Elle est applicable aux matrices diagonalement dominantes c.à.d. | | ≥ | | + | |,
est à matrice tridiagonale, alors l’algorithme de Gauss peut être simplifié, en tenant compte de la structure
(i=1,…,n). Ce cas particulier est important car on obtient très souvent un tel système lors de la résolution
numérique de certaines équations différentielles partielles, ou en opérant une interpolation à l’aide de fonctions
Splines.
⎡ ⎤
⎢ 0 ⎥
⎢ 7 7 7 ⎥
=⎢ ………..… ⎥
⎢ ⎥
(*)
⎢ ⎥
⎢ 0 ………. … … . V ⎥
⎣ ⎦
Ce qui signifie que l’on peut ne mémoriser que les (3n-2) termes non nuls de A dans trois vecteurs a, b, c ayant
respectivement (n-1), (n) et (n-1) éléments, plutôt que de mémoriser (et traiter) tous les termes de A dont (n2-
3n+2) sont nuls. L’algorithme de Thomas est le suivant :
⎡ ⎤ ⎡ ⎤
⎡ ⎤ ⎢ ⎥ ⎢ ⎥
⎢
0 ⎥ ⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ 7 ⎥ ⎢7 ⎥
⎢ 7 7 7 ⎥ ⎢ ⎥ ⎢ ⎥
⎢ ………..… ⎥ .. = ⎢..⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢ 0 ………. ……. V ⎥ ⎢ . . ⎥ ⎢ ⎥
..
⎣ ⎦ ⎢ ⎥ ⎢ ⎥
⎣ ⎦ ⎣ ⎦
⎡ ⎤
⎡ ⎤ ⎡ ⎤ ⎢
⎥
⎢
⎥ ⎢ ⎥ ⎢ − . ⎥
⎢0 ? − . @ 0 ⎥ ⎢ 7 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥ ⎢ 7
⎥
⎢ 7 7 ⎥⎢ .. ⎥ = ⎢
.. ⎥
⎢ ⎥ ⎢ ⎥
7
………..… ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢ 0 ………. ……. V ⎥ ⎢ . . ⎥ ⎢ .. ⎥
⎣ ⎦ ⎣ ⎦ ⎢ ⎥
⎣ ⎦
45
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
⎡ ⎤ ⎡ ⎤
⎡ ⎤ ⎢ ⎥
⎢ ⎥
⎢ ⎥ ⎢ − . / ⎥
⎢ ⎥
0 ⎢ ⎥ ⎢ − . /
⎢0 1 ⎥
® ⎥ 7
⎢ ⎥ ⎢ 7 ⎥
⎢ − . ⎥
⎢ .. ⎥ = ⎢ ⎥
⎢
⎥
7 7 ⎢ ⎥ ⎢ .. ⎥
⎢ 7
⎥
………..… ⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ .. ⎥ ⎢
.. ⎥
⎢ 0 ………. ……. V ⎥
⎣ ⎦ ⎢ ⎥
⎣ ⎦ ⎣ ⎦
⎡ ⎤
⎢
⎥ ⎡ ⎤
⎢ ⎥ ⎢ ⎥
⎢0 1 ® ⎥ ⎢ ⎥
⎢ − . 0 ⎥ ⎢ 7 ⎥
⎢ ⎥ ⎢ ⎥
⎢ ⎥⎢ ⎥
⎢0 0 1 7 − 7 ® 7 ⎥ ⎢ ..⎥
⎢ − . ⎥ ⎢ ⎥
⎥ ⎢ ⎥
⎢
⎢ …… … . . … ……
. … … ⎥ ⎢ ..⎥
⎢ ⎥ ⎢ ⎥
⎢ 0 ………. ……. ⎥ ⎣ ⎦
⎣ ⎦
⎡ ⎤
⎢
⎥
⎢ − . / ⎥
⎢ − . / ⎥
⎢ − . / ⎥
= ⎢7 − 7 . − . / ⎥
⎢ ⎥
⎢ ⎥
⎢ .. ⎥
⎢ ⎥
⎢ .. ⎥
⎣ ⎦
En continuant ainsi pour les n lignes du système, on obtient un système à matrice bidiagonale unitaire,
(éléments diagonaux égaux à 1)
46
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
1 ¯ °
⎡ ⎤ ⎡ ⎤ ⎡ ⎤
1 ¯ 0 °
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
7
⎢ 1 ¯7 ⎥ ⎢ ⎥ ⎢ °7 ⎥
⎢ …… ⎥⎢ .. ⎥ = ⎢ .. ⎥
⎢ 1 ¯ ⎥ ⎢ ⎥ ⎢ ° ⎥
⎢ 0 ……. ⎥ ⎢ .. ⎥ ⎢ .. ⎥
⎣ 1 ⎦ ⎣ ⎦ ⎣° ⎦
L’algorithme de Thomas, dans un format approprié pour la programmation informatique est résumé comme
suit :
¯ = (² V9 i.³
±
i i i: )
i = 2,…,n-1
° =
=°
Le code Matlab qui permet de résoudre un système tridiagonal selon l’algorithme de Thomas :
function x = thomas(a,b,c,y,N)
% La fonction thomas:
% Inverse un système tridiagonal A.x=y dont les diagonales inférieure,
% principale et supérieure sont respectivement donnés par les vecteurs
% a, b et c.
% y est le membre droit du système, et N est la taille du système.
% Le résultat est placé dans le vecteur x.
% >> a=[0 2 1 1];b=[2 3 4 3];c=[1 1 2];y=[1 2 3 4];N=4;
% x = thomas(a,b,c,y,N)
if (b(1)==0)
47
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
if (D==0)
fprintf(1,'Le solveur tridiagonal a échoué...')
pause
end
end
for j = 2:N
D = b(j)-a(j-1)*Gamma(j-1);
Betta(j) = (y(j)-a(j-1)*Betta(j-1))/D;
end
Application : Soit à résoudre le système d’équations linéaires suivant (A.x = y), avec la méthode de Thomas:
2 + = 1
+ 3 + 7 = 2
+ 47 + 2 = 3
7 + 3 = 4
Etape (1) :
2 1 0 0 1 1
12 3 1 03 . s2 t = s2t
0 1 4 2 3 3
0 0 1 3 4 4
A . x = y
48
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
1 1 ¯1 °
1 0 0 1 0 1
0 ⎡ 1⎤
2 ⎢° ⎥
2 0 2 0 1 ¯2 0 2
s t
3 3. s t = s 3 t s t . s t = ⎢ 2 ⎥
0 7 0 0 1 ¯3 3 °
7
4 4 ⎢ 3⎥
0 0 0 0 0 1 4
⎣°4 ⎦
1
¯ = ¯ =
2
1
° = ° =
2
Etape (2) :
1 1
⎧¯ = =
1
⎧¯ = ( − . ¯ ) ⎪
⎪ (3 − 2. 2) 2
V
1
⎨ ° = − . °V ⎨ 2 − 2 .2 1
⎪° = =
⎩ ( − . ¯V ) ⎪ 1
⎩ A3 − 2. 2B 2
Etape (3) :
2 4
7 ⎧¯7 = =
1
⎧¯7 = ( − . ¯ ) ⎪ (4 − 1. 2) 7
7 7 7V
− . ° 1
⎨° = 7 7 7V ⎨ 3 − 1 .2 5
⎪°7 = =
⎩ 7
( 7 − 7 . ¯7V ) 1
⎩ (4 − 1. 2) 7
Etape (4) :
5
− . °V 4 − 1. 7 23/7 23
6° = ° = = =
( − . ¯V ) 4
A3 − 1. 7B 17/7 17
Etape (5) :
=° ;
⎧ =
7
4 = °4 4/17
⎧ ⎪
⎪ 7 = − . 7 = −
= °3 − ¯3 . 4 9/17
¡ = s t = s t
3
⎩1 = °1 − ¯1 . 2 ⎪
⎪
23/17
⎩ = − . AB =
49
UHBC, Département de mécanique 2ème LMD (S4) Cours d’analyse numérique
Les méthodes directes sont surtout employées pour la résolution des petits (n < 20) et moyens systèmes
(n < 100) d’équations linéaires.
Comme le temps de calcul croit aussi avec le nombre d’opérations, la meilleure méthode directe au sens du
temps de calcul est celle qui demande le moins d’opérations (la moins complexe).
Pour cette raison, la méthode de Cramer n’est jamais employée pour résoudre des systèmes d’ordre n supérieur
à 5.
La méthode de Gauss (ou sa variante de Crout) est souvent préférée pour les systèmes à matrice A quelconque.
Encore que manuellement, celle de Jordan est plus pratique d’emploi.
Quand la matrice A est symétrique, l’algorithme de Gauss peut se simplifier en conséquence. Si A est
tridiagonale, l’algorithme de Gauss simplifié s’appelle algorithme de Thomas.
La méthode de Cholevsky est recommandée pour la résolution des systèmes linéaires à matrice symétrique
définie positive. De tels systèmes sont courants dans la description des phénomènes physiques, ou dans les
problèmes d’optimisation.
50