Analyse numérique
Cours - 2ème année licence de mathématiques
Exercices
Applications
TP avec matlab
Editions Al-Djazair
Kouche Mahiéddine
Analyse numérique
Cours
Application et TP avec Matlab
Editions Al-Djazair
Préface
J’ai rajouté deux annexes à la fin du livre. L’annexe A donne une petite initiation à Matlab.
Cette annexe n’est pas un cours sur le logiciel de calcul numérique Matlab mais simplement une
initiation aux principales commandes utilisées dans ce livre. L’annexe B contient les principales
commandes Matlab qui ont été utilisées dans ce livre.
Les seuls prérequis pour la lecture de ce livre sont les notions d’analyse mathématique et d’algèbre
linéaire enseignées dans les modules Analyse I et Algèbre I de première année.
Enfin je tiens à remercier les éditions Al-Djazair en particulier monsieur Rafik Bengrid qui m’a
donné l’occasion d’éditer mon cours.
Annaba, aout 2015 Mahiéddine Kouche
i
Table des matières
ii
TABLE DES MATIÈRES
5 Systèmes Linéaires 79
5.1 Méthodes Directes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.1.1 Méthode de Cramer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.1.2 Systèmes Triangulaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.1.3 Méthode des Pivots de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.1.4 Décomposition LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.1.5 Méthode de Cholesky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.2 Méthodes Itératives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.2.1 Norme matricielle et conditionnement . . . . . . . . . . . . . . . . . . . . 96
5.2.2 Principe des Méthodes Itératives . . . . . . . . . . . . . . . . . . . . . . . 99
5.2.3 Méthode de Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.2.4 Méthode de Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
5.2.5 Comparaison des Méthodes de Jacobi et Gauss-Seidel . . . . . . . . . . . 104
5.2.6 Test d’Arrêt des Méthodes Itératives . . . . . . . . . . . . . . . . . . . . . 106
5.3 Application avec Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
5.3.1 Commandes \, chol, lu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
5.3.2 Méthodes Directes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
5.3.3 Méthodes Itératives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
iii
1
Chapitre 1
L’objectif de ce chapitre est d’étudier la manière dont les nombres réels sont représentés et
stockés par la machine.
Les ressources d’une machine (espace mémoire, temps de calcul) étant limités, seul un nombre
fini de nombres réels peuvent être représentés. En général un nombre réel x est tronqué par la
machine c’est à dire qu’elle ne prend qu’un certains nombres de chiffres après la virgule définissant
ainsi un nouveau nombre x∗ qui ne coïncide pas exactement avec le nombre x.
234 = 2 × 116 + 2
= 22 × 58 + 2
= 23 × 29 + 2
= 24 × 14 + 23 + 2
= 25 × 7 + 2 3 + 2
= 26 × 3 + 2 5 + 2 3 + 2
= 27 + 2 6 + 2 5 + 2 3 + 2
2
d’ou 234 = 11101010 .
On a en général
Théorème 1.1 Soit b ≥ 2 un entier. Pour tout entier n ≥ 1 il existe un unique entier p et
des entiers d0 , d1 , ..., dp tels que
0 ≤ di ≤ b − 1, i = 0, ..., p avec dp 6= 0
p
n = d0 + d1 b1 + ... + dp bp = di bi ,
P
i=0
Xp
= (−1)s di bi ,
i=−∞
où
— s est le signe de x (s = 0 si x est positif et s = 1 si x est négatif)
— N le nombre de chiffres significatifs de x
b
— m = 0.a1 ...aN est la mantisse avec 0 ≤ ai ≤ b − 1 et a1 6= 0.
— e l’exposant compris entres deux entiers relatifs L et U
— b la base de représentation
Remarque 1.2 La condition a1 6= 0 assure l’unicité de la représentation de x dans la formule
(1.1).
Exemple 1.4 Écrivons la représentation en virgule flottante du réel x = −3.625 en base 10
et en base 2.
— En base 10
x = −3.625 = (−1)1 0.3625 × 101 on a dans ce cas s = 1, b = 10, e = 1, N = 4 et
m = 0.3625.
— En base 2
Codons d’abord le nombre 3.625 en base 2.
Décomposons ce nombre en partie entière et fractionnaire : 3.625 = 3 + 0.625
2
Codage de la partie entière : 3 = 11
2
Codage de la partie fractionnaire : 0.625 = 0.101 d’ou
2 2
x = (−1)1 11.101 = (−1)1 0.11101 .22
2
dans ce cas s = 1, b = 2, e = 2, N = 5 et m = 0.11101
Remarque 1.3 Quel est l’avantage de la représentation en virgule flottante par rapport à
celle en virgule fixe ? Supposons qu’on dispose de 3 bits ou cases mémoires et cherchons
4 CHAPITRE 1. REPRÉSENTATION DES RÉELS
l’étendu des nombres réels qu’on peut représenter avec ces 3 cases en virgule fixe et flot-
tante. Si on réserve une case pour la partie entière et les deux cases restantes pour la
partie fractionnaire alors on peut coder les nombres réels de 0 jusqu’à 9.99 en représen-
tation décimale. Par contre en virgule flottante on peut coder les nombres réels jusqu’à
0.99 × 109 . Pour le même espace disponible, la virgule flottante offre donc une étendue de
nombres plus importante que celle permise par la représentation fixe.
1 bit est réservé au codage du signe s, 8 bits sont réservé à l’exposant e et enfin 23 bits à la
mantisse m soit un total de 32 bits.
Le premier bit est réservé au signe s, 11 bits sont réservé a l’exposant e et les dernier 52 bits
sont réservées à la mantisse m.
1.3. L’ENSEMBLE F(B, N, L, U ) 5
a1 6= 0 0 ≤ ai ≤ b − 1, ∀i = 1, N .
L’ensemble F(b, N, L, U ) est un sous ensemble fini de R. Le plus grand flottant positif xmax
appartenant à F(b, N, L, U ) est :
b
xmax = 0.b − 1 · · · b − 1 .be ,
d’ou
N
X
xmax U
= b (b − 1) b−i
i=1
N
X 1
= bU (b − 1) i
i=1
b
1 1 − ( 1b )N
= bU (b − 1)
b 1 − 1b
= bU (1 − b−N ).
Soit
xmax = bU (1 − b−N ). (1.2)
D’autre part le plus petit flottant positif xmin appartenant à F(b, N, L, U ) est
b
xmin = 0.10 · · · 0 .bL
d’ou
xmin = bL−1 . (1.3)
Remarque 1.4 Dans le système de représentation F(b, N, L, U ) tout réel x tel que 0 < x <
xmin est identifié à 0 on dit qu’on est en présence d’un underflow. Par contre un réel x
tel que x > xmax est identifié à ∞ et on dit qu’on est en présence d’un overflow.
n o
2
Exemple 1.6 Considérons l’ensemble F(2, 3, −1, 2) = x = (−1)s 0.a1 a2 a3 .2e . On a dans
ce cas N = 3, b = 2, L = −1, U = 2. Comme a1 6= 0 et que 0 ≤ a1 ≤ 1 on a donc a1 = 1
et 0 ≤ ai ≤ 1, i = 2, 3. Les éléments de F(2, 3, −1, 2) s’écrivent donc sous la forme
n o
2
F(2, 3, −1, 2) = (−1)s 0.1a2 a3 .2e
6 CHAPITRE 1. REPRÉSENTATION DES RÉELS
avec a2 , a3 ∈ {0, 1}. Si on s’intéresse aux nombres positifs on peut prendre s = 0. D’ou le
tableau :
2 2 2 2
e = −1 x = 0.100 2−1 = 14 x = 0.101 2−1 = 165
x = 0.110 2−1 = 38 x = 0.111 2−1 = 167
2 2 2 2
e=0 x = 0.100 = 12 x = 0.101 = 85
x = 0.110 = 34 x = 0.111 = 87
2 2 2 2
e=1 x = 0.100 2 = 1 x = 0.101 2 = 54 x = 0.110 2 = 32 x = 0.111 2 = 74
2 2 2 2
e=2 x = 0.100 22 = 2 x = 0.101 22 = 52 x = 0.110 22 = 3 x = 0.111 22 = 27
En reportant ces nombres sur une droite on observe qu’ils ne sont pas également espacés :
| ||||||||| | | | | | | |
0 1 2 3 F(2, 3, −1, 2)
Remarque 1.5 L’erreur absolue donne une mesure quantitative de l’erreur commise et l’er-
reur relative en mesure l’importance.
Exemple 1.8 Supposons qu’on utilise un chronomètre dont la précision est d’un dixième
de seconde, l’erreur absolue est dans ce cas ∆t = 0.1 s. Est ce que c’est une erreur
importante ?
Si c’est un marathon d’une durée de 2h20min l’erreur relative est :
0.1
' 0.0000119
2 × 60 × 60 + 20 × 60
1.3. L’ENSEMBLE F(B, N, L, U ) 7
et ne devrait pas avoir de conséquence sur le classement des coureurs. Par contre s’il s’agit
d’une course de 100m d’une durée de 10s l’erreur relative est beaucoup plus importante :
0.1
= 0.01
10
soit 1% du temps de course. Avec une telle erreur on ne pourra pas faire la différence entre
le premier et le dernier coureur.
On a alors le théorème :
Théorème 1.3 L’erreur relative commise Ex lorsque l’on remplace un réel x ∈ (xmin, xmax)
par son flottant f l(x) dans le système F(b, N, L, U ) vérifie
Ex ≤ b1−N .
2 5
f l(x) = 0.1011 .21 = = 1.25.
4
L’erreur relative commise est Ex = 1.375−1.25
1.375 = 0.09 soit une erreur relative de 9%.
Calculons maintenant l’epsilon machine de F(2, 3, −1, 2). On a b = 2, N = 3, d’ou
1
M = 2−2 = = 0.25
4
soit une erreur relative de 25%. Le Théorème 1.3 dit que lorsque l’on remplace n’importe quel
nombre de (0.25, 3), correspondant au (xmin, xmax) de F(2, 3, −1, 2), par son flottant on commet
une erreur relative ≤ 25%.
Proposition 1.1 Soient L et U deux entiers relatifs tels que L ≤ 1 ≤ U et notons par M
l’epsilon machine de l’ensemble F(b, N, L, U ). Alors M est la distance entre le nombre
1 ∈ F(b, N, L, U ) et le flottant xM ∈ F(b, N, L, U ) le plus proche de 1.
Preuve. Comme L ≤ 1 ≤ U on a :
b
1 = 0.10 · · · 0 .b1 ∈ F.
d’ou
xM − 1 = (b−1 + b−N )b1 − b−1 b1 = b1−N = M .
La proposition précédente donne un algorithme qui fournit une valeur approchée de l’epsilon
machine M .
M = 1
tant que 1 + M > 1
M = M
2
arret
epsilon_machine=2 ∗ M
Exemple 1.10 On a sur une calculatrice à 9 chiffres :
1.4. PROPAGATION DES ERREURS 9
M 1 + M
1 2>1
0.5 1.5 > 1
0.125 1.125 > 1
.. ..
. .
0.00000006 1.00000006 > 1
0.00000003 1.00000003 > 1
1.5 × 10−8 1.00000002 > 1
7.5 × 10−9 1.00000001 > 1
3.8 × 10−9 1
arrêt
l’epsilon machine est donc M = 2 × 7.5 × 10−9 = 1.5 × 10−8 . On voit bien que la valeur
fournit est proche de 101−9 = 10−8 .
Définition 1.4 Soient x un nombre et x∗ une approximation de x. Si l’erreur absolue ∆x =
|x − x∗ | vérifie
∆x ≤ 0.5 × 10−m
alors le chiffre correspondant à la mième puissance de x est dit significatif et tous ceux à
sa gauche le sont aussi.
22 22
Exemple 1.11 On sait que la fraction est une approximation de π. x∗ = = 3.142857 · · ·
7 7
d’ou
22
∆x = π − = 0.00126 · · · ≤ 0.5 × 10−2
7
le chiffre des centaines est significatif et on a en tout 3 chiffres significatifs.
Exemple 1.12 Soit un cube de coté x∗ = 102 cm mesuré avec une erreur absolue ∆x = 0.1
cm. Quelle est la précision correspondant au calcul du volume de ce cube ?
On a V = x3 d’ou d’après le Théorème 1.4
d’ou
∆V = 31.212 cm3 .
Le volume approximatif V ∗ du cube est :
soit
V = 1061.2 ± 31.212 cm3 .
122 × 333 + 122 × 695 → f l(0.122 × 103 × 0.333 × 103 ) + f l(0.122 × 103 × 0.695 × 103 )
= f l(f l(0.040626 × 106 ) + f l(0.08479 × 106 ))
= f l(0.406 × 105 + 0.848 × 105 )
= f l(1.254 × 105 )
= 0.125 × 106
Effet d’absorption
Calculons la somme des nombres suivants en arithmétique flottante à 4 chiffres significatifs :
On remarque que l’arrondi fait en sorte que le petit nombre disparaît complètement devant le
plus grand. On dit qu’on est en présence d’un effet d’absorption.
Effet d’annulation
Calculons la différence des 2 nombres suivants en arithmétique à 4 chiffres significatifs :
La soustraction fait en sorte comme si les deux nombres sont égaux alors que le résultat exacte
est 0.00001 × 106 . On dit dans ce cas qu’on est en présence d’un effet d’annulation.
12 CHAPITRE 1. REPRÉSENTATION DES RÉELS
ans =
2 . 2 2 0 4 e −016
1.6. APPLICATIONS AVEC MATLAB 13
Le plus grand et le plus petit réel positifs en Matlab peuvent être obtenus en tapant
>> realmax
ans =
1 . 7 9 7 7 e +308
>> realmin
ans =
2 . 2 2 5 1 e −308
Ces deux nombres peuvent être obtenus à partir des formules (1.2)-(1.3). En effet on a xmax =
2−1021 (1 − 2−53 ) ' 1.7977 × 10+308 et xmin = 21−53 ' 2.2251 × 10−308 .
Par défaut Matlab affiche les nombres réels avec 4 chiffres après la virgule, il existe d’autres
formats d’affichage par exemple la commande format long permet d’afficher les réels avec 15
chiffres après la virgule.
>> format l o n g
>> 1/7
ans =
0.142857142857143
si on veut revenir au format par défaut on utilise format short
>> format s h o r t
>> 1/7
ans =
0.1429
ans =
9 . 9 9 9 9 9 9 9 9 9 9 9 9 8 5 9 e +001
14 CHAPITRE 1. REPRÉSENTATION DES RÉELS
On remarque que le résultat n’est pas exacte puisqu’il devrait être égal à 100. Pour expliquer
cela calculons la conversion de x en base 2 à l’aide du script suivant
function s=f r a c D e c 2 b i n ( f r a c , n )
% c a l c u l e l e s n p r e m i e r c h i f f r e s de l a c o n v e r s i o n
% du r é e l f r a c en b a s e 2
Z=f r a c ;
f o r i =1 : n ,
v=2∗Z ;
X=f l o o r ( v ) ;
Z=v−X ;
i f X==1, s ( i )= ’ 1 ’ ; e l s e s ( i )= ’ 0 ’ ; end
end
2
La conversion de x en base 2 donne x = 0.0001100110011 · · · . On remarque que l’écriture de
x en base 2 contient une infinité de chiffres après la virgule. Lors de la conversion en binaire
Matlab ne peut donc pas stocker une infinité de chiffres, il ne peut donc prendre qu’un nombre
fini de chiffres qui correspondent à une valeur approchée x∗ de x. On dit que l’erreur commise
sur x est une erreur d’affectation. D’après le Théorème 1.3 l’erreur relative commise Ex vérifie
alors Ex ≤ 2−52 .
Calculons l’erreur relative Es sur la somme s en utilisant les formules de propagation des erreurs.
On a alors d’après les relations (1.4)
1000
X 1000
X
Es ≤ Ex ≤ 2−52 = 1000 × 2−52 = 2.2204 × 10−13 .
i=1 i=1
ans =
1.1102
On remarque que le résultat est très imprécis puisque le résultat exacte est 1. L’erreur relative
commise Ex est donc Ex = 1.1102−1
1 = 0.1102 soit une erreur relative de 11% ce qui est énorme !
Cet exemple montre que lorsque l’on effectue la différence de deux nombres très proche on obtient
un résultat imprécis à cause de la perte des chiffres significatifs. Ce phénomène est connue sous
le nom d’effet d’annulation.
Par récurrence on peut montrer que le terme général de cette suite est un = (0.9)n−1 , ∀n ≥ 1.
Calculons les termes de la suite avec Matlab à l’aide du script suivant
function uu=s u i t e ( n )
u=1;uu = 0 . 9 ;
f o r i =3:n ;
u=2.9∗uu −1.8∗u ;
uu=u ;
end
On a alors le tableau suivant :
n arr(un ) (0.9)n
3 0.8100 0.7290
4 0.8910 0.6561
.. .. ..
. . .
44 40.3260 0.0097
45 44.3586 0.0087
la seconde colonne de ce tableau contient les valeurs arr(un ) de la suite (un ) calculées avec
Matlab en utilisant la définition de la suite (un ) et la dernière colonne les valeurs calculées à
partir du terme général de la suite. On observe qu’a partir d’un certain rang l’effet des erreurs
d’arrondi apparaît sur le résultat du calcul. Dans la définition de la suite récurrente (un ) il y a la
différence de deux termes et lorsque ces deux termes s’approchent il y a l’effet d’annulation qui
se produit d’ou la perte de précision du à l’effet des erreurs d’arrondis de l’arithmétique flottante.
Conclusion Les tests précédents montrent que les opérations de l’arithmétique flottante
sont la principale source de propagation des erreurs d’arrondis. Dans certains cas l’accu-
mulation de ces erreurs, lorsque le nombre d’opérations est important, fait qu’au final on
obtient une erreur importante sur le résultat. Pour minimiser l’effet de ces erreurs d’ar-
rondis on minimise donc d’une part le nombre d’opérations arithmétique et d’autre part
on fait en sorte d’éviter d’utiliser les opérations risquées de l’arithmétique flottante.
Exercices
1. Donner la représentation en notation flottante en base 10 des nombres suivants (arrondir
à 4 chiffres dans la mantisse) :
3. Quel est le plus grand réel positif qu’on peut représenter en simple précision ? Double
précision ?
4. Considérons le nombre entier
N = 2433 − 1
16 CHAPITRE 1. REPRÉSENTATION DES RÉELS
1 1
y = cos2 θ − sin2 θ, p(x) = −
1−x 1+x
π
pour θ = 4.001 et x = 0.0001. Expliquer ce qui risque de se produire du point de vue de
l’arithmétique flottante.
— Proposer une autre façon plus précise pour calculer les expressions précédentes.
7. En arithmétique flottante à 3 chiffres significatifs après la virgule (N = 3, b = 10) calculer
P10 1
2
de deux manières différentes :
i=1 i
(1) En calculant 11 + · · · + 100
1
x2 + 3000.001x + 3 = 0
x2 y 3 en x∗ = 12.1, y ∗ = 3.721,
−xyz, en x∗ = 1.260, y ∗ = 0.510−3 , z ∗ = 12.93
16. (i) Montrer que pour tout flottant non nul x ∈ F(b, N, L, U ) on a
be−1 ≤ |x| ≤ be ,
b
où x = (−1)s 0.a1 · · · aN be .
(ii) En déduire que si x et y sont deux flottants non nuls et adjacents dans F(b, N, L, U )
alors
b−1 εM |x| ≤ |y − x| ≤ εM |x|
où εM désigne l’epsilon machine de l’ensemble F(b, N, L, U ).
18 CHAPITRE 1. REPRÉSENTATION DES RÉELS
Chapitre 2
Interpolation et Approximation
Polynomiales
2.1 Problématique
A partir d’une fonction f connue seulement en (n + 1) points (xi , f (xi )), i = 0, n peut-on
construire une approximation de f (x) et ce pour tout x ? Les points (xi , f (xi )) sont appelés
nœuds ou points d’interpolation et peuvent provenir de données expérimentales ou d’une table.
En d’autre termes, si on ne connaît que les valeurs de f aux points xi peut-on obtenir une
approximation de f (x) pour une valeur de x différente des xi ? La réponse à cette question
dépend de la forme mathématique de la fonction f . Autrement dit la fonction recherchée doit-
elle être un polynôme, une fonction trigonométrique ou une fraction rationnelle ?
• •
• • x
L
•
19
20 CHAPITRE 2. INTERPOLATION ET APPROXIMATION POLYNOMIALES
1 •
• • •
x0 x1 ··· xi ··· xn x
Figure 2.2 – Tous les nœuds sont situés sur l’axe des x sauf le premier (x0 , 1)
de degré n.
Preuve. Soient L1 et L2 deux polynômes de degré n qui passent par les (n + 1) nœuds
(xi , yi ). On a alors
L1 (xi ) = yi , i = 0, n
L2 (xi ) = yi , i = 0, n
pour tout i = 0, n. L possède donc n + 1 racines ce qui est impossible. Il n’y a donc au
plus qu’un seul polynôme de degré n qui passe par les nœuds (xi , yi ).
1er cas : Tous les nœuds sont situés sur l’axe des x sauf le premier (x0 , y0 )
Pour simplifier le problème supposons que les points (xi , yi ) sont distribués comme sur la
figure 2.2. Le premier nœud est (x0 , 1), les autres sont situés sur l’axe des x : (xi , 0), i = 1, n.
Notons par l0 le polynôme de degré n qui interpole les nœuds (x0 , 1), (x1 , 0), · · · (xn , 0). On a
alors
l0 (x0 ) = 1
l0 (xi ) = 0, i = 1, n.
1 •
• • •
x0 x1 ··· xi ··· xn x
Figure 2.3 – Tous les nœuds sont situés sur l’axe des x sauf le second (x1 , 1)
2éme cas : Tous les nœuds sont situés sur l’axe des x sauf (x1 , 1)
Supposons que les nœuds (xi , yi ) sont distribués comme sur la figure 2.3 : Tous les nœuds sont
sur l’axe des x sauf le second nœud (x1 , 1). Notons par l1 le polynôme de degré n qui interpole
les nœuds (x0 , 0), (x1 , 1), (x2 , 0),· · · (xn , 0). On a
l1 (x1 ) = 1,
l1 (xi ) = 0, i 6= 1.
Les n racines de l1 sont donc x0 , x2 ,· · · xn . D’ou
l1 (x) = c(x − x0 )(x − x2 ) · · · (x − xn ).
Comme l1 (x1 ) = 1 il s’ensuit que
1
c=
(x1 − x0 )(x1 − x2 ) · · · (x1 − xn )
on obtient alors l’expression de l1
n
Q
(x − xi )
(x − x0 )(x − x2 ) · · · (x − xn ) i=0,i6=1
l1 (x) = = n .
(x1 − x0 )(x1 − x2 ) · · · (x1 − xn ) Q
(x1 − xi )
i=0,i6=1
iéme cas : Tous les nœuds sont situés sur l’axe des x sauf (xi , 1)
Les nœuds sont dans ce cas : (x0 , 0), (x1 , 0), · · · (xi , 1), (xn , 0) (voir figure 2.4). Notons par
li le polynôme de degré n qui interpole les nœuds précédents. On a
li (xi ) = 1,
li (xj ) = 0, j 6= i.
22 CHAPITRE 2. INTERPOLATION ET APPROXIMATION POLYNOMIALES
1 •
• • •
x0 x1 ··· xi ··· xn x
Figure 2.4 – Tous les nœuds sont situés sur l’axe des x sauf le ième nœud (xi , 1)
Le cas général
Considérons maintenant le cas d’une distribution quelconque de nœuds (xi , yi ), i = 0, n.
Théorème 2.2 Pour une distribution quelconque de n + 1 nœuds (xi , yi ) i = 0, n distincts
le polynôme d’interpolation de Lagrange aux nœuds (xi , yi ) est donné par
n
X
L(x) = yi li (x), (2.1)
i=0
d’ou
f (x1 ) − f (x0 )
a1 =
(x1 − x0 )
Définition 2.2 On définie les premières différences divisées de f par
f (xi+1 ) − f (xi )
f [xi , xi+1 ] =
(xi+1 − xi )
a1 = f [x0 , x1 ].
Calculons maintenant a2
d’ou
f (x0 ) + f [x0 , x1 ](x2 − x0 ) + a2 (x2 − x0 )(x2 − x1 ) = f (x2 ),
donc
1
a2 = (f (x2 ) − f (x0 ) − f [x0 , x1 ](x2 − x0 ))
(x2 − x0 )(x2 − x1 )
1 f (x2 ) − f (x0 ) f [x0 , x1 ](x2 − x0 )
= −
x2 − x0 x2 − x1 x2 − x1
1 f (x2 ) − f (x1 ) f (x1 ) − f (x0 ) x1 − x0 f [x0 , x1 ](x2 − x0 )
= + −
x2 − x0 x2 − x1 x1 − x0 x2 − x1 x2 − x1
1 x1 − x0 x2 − x0
= f [x1 , x2 ] + f [x0 , x1 ] −
x2 − x0 x2 − x1 x2 − x1
f [x1 , x2 ] − f [x0 , x1 ]
= .
x2 − x0
Cette dernière expression fait intervenir une différence divisée d’ordre 2.
Définition 2.3 Les deuxièmes différences divisées de f sont définit par
f [xi ] = f (xi ).
a2 = f [x0 , x1 , x2 ].
Théorème 2.3 L’unique polynôme d’interpolation L qui interpole les nœuds (xi , f (xi )),
i = 0, n peut s’écrire selon la formule d’interpolation de Newton
ai = f [x0 , · · · , xi ], 0 ≤ i ≤ n. (2.3)
Il reste maintenant à calculer les coefficients de ce polynôme. Pour cela on construit une table
dite des différences divisées de la manière suivante :
xi l f (xi ) f [xi , xi+1 ] f [xi , xi+1 , xi+2 ] f [xi , xi+1 , xi+2 , xi+3 ] f [xi , xi+1 , xi+2 , xi+3 , xi+4 ]
x0 f (x0 ) f [x0 , x1 ] f [x0 , x1 , x2 ] f [x0 , x1 , x2 , x3 ] f [x0 , x1 , x2 , x3 , x4 ]
x1 f (x1 ) f [x1 , x2 ] f [x1 , x2 , x3 ] f [x1 , x2 , x3 , x4 ]
x2 f (x2 ) f [x2 , x3 ] f [x2 , x3 , x4 ]
x3 f (x3 ) f [x3 , x4 ]
x4 f (x4 )
Table des différences divisées
Dans cette table on s’est arrêté aux quatrièmes différences divisées. Le calcul des différences
divisées se fait selon la formule de la définition 2.3. Par exemple pour calculer le terme f [x1 , x2 , x3 ]
il suffit de soustraire les deux termes adjacents f [x2 , x3 ] et f [x1 , x2 ] et diviser le résultat par
x3 − x1 . Pour calculer le polynôme d’interpolation L on utilise juste la première ligne de cette
table qui contient les coefficients du polynôme.
Exemple 2.2 Reprenons l’exemple du paragraphe précédent et cherchons le polynôme d’in-
terpolation L3 aux nœuds (0, 1), (1, 2), (2, 9), (3, 28). La table des différences divisées
est :
xi f (xi ) f [xi , xi+1 ] f [xi , xi+1 , xi+2 ] f [x0 , x1 , x2 , x3 ]
0 1 1 3 1
1 2 7 6
2 9 19
3 28
d’ou d’après (2.3) a0 = 1, a1 = 1, a2 = 3, a3 = 1, le polynôme d’interpolation par la
méthode de Newton est alors
qui est le même polynôme obtenu par la méthode de Lagrange. Si on souhaite ajouter un
autre point d’interpolation par exemple (5, 54) il n’est pas nécessaire de tout recommencer.
Il suffit d’ajouter une colonne à la table précédente :
xi f (xi ) f [xi , xi+1 ] f [xi , xi+1 , xi+2 ] f [x0 , x1 , x2 , x3 ] f [x0 , x1 , x2 , x3 , x4 ]
3
0 1 1 3 1 −
5
1 2 7 6 −2
2 9 19 −2
3 28 13
5 54
26 CHAPITRE 2. INTERPOLATION ET APPROXIMATION POLYNOMIALES
Ln (x) = a0 + a1 (x − x0 ) + · · · + an (x − x0 ) · · · (x − xn−1 ).
Si on ajoute un nœud (xn+1 , f (xn+1 )) aux nœuds précédents le nouveau polynôme s’écrit
Ln+1 (x) = a0 +a1 (x−x0 )+· · ·+an (x−x0 ) · · · (x−xn )+an+1 (x−x0 ) · · · (x−xn−1 )(x−xn ),
où E(x) est l’erreur d’interpolation qu’on va déterminer. Il est clair que E(xi ) = f (xi )−L(xi ) = 0,
∀i = 0, n. L’erreur d’interpolation est donc nulle aux nœuds xi puisque f coïncide avec son
polynôme d’interpolation L.
Théorème 2.4 Soient x0 < x1 < · · · < xn (n + 1) nœuds distincts et x ∈ [x0 , xn ]. Supposons
que f ∈ C n+1 (x0 , xn ). L’erreur d’interpolation au point x est alors donnée par
(x − x0 ) · · · (x − xn ) (n+1)
E(x) = f (ξx ) (2.4)
(n + 1)!
où ξx ∈ (x0 , xn ) dépend de x.
Avant de donner la preuve de ce théorème on aura besoin du lemme suivant.
Lemme 2.1 Soit g une fonction n fois dérivable sur [a, b]. On suppose qu’il existe (n + 1)
points t0 < t1 < · · · < tn de [a, b] tel que g(ti ) = 0. Alors il existe ξ ∈ (t0 , tn ) tel que
g (n) (ξ) = 0.
donc satisfaite.
Supposons maintenant que x 6= xi , ∀i = 0, n fixé et posons
wn+1 (t)
φ(t) = E(t) − E(x)
wn+1 (x)
qui est une fonction de t ∈ [x0 , xn ]. Appliquons le lemme précédent à la fonction φ(t). En
effet puisque f est C n+1 (x0 , xn ) et L un polynôme alors E(t) = f (t) − L(t) est également
C n+1 (x0 , xn ). De même wn+1 est C n+1 (x0 , xn ) (puisque c’est un polynôme) donc φ est
C n+1 (x0 , xn ). D’un autre coté puisque wn+1 (xi ) = 0
wn+1 (xi )
φ(xi ) = E(xi ) − E(x) = 0, i = 0, n
xn+1 (x)
Or
(n+1)
wn+1 (ξx )
φ(n+1) (ξx ) = E (n+1) (ξx ) − E(x) (2.6)
wn+1 (x)
Comme L est un polynôme de degré n on a
L(n+1) (ξx ) = 0
(n+1)
d’ou E (n+1) (ξx ) = f (n+1) (ξx ) − L(n+1) (ξx ) = f (n+1) (ξx ) de plus wn+1 (ξx ) = (n + 1)!.
Les relations (2.5)-(2.6) entraînent donc
(n + 1)!
f (n+1) (ξx ) = E(x),
wn+1 (x)
finalement
(x − x0 )(x − x1 ) · · · (x − xn ) (n+1)
E(x) = f (ξx ).
(n + 1)!
Remarque 2.3 1. L’inconvénient de la relation d’erreur précédente c’est qu’elle fait inter-
venir la dérivée d’ordre n + 1 de la fonction inconnue f ainsi que du point ξx également
inconnu. Dans la suite du paragraphe on établira une autre relation basée sur la méthode
de Newton qui nous donnera une estimation de l’erreur.
2. Puisque le terme de l’erreur en x fait intervenir des coefficients de la forme (x − xi ) il y
a tout intérêt à choisir les points xi le plus proche possible de x. Dans ce cas il n’est pas
besoin de construire un polynôme d’interpolation passant par tous les points, on retient
seulement les nœuds les plus proche de x de manière à minimiser l’erreur (voir exercice
2).
Pi (x) = ai x3 + bi x2 + ci x + di , i = 1, n.
et à relier ces différents polynômes de façon à ce que la courbe résultante soit 2 fois dérivable.
C’est l’interpolation par splines cubiques.
Supposons qu’on a (n + 1) nœuds d’interpolation et donc n intervalles [xi−1 , xi ], i = 1, n. Il y a
donc 4n coefficients ai , bi , ci , di à déterminer. Il nous faut donc 4n équations pour déterminer
tous les coefficients ai , bi , ci , di . Parmi les points d’interpolation distinguons les extrémités x0 ,
xn et les points intérieurs x1 , · · · , xn−1 . Les points intérieurs sont à la jonction de 2 polynômes
de degré 3. Les conditions imposées aux polynômes sont donc
— Les polynômes P1 et Pn passant par les extrémités x0 et xn :
(x − xi ) (x − xi−1 )
Pi00 (x) = fi−1
00
+ fi00
(xi−1 − xi ) (xi − xi−1 )
30 CHAPITRE 2. INTERPOLATION ET APPROXIMATION POLYNOMIALES
00 1 1
fi−1 (xi−1 − xi )2 + αi (xi−1 − xi ) − fi00 (xi − xi−1 )2 = f (xi−1 ) − f (xi ),
6 6
d’ou on tire
f (xi−1 ) − f (xi ) (xi − xi−1 )(fi00 − fi−1
00
)
αi = − .
xi−1 − xi 6
L’équation de la spline cubique dans l’intervalle [xi−1 , xi ] est donc
00 (x − xi )3 00 (x − xi−1 )3
Pi (x) = fi−1 + fi−1 +
6(xi−1 − xi ) 6(xi − xi−1 )
f (xi ) − f (xi−1 ) (xi − xi−1 )(fi00 − fi−1
00
(xi − xi−1 )2
)
− + (x − xi ) + yi − fi00
xi − xi−1 6 6
ou encore
(x − xi )3 (x − xi−1 )3
00 yi (xi − xi−1 )
Pi (x) = fi−1 + fi00 + − fi00 (x − xi )
6(xi−1 − xi ) 6(xi − xi−1 ) xi − xi−1 6
(xi − xi−1 )2
yi−1 00 (xi − xi−1 )
− − fi−1 (x − xi ) + f (xi ) − fi00 . (2.19)
(xi − xi−1 ) 6 6
En remplaçant (x − xi ) par (x − xi−1 ) + (xi−1 − xi ) dans le troisième terme à droite de (2.19)
on obtient finalement
(x − xi )3 3
00 00 (x − xi−1 ) f (xi−1 ) 00 (xi − xi−1 )
Pi (x) = −fi−1 + fi − − fi−1 (x − xi )
6(xi − xi−1 ) 6(xi − xi−1 ) xi − xi−1 6
f (xi ) 00 (xi − xi−1 ) f (xi ) 00 (xi − xi−1 )
− fi (x − xi−1 ) + − fi (xi−1 − xi )
xi − xi−1 6 xi − xi−1 6
(xi − xi−1 )2
+yi − fi00 .
6
2.7. INTERPOLATION PAR FONCTION SPLINE 31
et
f [x0 , x1 , x2 ]
f [x1 , x2 , x3 , x4 ]
B=
f [x2 , x3 , x4 ] .
..
.
f [xn−2 , xn−1 , xn ]
Exemple 2.4 Calculons la spline cubique qui passe par les points (1, 1), (2, 4), (4, 9), (5, 11).
Pour cela dressons la table des différences divisées d’ordre 2
2 00 1 −1
f2 + 2f100 + = 6 × .
3 3 6
La deuxième équations de (2.21) devient (i = 2)
1 00 2 −1
f + 2f200 + f100 = 6 × ,
3 3 3 6
or comme f300 = f000 = 0, le système linéaire est
2 00
f + 2f100 = −1
3 2
2
2f200 + f100 = −1,
3
la résolution de ce système donne f100 = −0.375 et f200 = −0.375.
Calculons l’équation de la spline dans l’intervalle [1, 2] :
(x − 1)3
0 1
P1 (x) = −0.375 − 1− (x − 2) + 1 + 0.375 (x − 1)
6 6 6
= −0.0625(x − 1)3 − (x − 2) + 4.0625(x − 1).
(x − 4)3 (x − 2)3
1 9 1
P2 (x) = 0.375 − 0.375 − 2 + 0.375 (x − 4) + + 0.375 (x − 2)
12 12 3 2 3
= 0.03125(x − 4)3 − 0.03125(x − 2)3 − 2.125(x − 4) + 4.625(x − 2).
(x − 5)3
1
P3 (x) = 0.375 − 9 + 0.375 (x − 5) + 11(x − 4)
6 6
= 0.0625(x − 5)3 − 9.0625(x − 5) + 11(x − 4).
2.8. LA MÉTHODE DES MOINDRES CARRÉS 33
Erreur d’interpolation
Le théorème suivant nous donne une estimation de l’erreur d’interpolation par une spline
naturelle.
Théorème 2.5 Soit f une fonction de classe C 4 (I) sur un intervalle I et x0 , · · · , xn (n + 1)
nœuds dans I. Notons par P la spline naturelle interpolant f aux nœuds xi , i = 0, n,
alors :
5 4
|P (x) − f (x)| ≤ h max |f (4) (x), ∀x ∈ I,
384 x∈I
où h = max hi .
1≤i≤n
Cas particulier : m = 1
Dans ce cas on cherche un polynôme Pe1 de degré ≤ 1 qui vérifie
Xn n
2 X
2
yi − Pe1 (xi ) ≤ (yi − P1 (xi ))
i=0 i=0
∂Φ ∂Φ
(a0 , a1 ) = 0, (a0 , a1 ) = 0,
∂b0 ∂b1
En résolvant le système (2.25) on obtient a0 et a1 et donc Pe1 qui est le polynôme des moindres
carrés de degré 1 approchant les données (xi , yi ), i = 0, n.
En résolvant le système (2.26) on trouve les coefficients a0 , · · · , am et donc le polynôme Pem (x) =
a0 + a1 x + · · · + am xm qui réalise la meilleure approximation au sens des moindres carrés des
données (xi , yi ), i = 0, n.
Cas particulier : m = n
Dans le cas particulier lorsque m = n, on remarque que la relation (2.23) est satisfaite lorsque
Pen = Ln c’est à dire lorsque Pen est le polynôme d’interpolation de Lagrange correspondant aux
données (xi , yi ), en effet puisque
xi 0 2 3
yi 1 4 0
et cherchons le polynôme des moindres carrés de degré 2. D’après (2.26) le système linéaire
est
3a0 + 5a1 + 13a2 = 5
5a0 + 13a1 + 35a2 = 8
13a0 + 35a1 + 97a2 = 16
d’ou
3 5 13
1 186
a1 = 5 8 35 = = 5.1667
36 36
13 16 97
3 5 5
1 = − 66 = −1.8333
a2 = 5 13 8
36 36
13 35 16
le polynôme des moindres carrés est donc : Pe2 (x) = 1 + 5.1667x − 1.8333x2 .
>> f=@cosh ;
>> x = −1:0.5:1;
>> n=length ( x ) ;%on d e t e r m i n e de nombre de composantes de x
>> y=f ( x ) ;
>> L=p o l y f i t ( x , y , n−1)%l e polynôme d ’ i n t e r p o l a t i o n e s t donc de d e g r é n−1
L =
function p=runge ( n )
f=i n l i n e ( ’ 1./(1+ x . ^ 2 ) ’ ) ;
x=−5:10/n : 5 ;
y=f ( x ) ;
p=p o l y f i t ( x , y , n ) ;
f p l o t ( f ,[ −5 5 ] , ’ k ’ )
hold on
plot ( x , y , ’ ok ’ ) ;
t i t l e ( ’ phénomène ␣ de ␣Runge ’ ) ;
xlabel ( ’ axe ␣ d e s ␣x ’ ) ;
ylabel ( ’ axe ␣ d e s ␣y ’ ) ;
hold on ;
f p l o t (@( x ) polyval ( p , x ) , [−5 5 ] , ’ . k ’ ) ;
2.9. APPLICATION AVEC MATLAB 37
Figure 2.6 – Graphe de la spline cubique s qui interpole la fonction sin(2πx) en 21 nœuds
équidistants de l’intervalle [−1, 1]
retourne la spline cubique s qui interpole f aux nœds xi . La dernière commande [x,C]=unmkpp(s)
renvoie les nœuds rassemblés dans le vecteur x ainsi que la matrice C dont chaque ligne contient
les coefficients de la spline cubique dans l’intervalle [xi , xi+1 ]. Pour calculer par exemple les
coefficients de la spline dans le troisième intervalle [−0.8, −0.7] de la subdivision on tape
>> C ( 3 , : ) , x ( 3 )%x ( 3 ) e s t l e t r o i s i è m e noeud de l a s u b d i v i s i o n
ans =
ans =
−0.8000
l’expression de la spline s dans l’intervalle [−0.8, −0.7] est s(x) = 0.8643(x − x(3))3 − 19.6030(x −
x(3))2 +1.9517(x−x(3))+0.9511 = 0.8643(x+0.8)3 −19.6030(x+0.8)2 +1.9517(x+0.8)+0.9511.
Pour évaluer la spline s au point x = 0.6 on tape
>> ppval ( s , 0 . 6 )
ans =
−0.5878
Pour tracer le graphe de la spline s dans l’intervalle [−1, 1] on construit d’abord la fonction ss
de la variable z
>> s s=@( z ) ppval ( s , z ) ;
puis on trace de graphe de s avec les nœuds (xi , yi )
>> f p l o t ( s s , [ − 1 , 1 ] , ’ k ’ ) ; hold on ; plot ( x , y , ’ ok ’ )
la figure 2.6 montre le graphe de la spline cubique interpolant f aux 21 nœuds (xi , yi ) de l’inter-
valle [−1, 1].
Exercices
1. Calculer la table des différences divisées pour les données suivantes :
x -2 -1 0 1 2 3
y 1 4 11 16 13 -4
— En déduire que ses données proviennent d’un polynôme. Quel est son degré ?
2. Soit la fonction f (x) = ex avec 0 ≤ x ≤ 2. En utilisant un polynôme de degré 1 calculer
une valeur approchée de f (0.25) en prenant x0 = 0 et x1 = 0.5.
— Calculer une valeur approchée de f (0.75) à l’aide d’un polynôme de degré 1 en prenant
x0 = 0.5 et x1 = 1.
— Calculer une valeur approchée de f (0.25) et f (0.75) en utilisant un polynôme de degré
2 en prenant x0 = 0, x1 = 1 et x2 = 2.
— Laquelle des trois approximations précédentes est la plus précise ? Pourquoi ?
3. Considérons les points suivants : (x0 , y0 ) = (100, 10), (x1 , y1 ) = (121, 11), (x2 , y2 ) =
(144, 12). En utilisant le polynôme
√ d’interpolation de Lagrange aux points précédents
calculer une approximation de 115.
— En utilisant la formule donnant l’erreur d’interpolation proposer une majoration de
l’erreur commise. Comparer avec l’erreur exacte.
4. Considérons la fonction
π
f (x) = sin
x
2
— Donner le polynôme d’interpolation p de degré 2 associé à f aux points xi = 0, 1, 2.
— Donner l’expression de l’erreur f (x) − p(x).
2.9. APPLICATION AVEC MATLAB 39
Dérivation et Intégration
Numériques
où Ln est le polynôme d’interpolation de f aux nœuds xi et En (x) est l’erreur en x donnée par
(voir formule 2.4)
f (n+1) (ξ(x))
En (x) = (x − x0 ) · · · (x − xn ), (3.2)
(n + 1)!
où ξ(x) ∈ [x0 , xn ] dépend de x. Dérivons les deux cotés de (3.1) on obtient
L’erreur due à cette approximation est En0 (x). Calculons En0 (x), on a partir de (3.2)
41
42 CHAPITRE 3. DÉRIVATION ET INTÉGRATION NUMÉRIQUES
Le terme de l’erreur En0 (x) dans (3.3) est donc donné par
n n
f (n+2) (ξ(x))ξ 0 (x) f (n+1) (ξ(x)) X Y
En0 (x) = (x − x0 ) · · · (x − xn ) + (x − xj ).
(n + 1)! (n + 1)!
k=0 j=0,j6=k
Dans le cas ou les points d’interpolation sont équidistants c’est à dire xi = x0 + ih, on a xi − xj =
(i − j)h d’ou
n
f (n+1) (ξi ) Y
En0 (xi ) = hn (i − j), (3.4)
(n + 1)!
j=0,j6=i
où ξi = ξ(xi ).
f (x1 ) − f (x0 )
f 0 (x) = f [x0 , x1 ] + E10 (x) = + E10 (x).
x1 − x0
On a alors en x = x0
f (x1 ) − f (x0 )
f 0 (x0 ) = + E10 (x0 ).
x1 − x0
Calculons maintenant E10 (x0 ). On a d’après (3.4)
f 00 (ξ0 )
E10 (x0 ) = h (−1)
2
h
= − f 00 (ξ0 ),
2
3.1. DÉRIVATION NUMÉRIQUE 43
d’ou
f (x1 ) − f (x0 ) h 00
f 0 (x0 ) = − f (ξ0 ), (3.6)
x1 − x0 2
où ξ0 ∈ [x0 , x1 ]. La relation (3.6) est dite formule à deux points à droite de x0 .
De même on a en x1
f (x1 ) − f (x0 )
f 0 (x1 ) = + E10 (x1 )
x1 − x0
or
1
f 00 (ξ1 ) Y h
E10 (x1 ) = h (1 − j) = f 00 (ξ1 )
2 2
j=0,j6=1
d’ou
f (x1 ) − f (x0 ) h 00
f 0 (x1 ) = + f (ξ1 ), (3.7)
x1 − x0 2
où ξ1 ∈ [x0 , x1 ]. (3.7) est dite formule à deux points à gauche de x1 .
En x = x0 :
h2 000 h2 000
E20 (x0 ) = f (ξ0 )(0 − 1)(0 − 2) = f (ξ0 ),
6 3
où ξ0 ∈ [x0 , x2 ], d’ou la relation
En x = x1 : On a
f 0 (x1 ) = L02 (x1 ) + E20 (x1 )
44 CHAPITRE 3. DÉRIVATION ET INTÉGRATION NUMÉRIQUES
d’ou
L02 (x1 ) = f [x0 , x1 ] + (x1 − x0 )f [x0 , x1 , x2 ]
f (x1 ) − f (x0 ) x1 − x0 f (x2 ) − f (x1 ) f (x1 ) − f (x0 )
= + −
x1 − x0 x2 − x1 x2 − x1 x1 − x0
f (x1 ) − f (x0 ) h f (x2 ) − f (x1 ) f (x1 ) − f (x0 )
= + −
h 2h h h
f (x2 ) − f (x0 )
= .
2h
D’autre part on a de (3.4)
h2 000 h2
E20 (x1 ) = f (ξ1 )(1 − 0)(1 − 2) = − f 000 (ξ1 )
6 6
d’ou la formule de dérivation numérique
f (x2 ) − f (x0 ) h2 000
f 0 (x1 ) = − f (ξ1 ), (3.9)
2h 6
où ξ1 ∈ [x0 , x2 ]. La formule (3.9) est dite formule à trois points centrée en x1 .
En x = x2 : On a
f 0 (x2 ) = L02 (x2 ) + E20 (x2 )
= f [x0 , x1 ] + f [x0 , x1 , x2 ](2x2 − (x0 + x1 )).
Comme x1 = x0 + h, x2 = x0 + 2h alors 2x2 − (x0 + x1 ) = 3h, il s’ensuit alors que
0 f (x1 ) − f (x0 ) 3h f (x2 ) − f (x1 ) f (x1 ) − f (x0 )
L2 (x2 ) = + +
h 2h h h
−4f (x1 ) + 3f (x2 ) + f (x0 )
= .
2h
Calculons maintenant l’erreur E20 (x2 )
h2 00 h2 000
E20 (x2 ) = f (ξ2 )(2 − 0)(2 − 1) = f (ξ2 ),
6 3
d’ou
3f (x2 ) − 4f (x1 ) + f (x0 ) h2 000
L02 (x2 ) = + f (ξ2 ), (3.10)
2h 3
où ξ2 ∈ [x0 , x2 ]. La relation (3.10) est dite formule à trois points à gauche de x2 .
Exemple 3.1 Calculons f 0 (0) où f (x) = ex à l’aide des formules à trois points à gauche et
à droite de x = 0. On prend h = 0.05.
à gauche de x = 0 : x2 = 0, x1 = −0.05, x0 = −0.1. D’après la formule (3.10) on a
3e0 − 4e0.05 + e−0.1
f 0 (0) = f 0 (x2 ) ' = 0.9992.
0.1
La valeur exacte est f 0 (0) = e0 = 1. L’erreur est donc E2 (0) = 7.9 × 10−4 .
à droite de x = 0 : x0 = 0, x1 = 0.05, x2 = 0.1. On a d’après (3.8)
4e0.05 − 3e0 − e0.1
f 0 (0) = f 0 (x0 ) ' = 0.9991.
0.1
3.1. DÉRIVATION NUMÉRIQUE 45
Théorème 3.1 Soit f une fonction de classe C 4 (I) sur un intervalle I et x0 , x1 , x2 trois
points équidistants de I tels que x2 − x1 = x1 − x0 = h. Alors ils existent ξ1 ∈ (x0 , x1 ) et
ξ2 ∈ (x1 , x2 ) tels que
00
Exemple 3.2 Soit f (x) = e−x et h = 0.1. Calculons une valeur approchée de f (0.1). On a
x0 = 0, x1 = x0 + h = 0.1, x2 = x1 + h = 0.2. D’ou d’après (3.13)
00 e−0.2 − 2e−0.1 + e0
f (0.1) ' = 0.905592
(0.1)2
00
La valeur exacte est f (0.1) = e−0.1 = 0.904837. Calculons une majoration de l’erreur en
2
utilisant la formule (3.14). Posons Er = h12 maxx∈(0,0.2) e−x . On a alors max |f (4) (x)| =
x∈[0,0.2]
max e−x = 1, d’ou d’après (3.14)
x∈[0,0.2]
0.2 0.1 0 2
f (0.1) − e − 2e + e ≤ Er = (0.1) × 1 = 0.000833.
00
(0.1) 2 12
e0.2 − 2e0.1 + e0
L’erreur effective est er = e−0.1 − = 0.000754. On remarque qu’on a
(0.1)2
bien er ≤ Er .
En faisant varier m (le degré du polynôme d’interpolation) on obtient différentes formules d’in-
tégration numériques appelées formules de Newton-Cotes.
3.2. INTÉGRATION NUMÉRIQUE 47
Figure 3.1 – Méthodes des trapèzes : le graphe du polynôme d’interpolation de degré 1 dans
(xi , xi+1 ) est un segment de droite.
avec
Comme la fonction (x − xi )(x − xi+1 ) ≤ 0 sur [xi , xi+1 ] on a alors en appliquant le Théorème de
la moyenne à (3.18)
f 00 (ηi ) xi+1
Z
Ri = (x − xi )(x − xi+1 )dx
2 xi
" x Z xi+1 #
f 00 (ηi ) (x − xi )(x − xi+1 ) i+1 (x − xi+1 )2
= − dx
2 2
xi xi 2
f 00 (ηi ) 3
= h , (3.19)
12
d’ou
xi+1
f 00 (ηi ) 3
Z
h
f (x)dx = (f (xi ) + f (xi+1 )) − h , xi ≤ ηi ≤ xi+1 .
xi 2 12
Or d’après (3.17)
b n−1 n−1
h3 X 00
Z
hX
f (x)dx = (f (xi ) + f (xi+1 )) − f (ηi )
a 2 i=0 12 i=0
h
= (f (x0 ) + f (x1 ) + f (x1 ) + f (x2 ) + · · · + f (xn−1 ) + f (xn−1 ) + f (xn )) −
2
n−1
h3 X 00
− f (ηi )
12 i=0
n−1
! n−1
h X h3 X 00
= f (x0 ) + 2 f (xi ) + f (xn ) − f (ηi ).
2 i=0
12 i=0
Pour traiter le reste R dans la formule précédente on utilise un autre théorème de la moyenne.
Puisque f 00 est continue alors d’après le second Théorème de la moyenne
n−1
X
∃η ∈ [a, b] : f 00 (ηi ) = f 00 (η),
i=0
Théorème 3.2 Soient f une fonction de classe C 2 sur un intervalle [a, b] et a = x0 < x1 <
· · · < xn = b une subdivison uniforme de [a, b] de "pas" h. Alors il existe η ∈ (a, b) tel que
Z b n−1
!
h X h3
f (x)dx = f (x0 ) + 2 f (xi ) + f (xn ) − f 00 (η), a ≤ η ≤ b. (3.20)
a 2 i=0
12
3.2. INTÉGRATION NUMÉRIQUE 49
y
f
Interprétation géométrique
La méthode des trapèzes consiste, comme le montre la figure 3.1, à approcher l’intégrale
Rb
a
f (x)dx, qui représente l’aire de la surface délimitée par le graphe de la fonction f et les
droites d’équations x = a x = b et y = 0, par la somme des surfaces de chaque trapèze constitué
par les quatre points xi , xi+1 , f (xi ) et f (xi+1 ).
Définition 3.1 On dit qu’une méthode d’intégration numérique est d’ordre p si elle est
exacte pour tout polynôme de degré ≤ p.
Remarque 3.2 La formule du trapèze est exacte pour tout polynôme de degré ≤ 1. En effet
si f est un polynôme de degré ≤ 1 alors f 00 (x) = 0 ∀x ∈ [a, b] d’ou
h3 00
f (η) = 0
12
la formule (3.20) est donc exacte pour tout polynôme de degré ≤ 1. On peut montrer
que plus l’ordre d’une méthode d’intégration numérique est élevé plus cette méthode est
précise.
Rπ
Exemple 3.3 Calculons l’intégrale 02 sin(x)dx par la méthode du trapèze pour n = 4. On
a h = π8 et xi = π8 i, i = 0, 1, 2, 3, 4. D’ou le tableau
π π 3π π
xi 0 8 4 8 2
sin(xi ) 0 0.3827 0.7071 0.9239 1
d’ou π
Z2
π
sin(x)dx = (0 + 0.3827 + 0.7071 + 0.9239 + 1 = 0.9871.
16
0
R π
La valeur exacte est 0
2
sin xdx = 1, l’erreur effective par la méthode du trapèze est alors
erT = 0.0129.
choisira donc les trois points : xi , xi+1 , xi+2 . Notons par L2 Le polynôme d’interpolation de degré
2 qui approche f aux points précédents et par E2 l’erreur associée on a alors
L2 (x) = f (xi ) + f [xi , xi+1 ](x − xi ) + f [xi , xi+1 , xi+2 ](x − xi )(x − xi+1 ), x ∈ [xi , xi+1 ].
(x − xi )(x − xi+1 )(x − xi+2 ) 00
E2 (x) = f (ξi ), ξi ∈ [xi , xi+2 ]
6
avec
f (xi+1 ) − f (xi )
f [xi , xi+1 ] =
h
f (xi+2 ) − 2f (xi+1 ) + f (xi )
f [xi , xi+1 , xi+2 ] =
2h2
et h = xi+2 − xi+1 = xi+1 − xi . On a d’après (3.16) avec m = 2
R xi+2 Rx Rx
xi
f (x)dx = xii+2 f (xi )dx + f [xi , xi+1 ] xii+2 (x − xi )dx + f [xi , xi+1 , xi+2 ]×
R xi+2
× xi (x − xi )(x − xi+1 )dx + Ri ,
R xi+2 (x − xi )(x − xi+1 )(x − xi+2 ) 00
où Ri = xi
f (ξi )dx. On obtient après simplification
6
Z xi+2
2
f (x)dx = 2hf (xi ) + 2h2 f [xi , xi+1 ] + h3 f [xi , xi+1 , xi+2 ] + Ri
xi 3
h 2 h
= 2hf (xi ) + 2hf (xi+1 ) − 2hf (xi ) + f (xi+2 ) − hf (xi+1 ) + f (xi ) + Ri
3 3 3
h
= (f (xi ) + 4f (xi+1 ) + f (xi+2 )) + Ri , (3.21)
3
x xi xi+1 xi+2
p(x) 0 + 0 − 0
finalement
(x − xi )(x − xi+1 )2 (x − xi+2 ) (4)
f (x) − L2 (x) = f (ηi ).
24
(4)
Posons M4 = max f (x). En intégrant les deux cotés de l’égalité précédente on obtient
x∈[a,b]
Z
xi+2
Z xi+2
|Ri | = E2 (x)dx ≤ |E2 (x)|dx
xi xi
Z xi+2
≤ |f (x) − L2 (x)|dx
xi
xi+2
(x − xi )(x − xi+1 )2 (xi+2 − x)
Z
≤ M4 dx
xi 24
Une intégration par partie nous donne
Z xi+2
4 (xi+2 − xi )5
(x − xi )(x − xi+1 )2 (xi+2 − x)dx =
xi 15 25
4 5
= h .
15
Les deux dernières relations entraînent finalement
h5 4
|Ri | ≤ M4
24 15
h5
= M4 . (3.22)
90
Rb
Revenons maintenant au cas de l’intégrale a
f (x)dx et écrivons que
Z b n−1
X Z x2i+2
f (x)dx = f (x)dx. (3.23)
a i=0 x2i
Remarquons que le choix des points d’interpolation xi , xi+1 , xi+2 impose de travailler avec deux
sous-intervalles consécutifs ce qui implique que le nombre total de sous-intervalles est pair. D’
après (3.21) Z x2i+2
h
f (x)dx = (f (x2i ) + 4f (x2i+1 ) + f (x2i+2 )) + Ri (3.24)
x2i 3
(3.23) et (3.24) entrainent alors
Rb h
a
f (x)dx = (f (x0 ) + 4f (x1 ) + f (x2 ) + f (x2 ) + 4f (x3 ) + f (x4 ) + f (x4 ) + 4f (x5 ) + f (x6 )+
3
n−1
P
· · · + f (x2n−2 ) + 4f (x2n−1 ) + f (x2n )) + Ri
i=0
b−a
or n = d’ou
2h
n−1
X (b − a)h4
|Ri | ≤ M4
i=0
180
Interprétation géométrique
Rx
Dans la figure 3.2 on approche chaque intégrale xii+2 f (x)dx de la somme (3.23) par l’aire
de la surface comprise entre la courbe en trait discontinue représentant le graphe du polynôme
d’interpolation de degré 2 de f aux points xi , xi+1 , xi+2 et les droites d’équations x = xi ,
x = xi+2 et y = 0.
Remarque 3.3 1. Dans la méthode de Simpson le nombre de sous-intervalles de la subdivi-
sion est toujours pair.
2. La méthode de Simpson est d’ordre 3, en effet si f est un polynôme de degré 3 alors
f (4) (x) = 0 ∀x et donc M4 = 0 d’ou d’après (3.26) R = 0. La méthode de Simpson est
donc exacte pour les polynômes de degré ≤ 3.
π
Exemple 3.4 Reprenons l’exemple précédent avec la méthode de Simpson. On a h = et
8
π π 3π π
x0 = 0, x1 = , x2 = , x3 = , x4 = d’ou
8 4 8 2
Z π2
π π π 3π π
sin xdx ' sin 0 + 2 sin + 4 sin + 2 sin + sin = 1.0001
0 24 8 4 8 2
l’erreur effective est erS = 0.0001. On voit que la méthode de Simpson est plus précise que celle
du trapèze puisqu’elle est d’ordre 3 alors que celle du trapèze est d’ordre 1.
fder1 =
0.0100
qui est la valeur approchée de la dérivée de f en x = 0 par la formule à trois points centrée
(3.10).
Le tableau suivant contient les valeurs des dérivées approchées de f calculées en utilisant le script
der(h) pour h = 10−6 , · · · , 10−16 .
valeur de h 10−6 10−12 10−14 10−16
à gauche de 1 6.8510 6.8510 6.8672 5.6460
à droite de 1 0 0.0007 0.0162 4.5357
centrée en 1 0 0.0001 0.0060 1.2051
dérivée 2eme en 1 3.9363 × 104 2.2204 × 108 10.6699 4.4409 × 1016
Dérivées approchées de la fonction tan x en x = 1 pour différentes valeurs de h
On observe qu’a partir de h = 10−14 les erreurs des dérivées approchées ne tendent plus vers
0, car dans les formules de dérivation approchées (3.8)-(3.10) et (3.13) il y a la différence entres
deux valeurs et plus h s’approche de 0 plus ces valeurs sont proches et l’effet d’annulation se
produit. La dérivation approchée est donc un phénomène instable par nature.
IT=
0.6938
La commande Matlab trapz(x,y) reçoit en argument les vecteurs x et y où x contient les points
de la subdivision xi de l’intervalle [0, 1] et y est l’image de x par la fonction f .
Méthode de Simpson
Le script simp reçoit en argument une fonction f deux réels a et b et un entier n et renvoi la
Rb
valeur de l’intégrale a f (x)dx par la méthode de Simpson
function s=simp ( f , a , b , n ) ;
h=(b−a ) / n ;
s 1 =0; s 2 =0;
f o r i = 1 : 2 : n−1;
x ( i )=a+i ∗h ;
s 1=s 1+f ( x ( i ) ) ;
end
f o r i = 2 : 2 : n−2;
x ( i )=a+i ∗h ;
s 2=s 2+f ( x ( i ) ) ;
end
s =(h / 3 ) ∗ ( f ( a)+ f ( b)+2∗ s 2 +4∗ s 1 ) ;
3.3. APPLICATIONS AVEC MATLAB 55
R1 1
calculons la valeur Is de l’intégrale I = 0
dx par la méthode de Simpson en prenant 10
1+x
sous-intervalles de l’intervalle [0, 1]. On a le script
>> f=@( x ) 1 . / ( 1 + x ) ;
>> n=10;%on a 10 sous−i n t e r v a l l e s de l a s u b d i v i s i o n
>> x=linspace ( 0 , 1 , n ) ;
>> IS=simp ( f , 0 , 1 , n )
IS =
0.6932
La valeur exacte est I = ln 2 = 0.6931. On observe que la méthode de Simpson est plus précise
que celle des trapèzes car elle est d’ordre 3 alors que celle des trapèzes est d’ordre 1.
ans =
0.6931
on voit que la valeur retournée est plus précise que celle obtenue par la méthode de Simpson
classique.
Il existe d’autres commandes Matlab qui permettent d’évaluer une intégrale définie, par exemple
la commande quadl(f,a,b) utilise l’algorithme de Gauss-Lobatto-Legendre pour évaluer l’inté-
Rb
grale a f (x)dx. En général la commande quadl est plus précise que la commande quad lorsque
la fonction f à une importante variation d’allure.
Exercices
1. (Calcul de la vitesse avec un GPS)
Le tableau suivant contient le temps t (en seconde) et la distance x (en métres) enregistrés
par un coureur à l’aide de son GPS :
t(seconde) 1 2 3 4 5 6 7 8 9 10
x(métres) 1 2.2 3 4.1 5 6 7.1 7.9 8.9 10.2
— En utilisant les formules à deux points calculer la vitesse du coureur à l’instant t = 5.
— Même question en utilisant cette fois-ci les formules à trois points.
2. On veut approcher f 0 (xi ) en utilisant les formules de dérivation approchée suivantes :
−11f (xi ) + 18f (xi+1 ) − 9f (xi+2 ) + 2f (xi+3 )
(a) f 0 (xi ) '
6h
56 CHAPITRE 3. DÉRIVATION ET INTÉGRATION NUMÉRIQUES
→
−v = ṙ→
−
er + rθ̇→
−
eθ , →a = r̈ − rθ̇2 →
− er + rθ̈ + 2ṙθ̇ →
− −
eθ ,
R +∞ 2 Rn 2 Rn 2
7. Soit I = 0 e−t dt et In = 0 e−t dt, n ≥ 1. On a alors In = In−1 + n−1 e−t dt. Une
valeur approchée de I2 est calculée dans l’exercice 5. Considérons la formule d’intégration :
Z 1
1 2
f (x)dx = αf (0) + βf + γf + δf (1) . (3.27)
0 3 3
— Trouver α, β, γ, δ telle que la formule (3.30) soit exacte pour les polynômes de degré le
plus élevé possible. Donner la formule (3.30) sur un intervalle quelconque [a, b].
R3 2 R4 2
— Calculer 2 e−t dt et 3 e−t dt par la formule précédente. En déduire I3 et I4 .
R x1 −t2
— Posons f (x) = 0 e dt, x > 0. On a alors f n1 = In et lim f n1 = f (0) = I.
n→+∞
Calculer le polynôme d’interpolation L de f aux noeuds suivants :
1 1 1 1 1 1
,f , ,f , ,f ,
2 2 3 3 4 4
par la formule trouvée précédemment. Comparer le résultat obtenu avec la valeur exacte ?
Est ce qu’on aurait obtenu le même résultat avec la méthode des trapèzes ? Justifiez votre
réponse.
9. (Méthode de Gauss-Legendre)
R1
On veut approcher l’intégrale −1 f (x)dx par une formule de quadrature à deux points du
type :
Z 1
f (x)dx ' w1 f (t1 ) + w2 f (t2 ),
−1
où t1 6= t2 , t1,2 6= 0 et w1,2 6= 0.
— Quelle est l’ordre de cette méthode ? Calculer dans ce cas les poids w1 et w2 ainsi que
les noeuds t1 et t2 .
— La méthode précédente peut être généralisée au cas à n points appelé formule de
Gauss-Legendre :
Z 1 n
X
f (x)dx ' wi f (ti ),
−1 i=1
58 CHAPITRE 3. DÉRIVATION ET INTÉGRATION NUMÉRIQUES
4.1 Introduction
Un problème que l’on rencontre très souvent en mathématique consiste en la recherche des
zéros d’une fonction f c’est à dire des racines de l’équation
f (x) = 0. (4.1)
Lorsque f est par exemple un polynôme de degré 2 on sait résoudre une telle équation par la
méthode du discriminant mais il n’existe pas de formule générale qui nous donne les racines de
l’équation (4.1). Il faut donc recourir aux méthodes numériques.
Pour approcher la racine de équation (4.1) l’idée est de construire à l’aide d’une méthode itérative
une suite qui, sous certaines conditions, converge vers la racine α de l’équation (4.1).
Dans ce qui suit nous présentons plusieurs techniques de résolution chacune ayant ses avantages
et ses inconvénients.
y f
f (a) > 0
b
| • |
f (b) < 0 a α x
59
60 CHAPITRE 4. RÉSOLUTION DES ÉQUATIONS NON LINÉAIRES
Posons f (x) = 4x3 − 2x2 − 2x + 1. f est un polynôme c’est donc une fonction continue sur
[−1, 1]. De plus f (1)f (−1) = −3 < 0. D’après le Théorème 4.1 l’équation (4.2) possède
au moins une racine dans l’intervalle (−1, 1). Calculons f 0 . On a
y f
o
| | | • | |
a x0 x1 α x2 b x
L’inégalité précédente entraîne que xk → α lorsque k → +∞. La suite (xk ) ainsi construite
converge donc vers la racine α. Notons par ek = |xk − α| l’erreur commise lorsque l’on identifie
la racine α au terme xk de la suite. On a alors d’après (4.3)
b−a
ek ≤ . (4.4)
2k
b−a
Soit > 0 un ordre de précision. Pour avoir |ek | ≤ il suffit d’avoir d’après (4.4) 2k
≤ , d’ou
ln b−a
k≥ . (4.5)
ln(2)
x2 − 2 = 0.
| • |
o a α b x
Figure 4.3 – f possède une unique racine mais ne change pas de signe dans [a, b]
y
y=x
α •
α gx
o
On peut alors montrer que si la suite (xk ) est convergente, alors elle converge vers le point fixe
de g.
Exemple 4.3 Appliquons l’algorithme précédent pour trouver les points fixe de la fonction
√
g(x) = 2x + 3,
a partir de x0 = 4. On a alors
g(xk )
3.316
3.103
3.034
3.011
..
.
3.000
l’algorithme
√ semble converger vers x = 3. Cherchons les points fixe de g. On a g(x) = x
d’ou 2x + 3 = x ce qui amène à résoudre l’équation du second degré
x2 − 2x − 3 = 0,
dont les racines sont x1 = 3 et x2 = −1. g possède donc deux points fixe x1 = 3 et
x2 = −1.
Preuve. Montrons que la suite (xk ) définie par (4.6) est convergente. On a d’après le Théo-
rème des accroissements finis
Interprétation Géométrique
y
g •y=x
y
y=x x1 •
•
x1 • g
•
α • α •
•
x0 α x2x1 x α x0 x1 x2 x
o o
Figure 4.5 – Méthode du point fixe : A gauche le cas 0 < K < 1 et à droite le cas K > 1
Le point fixe d’une fonction g est l’intersection de la droite y = x avec le graphe de g. Comme
le montre la figure 4.5 a partir d’une valeur initiale x0 on se rend sur la courbe y = g(x) au point
(x0 , g(x0 )) et de là sur la droite y = x au point (g(x0 ), g(x0 )) qui est en fait (x1 , x1 ) puisque
x1 = g(x0 ). On recommence le même processus à partir de x1 pour se rendre au point (x1 , g(x1 ))
et de là sur la droite y = x jusqu’au point (g(x1 ), g(x1 )) = (x2 , x2 )).
Le graphe à gauche correspond au cas 0 < K < 1 ou on voit bien que la suite x0 , x1 , x2 ,...
s’approche du point fixe α alors que celui de droite correspond au cas K > 1 on remarque que
la suite x0 , x1 , x2 ,... s’éloigne de plus en plus de α.
Exemple 4.4 Calculons la racine de l’équation suivante par la méthode du point fixe
e−x − x = 0, (4.11)
x = e−x ,
et posons g(x) = e−x . La racine de l’équation (4.11) est alors un point fixe de g. Montrons
que g satisfait les conditions (i) et (ii) du Théorème du point fixe. On a g 0 (x) = −e−x < 0
pour tout x ∈ [0, 1] et g(0) = 1, g(1) = e−1 ' 0.36 d’ou le tableau de variations de g
x 0 0.1 1
0 −
g
g 1
0.9
0.36
Tableau de variations de g
on a alors à partir du tableau de variations g : [0, 1] −→ [0.36, 1] ⊂ [0, 1], la condition (i)
est donc satisfaite. D’autre part K = max |g 0 (x)| = max e−x = 1. La condition (ii) n’est
x∈[0,1] x∈[0,1]
pas satisfaite. Puisque le maximum de g 0 est atteint en x = 0 remplaçons alors l’intervalle
[0, 1] par [0.1, 1] de sorte que K = max e−x = e−0.1 = 0.9 < 1. Il reste à montrer que
x∈[0,1]
la condition (i) reste satisfaite pour le nouvel intervalle [0.1, 1]. Le tableau de variations
précédent montre que g : [0.1, 1] −→ [0.36, 0.9] ⊂ [0.1, 1]. Les deux conditions (i) et (ii) du
66 CHAPITRE 4. RÉSOLUTION DES ÉQUATIONS NON LINÉAIRES
Théorème 4.2 sont alors satisfaites. D’après ce même théorème g admet un unique point
fixe α dans [0.1, 1]. Calculons ce point fixe par l’algorithme (4.6) en prenant x0 = 1 et
= 10−2 . Pour cela on calcule d’abord le nombres d’itérations à partir de (4.12)
−2
ln 100.9
k≥ = 42.7
ln(0.9)
on prend alors k = 43. D’ou l’algorithme du point fixe
x0 = 1,
(4.12)
xn+1 = e−xn , n ≥ 0
Enfin on calcule les valeurs de la suite xn à partir de (4.12), on obtient alors le tableau
des valeurs suivant
n xn
0 1
1 0.367
2 0.692
2 0.505
3 0.606
.. ..
. .
43 0.567
la racine de l’équation (4.11) est alors α ' 0.56 à 10−2 près.
Remarque 4.3 La méthode du point fixe est d’autant plus rapide que K est petit. En effet
dans la relation (4.10) lorsque K s’approche de 0, | ln(K)| tend vers +∞ et donc le nombre
d’itérations k tend vers 0.
On dira qu’une méthode numérique converge linéairement si elle est d’ordre 1. On dira
qu’elle a une convergence quadratique si cette méthode est d’ordre 2.
Le résultat suivant nous donne l’ordre de convergence de la méthode du point fixe.
Proposition 4.1 (i) Soit g une fonction de classe C 1 qui satisfait les conditions (i)-(ii) de la
méthode du point fixe et α un point fixe de g. Alors
xn+1 − α
lim = g 0 (α).
n→∞ (xn − α)
f
x0 x1 x2
•• • •
o α x
Preuve. (i) La suite (xn ) est définie par xn+1 = g(xn ), n ≥ 0. Comme g satisfait les
conditions du point fixe la suite (xn ) converge vers l’unique point fixe α de g : g(α) = α.
D’après le Théorème des accroissements finis il existe cn situé entres xn et α tel que
d’ou
xn+1 − α
lim = lim g 0 (cn ) = g 0 (α) 6= 0,
n→∞ (xn − α) n−→∞
(xn − α)2 00
xn+1 = g(xn ) = g(α) + (xn − α)g 0 (α) + g (cn ),
2
où cn est situé entres xn et α. Comme g(α) = α et g 0 (α) = 0 on obtient
(xn − α)2 00
xn+1 − α = g (cn ),
2
d’ou
(xn+1 − α) 1
lim 2
= g 00 (α) 6= 0.
n→∞ (xn − α) 2
La méthode du point fixe est dans ce cas quadratique.
Cette droite coupe l’axe des x en un point x1 donné par y = f 0 (x0 )(x1 − x0 ) + f (x0 ) = 0, d’ou
f (x0 )
x1 = x0 − .
f 0 (x0 )
qui coupe l’axe ox au point x2 donné par y = f 0 (x1 )(x2 − x1 ) + f (x1 ) = 0, d’ou
f (x1 )
x2 = x1 − .
f 0 (x1 )
Remarque 4.4 La convergence de la suite (xn ) vers la racine de l’équation f (x) = 0 dépend
du choix de x0 . Si x0 n’est pas bien choisi alors la méthode peut ne pas converger.
Le théorème suivant nous donne des conditions suffisantes pour la convergence de la méthode de
Newton.
Théorème 4.3 Soit f une fonction de classe C 2 sur [a, b]. Supposons que :
(i) f (a)f (b) < 0
(ii) f 0 (x) 6= 0, ∀x ∈ [a, b]
(iii) f 00 (x) 6= 0, ∀x ∈ [a, b]
(iv) f (x0 )f 00 (x0 ) > 0
alors la suite (xn ) définie par l’algorithme de Newton (4.13) converge vers l’unique racine
α ∈ [a, b] de l’équation f (x) = 0.
Preuve. Comme f est continue sur [a, b] et f (a)f (b) < 0 alors f possède une racine α dans
[a, b]. De plus puisque f 0 (x) 6= 0 ∀x ∈ [a, b] alors α est unique dans [a, b].
On veut montrer que la suite
x0
f (xn )
xn+1 = xn − 0 , n≥0
f (xn )
f (x)
g(x) = x − , x ∈ (a, b).
f 0 (x)
4.5. MÉTHODE DE NEWTON 69
n xn |xn+1 − xn |
0 0 —
1 0.5000 0.5000
2 0.5663 0.0663
3 0.5671 0.008 < 0.01
Valeurs de la suite (xn ) par la méthode de Newton
On remarque que la convergence est plus rapide que celle de la méthode du point fixe où
le nombres d’itérations était n = 43 alors qu’ici n = 3. On remarque également que le
nombres de chiffres significatifs double à chaque itération. Ce phénomène est caractéris-
tique de la méthode de Newton.
Pour finir ce chapitre donnons un résultat sur l’ordre de convergence de la méthode de Newton.
Proposition 4.3 Soit f une fonction de classe C 2 sur [a, b] et supposons que la suite (xn )
définie par (4.13) converge vers l’unique racine α ∈ (a, b) de l’équation f (x) = 0 et que
f 00 (α) 6= 0. Alors
(1) Si f 0 (α) 6= 0 on a
xn+1 − α 1 f 00 (α)
lim = .
n→+∞ (xn − α)2 2 f 0 (α)
Dans ce cas la méthode de Newton est d’ordre 2.
(2) Si f 0 (α) = 0 alors
xn+1 − α
lim = 1.
n→+∞ xn − α
(α − xn )2 00
0 = f (α) = f (xn ) + (α − xn )f 0 (xn ) + f (cn ), (4.19)
2
où cn est situé entres xn et α. On a partir de (4.13)
(xn − α)2 00
(xn+1 − α)f 0 (xn ) = f (cn ),
2
soit
xn+1 − α 1 f 00 (cn ) 1 f 00 (α)
= 0
→ 6= 0,
(xn − α) 2 2 f (xn ) 2 f 0 (α)
lorsque n → +∞. La méthode de Newton a donc une converge quadratique.
(ii) Supposons maintenant que f 0 (α) = 0 c’est à dire que α est une racine double. Un
développement limité à l’ordre 1 de f 0 donne
f 00 (hn )
xn+1 − α = xn − α − (xn − α),
f 00 (dn )
xn+1 − α 1 f 00 (α) 1
lim =1− = .
n→+∞ xn − α 2 f 00 (α) 2
f (x)
F (x) = x −
f 0 (x)
qui n’est autre que l’unique racine α de l’équation f (x) = 0. Si α est une racine de
multiplicité m ≥ 1 alors on peut montrer (voir exercice 9) que
1
F 0 (α) = 1 − .
m
Si par exemple α est une racine simple (m = 1) alors
F 0 (α) = 0,
ans =
0.5885
la deuxième racine est située dans l’intervalle [2, 4] et s’obtient par
>> fzero ( ’ exp(−x)− s i n ( x ) ’ , [ 2 4 ] )
ans =
3.0964
alpha =
2.0947
N =
10
La méthode de dichotomie converge après 10 itérations.
xx =
0.5000
N =
26
La méthode de Newton converge en 26 itérations.
0.5571
0.5375
0.5225
0.5126
0.5067
0.5035
0.5018
..
.
0.4847
−α
on remarque que le rapport x(xn+1
n −α)
est presque constant, la méthode de Newton converge donc
linéairement. D’après la Proposition 4.3 la racine α = 0.5 est une racine double.
76 CHAPITRE 4. RÉSOLUTION DES ÉQUATIONS NON LINÉAIRES
Accélération de la convergence
On a vu au TP précédent que lorsque la racine de l’équation est double alors la méthode de
Newton n’est plus quadratique mais converge linéairement. On va voir dans ce TP qu’on peut
toujours accélérer la converge de la méthode de Newton en utilisant un algorithme modifié.
Pour cela considérons l’algorithme de Newton adaptatif suivant
x0 ,
f (xn )
xn+1 = xn − m 0 , n ≥ 0.
f (xn )
où m est la multiplicité de la racine α. On peut montrer (voir exercice 8) que si les conditions
de la méthode de Newton sont vérifiées alors la suite (xn ) à une convergence quadratique vers
la racine α de l’équation f (x) = 0. Appliquons cet algorithme à l’exemple du TP précédent.
Considérons le script newt_adap qui implémente l’algorithme de Newton adaptatif
function [ xx ,N]=newt_adap ( f , f d e r , x0 , e p s i l o n ,m)
%l ’ a l g o r i t h m e n é c é s s i t e de c o n n a i t r e l a m u l t i p l i c i t é m de l a r a c i n e
N=0;
%i n i t i a l i s a t i o n de x e t xx
x=x0 ; xx=x−m∗ ( f ( x ) / f d e r ( x ) ) ;
while abs ( xx−x)> e p s i l o n ;
N=N+1;
x=xx ;
xx=x−m∗ ( f ( x ) / f d e r ( x ) ) ;
end
On tape
>> [ xx ,N]=newt_adap ( f , f d e r , 0 , 1 e −8 ,2)
xx =
0.5000
N =
4
On remarque que la méthode de Newton adaptative converge en 4 itérations seulement alors que
la méthode de Newton converge en 26 itérations.
Exercices
1. Montrer graphiquement que l’équation
ln(x) = e−x
2. Soit la fonction
f (x) = e−2x − 3x2
— Montrer graphiquement que l’équation f (x) = 0 admet une racine unique dans un
intervalle du type [n, n + 1] que l’on déterminera.
— Calculer cette racine par la méthode de Newton en prenant x0 = 1 avec une erreur
≤ 0.5 × 10−3 .
3. En utilisant la méthode de Newton calculer la racine cubique de 10 avec 2 chiffres signi-
ficatifs après la virgule.
4. Dans le but de construire un polygone régulier de 18 cotés et de rayon 1, Al Biruni
(973-1050) fut amené à résoudre l’équation
f (x) = x3 − 3x + 1 = 0 (4.23)
e−x = x2 ,
x = g(x),
9. Supposons que la méthode de Newton converge vers l’unique racine α de l’équation f (x) =
0 et soit F la fonction d’itération de la méthode de Newton définie par
f (x)
F (x) = x −
f 0 (x)
Systèmes Linéaires
Les systèmes d’équations linéaires joue un rôle important en ingénierie. L’une des principales
applications des ces systèmes est la discrétisation numérique des équations aux dérivées partielles
qui ramène le problème à la résolution de systèmes d’équations linéaires de grande taille.
Dans ce chapitre nous allons aborder les principales méthodes de résolution des systèmes linéaires.
Ces méthodes sont classées en deux grandes catégories : Les méthodes directes et les méthodes
itératives.
Ax = b, (5.2)
où
a11 a12 ··· a1n b1
a21 a22 ··· a2n b2
A= , b= .
.. .. .. ..
. . . .
an1 a2n ··· ann bn
Le problème (5.1) est un système de n équations linéaires à n inconnues.
79
80 CHAPITRE 5. SYSTÈMES LINÉAIRES
a11 0 ··· 0 a11 a12 ··· a1n
a21 a22 ··· 0 0 a22 ··· a2n
,
.. .. .. .. .. ..
. . . . . .
an1 a2n ··· ann 0 ··· 0 ann
Figure 5.1 – A gauche une matrice triangulaire inférieure et à droite une matrice triangulaire
supérieure
d’ou on tire x2
b2 − a21 x1
x2 = .
a22
Par récurrence on obtient
i−1
P
bi −
k=1
xi = , i ≥ 2.
aii
On a alors le théorème
Théorème 5.1 (1) Soit A une matrice triangulaire inférieure telle que aii 6= 0, ∀i = 1, · · · , n
et b ∈ Rn . Alors la solution x du système linéaire Ax = b est donnée par l’algorithme dit
de descente
b1
x1 = ,
a11
i−1
P
bi − aik xk
k=1
xi = , i = 2, · · · , n.
aii
(2) De même si A est triangulaire supérieure alors la solution x est donnée par l’algorithme
dit de remonté bn
xn = ,
ann
n
P
bi − aik xk
k=i+1
xi = , i = n − 1, · · · , 1.
aii
Remarque 5.2 L’algorithme de descente (ou de remontée) nécessite pour chaque compo-
n n
1+2 (i−1) = n2
P P
sante i, 1 division, (i−1) somme et (i−1) multiplications soit en tous
i=1 i=1
opérations.
Soit A une matrice carré et supposons que le premier élément diagonal a11 est non nul. Posons
au départ
A(1) = A, et b(1) = b,
et considérons les multiplicateurs
(1)
(1) ai1
λi = (1)
, i = 2, · · · , n.
a11
Le système (A(3) , b(3) ) est donc équivalent à (A, b). Par récurrence à l’étape k, 1 ≤ k ≤ n − 1 on
obtient le système (A(k) , b(k) ) qui a la forme suivante
(1) (1) (1) (1) (1)
a11 a12 ··· a1k ··· a1n b1
(2) (2) (2) (2)
0 a22 ··· a2k ··· a2n b2
.. .. .. .. .. ..
. . . . ··· . .
(k) (k) (k)
0 ··· 0 akk ··· akn bk
.. .. .. .. ..
.. ..
. . . . . . .
(k) (k) (k)
0 ··· 0 ank ··· ann bn
(i) (k)
où on a supposé que aii 6= 0 ∀i = 1, k − 1. Les coefficients akk =
6 0 sont appelés pivots et doivent
être non nuls. L’algorithme de la méthode de Gauss est alors le suivant
(k+1)
aik = 0,
(k)
a(k+1) = a(k) − aik a(k) , i, j ≥ k + 1,
1≤k ≤n−1
ij ij (k) kj
akk (5.3)
(k)
a
(k+1) (k) ik (k)
bi = bi − (k) bk , 1 ≤ k ≤ n − 1
akk
0 0 −2 −4 −12
(2)
Le pivot du système augmenté (A(2) , b(2) ) est a22 = 0 qui est nul. On interverti alors
la ligne contenant ce pivot, c’est à dire la deuxième ligne avec une ligne en dessous de
sorte que le nouveau pivot soit non nul. Dans notre cas il y a un seul choix possible celui
d’intervertir la deuxième ligne avec la troisième on obtient alors le système augmenté
1 −1 2 −1 −8
0 −2 1 −1 −6
(A(2) , b(2) ) =
0 0
1 1 4
0 0 −2 −4 −12
Remarquons que le nouveau système augmenté est toujours désigné par (A(2) , b(2) ). Le
(2)
nouveau pivot est dans ce cas a22 = −2 6= 0. Remarquons que les deux éléments situés en
(2) (2) (2)
dessous du pivot a22 sont a32 et a42 et sont nuls. A la dernière étape k = 3 le système
augmenté est
1 −1 2 −1 −8
0 −2 1 −1 −6
(A(3) , b(3) ) =
0 0 1 1 4 ×(−2)
0 0 −2 −4 −12
(3) (3)
Le nouveau pivot est alors a33 = 1. Pour annuler l’élément a43 = −2 on multiplie la
ligne du pivot c’est à dire la troisième ligne par −2 et retrancher la quatrième ligne ce qui
donne le système
1 −1 2 −1 −8
0 −2 1 −1 −6
(A(3) , b(3) ) =
0 0 1 1
4
0 0 0 2 4
5.1. MÉTHODES DIRECTES 85
Méthode de Jordan
La méthode de Jordan consiste à rajouter au système augmenté de la méthode de Gauss (A, b)
la matrice identité I puis d’appliquer la méthode des pivots de Gauss au système augmenté ainsi
obtenu (A, b, I) pour diagonaliser la matrice A. A la fin du processus et après normalisation on
obtient le système augmenté (I, x, A−1 ). L’avantage de la méthode de Jordan c’est qu’en plus de
la solution x elle nous donne la matrice inverse A−1 de A.
Exemple 5.2 Résolvons le système Ax = b par la méthode de Jordan où
2 −1 0 −2
A = 4 −1 2 , b = 14 .
−6 2 0 12
(3) (3)
le dernier pivot est a33 = 2 6= 0. Les deux derniers éléments à annuler sont a23 = −2 et
(3) (3)
a13 = −2. Pour annuler l’élément a23 = −2 on remplace la deuxième ligne sur laquelle
(3)
est situé l’élément a23 par la ligne obtenue en multipliant la ligne du pivot par −1 et en
retranchant la deuxième ligne, on obtient alors en faisant de même avec le dernier élément
(3)
a13
2 0 0 −8 −2 0 −1
0 1 0 −6 −3 0 −1
0 0 2 24 1 1 1
− 21
1 0 0 −4 −1 0
0 1 0 −6 −3 0 −1
1 1 1
0 0 1 12 2 2 2
− 21
−1 0
A−1 = −3 0 −1 .
1 1 1
2 2 2
5.1.4 Décomposition LU
Soit A une matrice carré d’ordre n. On dit que A admet une décomposition LU s’il existe
une matrice triangulaire inférieure L et une matrice triangulaire supérieure U telle que
LU = A (5.5)
Le théorème suivant nous donne une condition suffisante pour que A admette une décomposition
LU .
Théorème 5.3 Une matrice carré A d’ordre n admet une décomposition LU si tous ses
mineurs principaux Ai , i = 1, n − 1 sont non nuls.
Les coefficients aij de A étant connus on cherche à déterminer les coefficients lij et uij des
matrices L et U respectivement. L’équation matricielle (5.6) est un système de n2 équations à
n2 + n inconnues. Il y a donc n inconnues en plus. Il faut donc fixer ces n inconnues pour obtenir
un système de n2 équations à n2 inconnues. Il y a deux méthodes principales :
5.1. MÉTHODES DIRECTES 87
Méthode de Crout
Dans cette méthode on pose uii = 1, i = 1, · · · , n. Le système (5.6) devient
l11 0 ··· 0 1 ··· ··· u1n
a11 ··· a1n .. .. .. .. ..
.. .. .. = . . . 0 . .
. . .
.. ..
.. .. ..
an1 ··· ann
. . 0 . . .
ln1 ··· ··· lnn 0 ··· 0 1
li1 = ai1 , ∀i = 1, · · · , n.
— On multiplie la première ligne de L par les colonnes de U : l11 u1j = a1j d’ou on tire
a1j
u1j = , j = 2, · · · , n.
a11
— On multiplie les lignes de L par la deuxième colonne de U on obtient : li1 u12 + li2 = ai2 ,
soit
li2 = ai2 − li1 u12 , i = 2, · · · , n.
— On multiplie la deuxième ligne de L par les colonnes de U : l21 u1j + l22 u2j = a2j on a
dans ce cas
a2j − l21 u1j
u2j = , j = 3, · · · , n.
l22
A la fin de ce processus on obtient l’algorithme dit de Crout
a1i
uii = 1, li1 = ai1 , u1i = , i = 1, · · · , n
l11
i−1
lji = aji − P ljk uki ,
j ≥ 2, i≥j
k=1 (5.7)
i−1
P
aij −
lik ukj
k=1
uij = , i ≥ 2, j ≥i+1
lii
Méthode de Doolittle
Dans cette méthode on pose : lii = 1, i = 1, · · · , n. Le système (5.6) devient
1 0 ··· 0 u11 ··· ··· u1n
a11 ··· a1n .. .. .. .. ..
.. .. .. = . . 0
. . .
. . .
.. .. . .. ..
0 ..
an1 ··· ann
. . . .
ln1 ··· ··· 1 0 ··· 0 unn
u1i = a1i , i = 1, · · · , n
88 CHAPITRE 5. SYSTÈMES LINÉAIRES
— On multiplie les lignes de L avec la première colonne de U on obtient li1 u11 = ai1 d’ou
ai1
li1 = , i = 2, · · · , n
a11
— On multiplie la deuxième ligne de L avec les colonnes de U : l21 u1j + u2j = a2j , on obtient
— On multiplie les lignes de L avec la deuxième colonne de U on a li1 u12 + li2 u22 = ai2 soit
ai2 − li1 u12
li2 =
u22
Par récurrence on obtient l’algorithme suivant dit de Doolittle
ai1
lii = 1, u1i = a1i , li1 = , i = 1, · · · , n
a11
i−1
P
uij = aij −
lik ukj , i ≥ 2, j≥i
k=1 (5.8)
j−1
P
aij − lik ukj
k=1
lij = , j ≥ 2, i≥j+1
ujj
− 21 − 12
3
1 x1 −2
0 1 − 12 x2 = 12
0 0 1 x3 3
Lorsque la matrice A est tridiagonale il existe un algorithme très efficace qui dérive de la
factorisation LU appelé algorithme de Thomas.
Soit A une matrice tridiagonale ayant la forme suivante
···
a1 c1 0 0
.. ..
f2 a2 c2 . .
A=
.. .. ..
0 . . . 0
.. ..
. . fn−1 an−1 cn−1
0 ··· 0 fn an
et supposons que A admet une décomposition sous la forme A = LU avec L une matrice trian-
gulaire inférieure et U une matrice triangulaire supérieure. Écrivons la décomposition de A par
90 CHAPITRE 5. SYSTÈMES LINÉAIRES
la méthode de Doolittle
···
a1 c1 0 0
.. .. 1 0 ··· 0 u11 ··· ··· u1n
f2 a2 c2 . . .. .. .. .. ..
. . ..
. . 0
. . .
A= 0
.. .. . 0 =
.. .. . .. ..
0 ..
. . . .
. .
.. .. f
n−1 an−1 cn−1
ln1 ··· ··· 1 0 ··· 0 unn
0 ··· 0 fn an
α1 = a1
γi = ci , 1 ≤ i ≤ n − 1
βi γi−1 + αi = ai , (5.10)
5.1. MÉTHODES DIRECTES 91
d’ou
y1 = b1
et yi + βi yi−1 = bi ce qui donne
yi = bi − βi yi−1 , 2 ≤ i ≤ n
α1 = a1
ci−1 fi
αi = ai − , 2≤i≤n
αi−1
y 1 = b1
fi (5.11)
yi = bi − yi−1 , 2≤i≤n
αi−1
yn
xn =
αn
yi − ci xi+1
xi = , i = n − 1, · · · , 1.
αi
92 CHAPITRE 5. SYSTÈMES LINÉAIRES
Remarque 5.6 L’algorithme de Thomas nécessite 8n−7 opérations pour résoudre le système
Ax = b. On verra dans la partie TP que c’est un algorithme très efficace pour la résolution
des systèmes tridiagonaux.
Exemple 5.4 Résolvons le système tridiagonal suivant par l’algorithme de Thomas
2 −1 0 0 x1 5
−1 2 −1 0 x2 −7
0 −1 2 −1 x3 = 6
0 0 −1 2 x4 −1
d’ou
xt Ax = 2x21 + 3x22 + 2x2 x3 + 2x1 x3 + 5x23 − 2x1 x2
= (x1 − x2 )2 + (x1 + x3 )2 + (x2 + x3 )2 + x22 + 3x23
≥ 0
De plus si xt Ax = 0 alors x2 = x3 = 0 d’ou x1 = 0 et donc x = 0. A est donc définie
positive.
La proposition suivante donne quelques propriétés qui nous seront utiles sur les matrices définies
positives.
Proposition 5.1 (i) Une matrice définie positive A est inversible et det A > 0.
(ii) Si A est une matrice définie positive alors toutes ses sous-matrices principales d’ordre
k ≤ n le sont aussi.
Exemple 5.6 La sous-matrice principale de la matrice définie positive A de l’exemple pré-
cédent est
2 −1
−1 3
Soit x = (x1 , x2 ) ∈ R2 on a
An = Cn .Cnt
d’ou
Cn Cnt
v
An+1 = (5.12)
vt α
Cherchons un vecteur h ∈ Rn et un complexe β tel que
t
Cn 0 Cn h
An+1 = (5.13)
nt β h β
94 CHAPITRE 5. SYSTÈMES LINÉAIRES
Cn h = v, ht h + β 2 = α. (5.14)
Cn h = v.
De plus
det An+1 = β 2 det Cn det Cnt = β 2 (det Cn )2 > 0,
on déduit donc que β 2 > 0, β est donc réel. On tire alors de la seconde relation de (5.15)
√
β = α − ht h.
Algorithme de Cholesky
Soit A une matrice symétrique et définie positive. Écrivons que
c11 0 ··· 0 c11 c21 ··· cn1
a11 · · · a1n .. .. .. .. .. ..
c21 . . 0
. . . .
A = ... .. .. =
. . . .. . .. ..
.. 0 ..
an1 · · · ann . . .
cn1 · · · · · · cnn 0 ··· 0 cnn
Pour calculer les éléments cij de la matrice C on procède comme suit :
— On multiplie les lignes de la matrice C avec la première colonne de C t et ainsi de suite
jusqu’à’ a la fin.
En effet la première ligne de C avec la première colonne de C t donne c211 = a11 d’ou
√
c11 = a11 .
Ensuite on multiplie la ligne i ≥ 2 de C avec la première colonne de C t on obtient ci1 c11 = ai1
d’ou
ai1
ci1 = √ , i ≥ 2.
a11
On multiplie la seconde ligne de C avec la seconde ligne de C t on aura c221 + c222 = a22 d’ou
q
c22 = a22 − c221 .
Ensuite on multiplie la ligne i ≥ 3 de C avec la seconde colonne de C t on obtient ci1 c21 + ci2 c22 =
ai2 d’ou
ai2 − ci1 c21
ci2 = , i ≥ 3.
c22
Par récurrence on obtient l’algorithme de Cholesky suivant
j−1
P
aij − cik cjk
k=1
, 1≤j ≤i−1
c =
ij
s cjj (5.15)
i−1
c2ik ,
P
cii = aii − i = 1, · · · , n.
k=1
5.1. MÉTHODES DIRECTES 95
2x − y + z = 2
−x + 3y + z = 3
x + y + 5z = 7
On a montré que A est symétrique et définie positive. Il existe donc une matrice triangu-
laire inférieure C telle que
A = C.C t
Calculons la matrice C. Écrivons que
2 −1 1 c11 0 0 c11 c21 c31
−1 3 1 = c21 c22 0 0 c22 c32
1 1 5 c31 c32 c33 0 0 c33
Pour résoudre le système Ax = b il suffit alors de résoudre les deux systèmes triangulaires
t
C x=y
Cy = b
Calculons d’abord y
√
2 q0 0
y1 2
−1 5
0
√ y2 = 3
2
2
q
√1 √3 3 25 y3 7
2 10
96 CHAPITRE 5. SYSTÈMES LINÉAIRES
√ q
L’algorithme de la descente nous donne y1 = 2, y2 = 4 25 , y3 = √6 .
10
Écrivons le deuxième système triangulaire Cx = y
√ −1 √1 √2
2 √ 2 2
q x 1 q
0 5 √3
x2 = 2
2 10 4 5
x3
q
2 √6
0 0 3 5 10
Norme matricielle
Définition 5.5 On appelle norme matricielle une application qui associe à chaque matrice
A un réel noté kAk qui vérifie
(i) kAk ≥ 0 et kAk = 0 si et seulement si A = 0
(ii) kαAk = |α|kAk, ∀α ∈ R
(iii) kA + Bk ≤ kAk + kBk
(iv) kA.Bk ≤ kAkkBk
5.2. MÉTHODES ITÉRATIVES 97
98 CHAPITRE 5. SYSTÈMES LINÉAIRES
Le lemme suivant nous donne une propriété importante du rayon spectral d’une matrice.
Lemme 5.2 Soit A une matrice carrée d’ordre n. Alors lim Ak x = 0 pour tout x ∈ Rn si
k−→∞
et seulement si ρ(A) < 1. De plus la convergence est d’autant plus rapide que ρ(A) est
petit.
K(A) = kAkkA−1 k.
kx − x
bk kb − bbk
≤ K(A) , (5.16)
kxk kbk
kbk
kxk ≥ , (5.18)
kAk
kx − x
bk kA−1 kkAkkb − bbk kb − bbk
≤ = K(A) .
kxk kbk kbk
Remarque 5.8 Le membre de droite de l’inégalité (5.16) désigne l’erreur relative commise
sur la solution x du système Ax = b alors que le rapport du membre droit représente
l’erreur relative commise sur le second membre b. L’inégalité (5.16) traduit le fait que
l’erreur relative sur la solution est majorée par le produit du conditionnement de la matrice
5.2. MÉTHODES ITÉRATIVES 99
A avec l’erreur relative sur le second membre b. Si donc K(A) est petit (proche de 1) alors
une erreur relative petite sur le second membre entraine une petite erreur relative sur
la solution du système. On dit dans ce cas que la matrice A est bien conditionné. Par
contre si K(A) est grand une petite erreur relative sur le second membre n’entraine pas
nécessairement une petite erreur relative sur la solution x. La matrice A est dite dans ce
cas mal conditionnée.
1 1
Exemple 5.10 Soit la matrice A = et le vecteur b = (1, 1)> . L’unique
1 1.000001
solution du système Ax = b est x = (1, 0)> . Perturbons légèrement le vecteur b en
le remplaçant par bb = (1, 1.000001). Calculons la solution perturbée x b on obtient xb =
(106 , −106 ). Calculons maintenant les erreurs relatives commises. L’erreur commise sur
kb−b
le second membre est er1 = bk2
kbk2 = k(0,0.000001)k
k(1,1)k2
2
= 7.0721 × 10−7 alors que celle
kx−b
x k2 k(10 ,−106 )k2
6
commise sur la solution est er2 = kxk2 = k(1,0)k2= 1.414 × 106 . On remarque
qu’une erreur relative infime sur le second membre a entrainé une erreur relative énorme
sur la solution.
6 6
pour cela le conditionnement de la matrice A on a d’abord
Calculons
10 −10
A−1 = d’ou K(A) = kAk2 kAk2 = 2 × 2 × 106 = 4 × 106 . On voit
−106 106
bien que la matrice A est mal conditionnée. Les matrices mal conditionnée sont donc très
sensibles aux erreurs d’arrondis.
On peut alors montrer facilement que si la suite (x(k) ) converge alors elle converge vers le point
fixe de (5.20). Le théorème suivant assure la convergence de l’algorithme (5.21).
Théorème 5.5 La suite (x(k) ) définie par (5.21) converge vers la solution x du système (5.19)
pour tout vecteur initial x(0) ∈ Rn si et seulement si ρ(B) < 1. De plus cette convergence
est d’autant plus rapide que ρ(B) est petit.
Preuve Notons par e(k) = x(k) − x l’erreur commise sur la solution x. On veut montrer que
e(k) −→ 0 lorsque k −→ ∞. On a alors à partir de (5.20) et (5.21)
e(k+1) = x(k+1) − x
= Bx(k) + v − (Bx + v)
= B(x(k) − x)
= Be(k)
100 CHAPITRE 5. SYSTÈMES LINÉAIRES
A=D+L+U (5.23)
avec
a11 0 ··· 0 0 a12 ··· a1n
0 ··· ··· 0
.. .. .. ..
u21 0 ··· 0
0 . ··· . , L = .
0 ··· .
D= , U =
. .. .. .. .. ..
.. ··· . 0
0 ··· . an−1n
. . . 0
0 ··· 0 ann 0 ··· ··· 0 un1 ··· unn−1 0
(5.24)
Dans la décomposition précédente on remarque que D et une matrice diagonale, L est triangulaire
inférieure et U triangulaire supérieure. Le système (5.19) devient
(D + L + U )x = b, (5.25)
d’ou
Dx = −(L + U )x + b.
x = TJ x + D−1 b, (5.26)
x(0)
(5.27)
x(k+1) = TJ x(k) + D−1 b, k ≥ 0.
L’algorithme de Jacobi
Puisque TJ = −D−1 (L + U ) on a
1
0 ··· 0
a11 0 a12 · · · a1n
.. .. .. ..
0 . ··· . . 0 ··· .
TJ = −
.
.
.. .. ..
0 ..
··· . ··· . an−1n
1
0 ··· 0 ann a n1 · · · · · · 0
0 − aa11 12
··· ··· − aa1n
11
.. .. .. .. ..
. . . . .
− aai1 ain
=
ii
· · · 0 · · · − aii
,
.. .. .. .. ..
. . . . .
− aann n1
··· · · · − ann−1
ann 0
et
b1
a11
..
.
bi
D−1 b =
aii
..
.
bn
ann
(5.27) devient
(k+1) (k) b1
x1 0 − aa12 ··· ··· − aa1n x1
11 11 a11
.. .. .. .. .. .. . ..
..
.
. . . . .
.
(k+1) − ai1 ··· 0 ··· − aain
(k) bi
xi = x +
aii ii i aii
..
.. .. .. .. .. .
..
..
.
. . . .
. .
(k+1)
xn − aannn1
··· ··· − ann−1
ann 0 (k)
xn
bn
ann
d’ou
n
(k+1)
X aij (k) bi
xi =− x +
aii j aii
j=1,j6=i
ou bien !
n
(k+1) 1
P (k)
xi = aii bi − aij xj , i = 1, · · · , n, k ≥ 0. (5.28)
j=1,j6=i
Corollaire 5.1 Si A est une matrice à diagonale strictement dominante alors la méthode de
Jacobi converge pour toute donnée initiale x(0) ∈ Rn .
Preuve. D’après le Théorème 5.6 il suffit de montrer que ρ(TJ ) < 1. En utilisant la norme
kk∞ on a d’après le Lemme 5.1
ρ(TJ ) ≤ kTJ k∞ (5.29)
Calculons kTJ k∞ . On a
n
P
kTJ k∞ = max |tij |
1≤i≤n j=1
or
0, i=j
tij = aij
aii , i 6= j
d’ou
n n n
aij
= 1
X X X
|tij | =
aii |aii | |aij |
j=1 j=1 j=1
n
P
Puisque A est à diagonale strictement dominante |aii | > |aij | d’ou
j=1,j6=i
n n
X 1 X
|tij | = |aij | < 1
j=1
|aii | j=1
soit
kTJ k∞ < 1.
D’après (5.29) ρ(TJ ) < 1. La méthode de Jacobi est donc convergente.
Exemple 5.11 Considérons le système suivant :
5x1 + x2 − 2x3 = 15
3x2 + x3 = 7
3x1 − 4x2 + 8x3 = 9
d’ou
5 > 1 + | − 2| = 3
3 > 0+1=1
8 > 3 + | − 4| = 7
la matrice A est donc à diagonale strictement dominante. La méthode de Jacobi est
convergente. Calculons les deux premières itérations x(1) et x(2) en partant de x(0) =
(0, 0, 0)t . Décomposons la matrice A comme suit A = D + L + U avec
5 0 0 0 1 −2 0 0 0
D = 0 3 0 , L = 0 0 1 , U = 0 0 0
0 0 8 0 0 0 3 −4 0
5.2. MÉTHODES ITÉRATIVES 103
d’ou
− 51
0 0 0 1 −2
−1
TJ = −D (L + U ) = 0 − 13 0 0 0 1
0 0 − 81 3 −4 0
soit
− 51 2
0 5 3
7
TJ = 0 0 − 13 , D−1 b = 3
9
− 38 1
2 0 8
Calculons x(1) . On a
− 15 2
0 5 0 3 3 3
x(1) = TJ x(0) + D−1 b = 0 0 − 31 0 + 7 = 7 ' 2.3333
3 3
9 9
− 38 1
2 0 0 8 8 1.1250
De la même manière
− 15 2
0 5 3 3 3.0167
x(2) = TJ x(1) + D−1 b = 0 0 − 31 7
3
+ 7
3
' 2.7083
9 9
− 38 1
2 0 8 8 1.0833
et enfin
− 15 2
0 5 3.0167 3 3.1083
x(3) = TJ x(2) + D−1 b = 0 0 2.7083 + 7 ' 2.6944
− 31 3
9
− 38 1
2 0 1.0330 8 0.9021
La solution exacte est x = (3, 2, 1)t . On voit bien que la suite de vecteurs (x(k) ) tend à
s’approcher de la solution exacte.
x = SG x + (D + L)−1 b (5.31)
x(0) ∈ Rn ,
(5.32)
x(k+1) = SG x(k) + (D + L)−1 b, k≥0
104 CHAPITRE 5. SYSTÈMES LINÉAIRES
Il nous reste à trouver l’algorithme qui donne les composantes de x(k+1) en fonction de celles de
x(k) . Écrivons (5.32) sous la forme suivante
(D + L)x(k+1) = b − U x(k) ,
d’ou
(k+1) (k)
x1 x1
a11 0 ··· ··· 0 b1 0 a12 ··· ··· a1n
.. .. .. .. . .
. . .. .. ..
. . . .
(k+1) . . . .
.
(k)
ai1 ··· aii ··· 0 x = bi −
0 ··· 0 aii+1 ··· ain xi
i .
. .. .. .. . .. ..
.
.. . .. . ..
. . . .
.
an1 ··· ··· ··· ann (k+1)
xn bn 0 ··· ··· ··· 0 (k)
xn
ce qui donne
i n
(k+1) (k)
X X
aij xj = bi − aij xj
j=1 j=i+1
(k+1)
d’ou l’on tire xi
!
i−1 n
(k+1) 1
P (k+1) P (k)
xi = aii bi − aij xj − aij xj , i = 1, · · · , n, k≥0 (5.33)
j=1 j=i+1
Remarque 5.11 D’après le Théorème 5.5 plus le rayon spectral de la matrice d’itération est
petit plus la convergence de la méthode itérative correspondante est rapide. Le Théorème
5.8 montre que si les méthodes de Jacobi et Gauss-Seidel sont convergentes et puisque
dans ce cas ρ(TJ ) < 1, ρ(SG ) < 1 alors
on en déduit donc que la méthode de Gauss-Seidel converge plus rapidement que celle de
Jacobi.
Exemple 5.12 Calculons la solution du système Ax = b par les méthodes de Jacobi et
Gauss-Seidel où
4 3 0 24
A = 3 4 −1 , b = 30 ,
0 −1 4 −24
en partant de x0 = (1, 1, 1)t . Remarquons d’abord que A n’est pas à diagonale strictement
dominante on ne peut donc pas appliquer les Corollaires 5.1 et 5.2. Par contre A est une
matrice tridiagonale et symétrique avec des éléments diagonaux non nuls. Montrons que
A est définie positive. Soit x = (x1 , x2 , x3 )t ∈ R3 , on a
2
3 2 3
xt Ax = 2x1 + x2 + (x2 − x3 ) + x22 + 3x23 ≥ 0
2 4
de plus si xt Ax = 0 alors
x2 = 0,
x3 = 0,
2x1 + 23 x2 = 0,
d’ou x1 = 0 et donc x = 0. La matrice A est donc définie positive. D’après le Corollaire
5.3 la méthode de Gauss-Seidel converge. Le Théorème 5.8 entraine alors que la méthode
de Jacobi converge également.
Calculons les deux premières itérations par la méthode de Jacobi. On a d’abord
4 0 0 0 0 0 0 3 0
D = 0 4 0 , L = 3 0 0 , U = 0 0 −1
0 0 4 0 −1 0 0 0 0
d’ou
3 1
0 4 4 6
TJ = −D−1 (L + U ) = 3
4 0 − 41 , D−1 b = 15
2
.
0 − 14 0 −6
(0) t
Puisque x = (1, 1, 1) , on obtient
5.2500
x(1) = TJ x(0) + D−1 b = 7.0000
−5.7500
0.7500
x(2) = TJ x(1) + D−1 b = 2.1250
−4.2500
sachant que la solution exacte est x = (3, 4, −5)t l’erreur commise est er1 = kx(2) − xk2 =
3.03.
106 CHAPITRE 5. SYSTÈMES LINÉAIRES
Calculons maintenant les deux premières itérations par la méthode de Gauss-Seidel. Pour
cela calculons d’abord (D + L)−1 par la méthode de Jordan (voir §5.1.3) qui consiste à
diagonaliser la matrice augmentée (D + L, I) formée de D + L et de la matrice identité I
en annulant d’abord l’élément a21 = 3
× −3
4 0 0 1 0 0 4 0 0 1 0 0
4 × 14
3 4 0 0 1 0 ∼ 0 4 0 − 43 1 0
0 −1 4 0 0 1 0 −1 4 0 0 1
Le dernier élément à annuler est a32 = −1. En multipliant la ligne du pivot par 41 et en
lui rajoutant la dernière ligne on obtient après normalisation (en faisant apparaitre des 1
dans la diagonale de la première matrice)
1
4 0 0 1 0 0 1 0 0 4 0 0
0 4 0 − 43 1 0 ∼ 0 1 0 − 16 3 1
4 0
3 1
0 0 4 − 16 4 1 0 0 1 − 64 16 14
3 1
1
4 0 0
d’ou (D + L)−1 = 3
− 16 1
4 0 et donc
3 1 1
− 64 16 4
− 43
0 0 6
SG = −(D + L)−1 U = 0 9
16
1
4
, (D + L)−1 b = 30 .
0 9
64
1
16 − 21
4
l’erreur commise est donc er2 = kx(2) − xk2 = 0.18. On voit bien que la méthode de
Gauss-Seidel converge plus rapidement que celle de Jacobi.
x(k+1) = Bx(k) + v
où B est la matrice d’itération et supposons que cette méthode itérative est convergente c’est à
dire que x(k) −→ x lorsque k −→ ∞ où x est la solution exacte de (5.19). Posons r(k) = b−Ax(k) ,
k ≥ 1. r(k) est appelé le résidu à l’ordre k. L’erreur relative Ek commise lorsque l’on identifie le
terme x(k) à la solution exacte x est
ke(k) k kx(k) − xk
Ek = = . (5.34)
kxk kxk
5.3. APPLICATION AVEC MATLAB 107
kb − Ax(k) k
Ek ≤ K(A) , (5.35)
kbk
où K(A) est le conditionnement de la matrice A. La relation (5.35) devient alors en introduisant
le résidu r(k)
kr(k) k
Ek ≤ K(A) . (5.36)
kbk
La relation (5.36) nous donne un critère d’arrêt de la méthode itérative. En effet puisqu’on ne
connait pas le conditionnement K(A) de A on contrôle l’erreur relative Ek en contrôlant le terme
kr(k) k
. Soit alors > 0 un ordre de précision on impose donc
kbk
kr(k) k
< (5.37)
kbk
ce qui donne compte tenu de (5.36)
Ek ≤ K(A).
Remarque 5.12 La relation précédente montre que si K(A) est petit (proche de 1) alors
l’erreur relative commise est de l’ordre de . Par contre si K(A) est grand le critère
d’arrêt (5.37) n’assure pas une erreur relative de l’ordre de . Le critère (5.37) appelé
critère d’arrêt sur le résidu n’est donc pertinent que si la matrice A est bien conditionnée.
Cette remarque montre que le test d’arrêt utilisé dans une méthode itérative dépend de
la structure de la matrice A du système. D’autres critères d’arrêt peuvent être utilisés par
exemple le critère d’arrêt sur l’incrément
kx(k+1) − x(k) k
≤ (5.38)
kbk
est une alternative à celui du résidu. On peut montrer que ce critère d’arrêt n’est efficace
que si la matrice d’itération B de la méthode itérative est symétrique définie positive et
ayant un rayon spectral proche de 0.
x =
1.0000
−1.0000
2.0000
108 CHAPITRE 5. SYSTÈMES LINÉAIRES
C =
l =
1.0000 0 0
0.2500 1.0000 0
0.7500 0.3333 1.0000
u =
t=a ( r , j ) ;
a ( r , j )=a ( l , j ) ;
a ( l , j )= t ;
end
end
f o r i=r +1:n ;
t t t=a ( i , r ) ;
a ( i , r )=0;
b ( i )=b ( i )− t t t ∗b ( r ) / p i v o t ;
f o r j=r +1:n ;
a ( i , j )=a ( i , j )− t t t ∗a ( r , j ) / p i v o t ;
end
end
end
x ( n)=b ( n ) / a ( n , n ) ;
f o r i=n −1: −1:1;
s =0;
f o r k=i +1:n ;
s=s+a ( i , k ) ∗ x ( k ) ;
end
x ( i )=(b ( i )− s ) / a ( i , i ) ;
end
function x=c h o l 1 ( a , b )
[ n , n]= s i z e ( a ) ;
f o r i =1:n ;
f o r j =1:n ;
l ( i , j )=0;
end
end
nb=0;
l (1 ,1)= sqrt ( a ( 1 , 1 ) ) ;
f o r i =2:n ;
l ( i ,1)= a ( 1 , i ) / l ( 1 , 1 ) ;
end
f o r r =2:n ;
s =0;
f o r k=1: r −1;
s=s+l ( r , k ) ^ 2 ;
end
l ( r , r )=sqrt ( a ( r , r )− s ) ;
f o r j=r +1:n ;
s =0;
f o r k=1: r −1;
s=s+l ( r , k ) ∗ l ( j , k ) ;
110 CHAPITRE 5. SYSTÈMES LINÉAIRES
end
l ( j , r )=( a ( r , j )− s ) / l ( r , r ) ;
end
end
y (1)=b ( 1 ) / l ( 1 , 1 ) ;
f o r i =2:n ;
s =0;
f o r k=1: i −1;
s=s+l ( i , k ) ∗ y ( k ) ;
end
y ( i )=(b ( i )− s ) / l ( i , i ) ;
end
t=l . ’ ;
x ( n)=y ( n ) / t ( n , n ) ;
f o r i=n −1: −1:1;
s =0;
f o r k=i +1:n ;
s=s+t ( i , k ) ∗ x ( k ) ;
end
x ( i )=(y ( i )− s ) / t ( i , i ) ;
end
2 −1 0 ···
0
.. 1
−1 2 −1 · · · . 0
.. .. .. ..
A= 0 , b =
. . . 0
.
. . .. 0
.. ..
. 2 −1
1
0 ··· 0 −1 2 n×n
Columns 9 through 11
Columns 1 through 8
Columns 9 through 11
Columns 1 through 8
Columns 9 through 11
Le premier vecteur t2 représente le temps cpu de la méthode de Gauss, on voit que le temps
mis par cette méthode varie de 3.37 à 5 seconde environ. Le vecteur t1 représente le temps de la
méthode de Thomas qui oscille autour de 0.1 seconde alors que le dernier vecteur t3 représente
le temps de la méthode de Cholesky qui varie de 1.5 à 2.5 seconde environ. On remarque donc
que la méthode de Thomas est celle qui est la plus rapide alors que la méthode de Cholesky
se classe juste après en terme de temps cpu. Pour résoudre le système Ax = b on sait que la
méthode de Thomas nécessite 8n − 7 opérations (voir Remarque 5.6) où n est la taille de la
3
matrice A alors que la méthode de Cholesky nécessite un nombre d’opérations de l’ordre de n3
(voir Remarque 5.7). La méthode de Gauss quand à elle nécessite un nombre d’opérations de
l’ordre de n3 (voir Remarque 5.4). Dans le dernier cas du test n = 710 la méthode de Thomas
utilise 5673 opérations alors que la méthode de Cholesky utilise 11 × 106 d’opérations environ.
La méthode de Gauss quand à elle utilise environ 357 × 106 opérations. La méthode de Thomas
est donc la plus efficace lorsque la matrice est tridiagonale.
ans =
ans =
1 . 5 5 1 4 e+04
ans =
1 . 6 0 2 5 e+13
ans =
2 . 8 3 4 6 e+17
On voit que le conditionnement de la matrice de Hilbert croit exponentiellement avec la taille de
la matrice. La matrice de Hilbert est donc une matrice très mal conditionné.
r=b−a∗ x0 ; r 0=norm( r ) ;
e r r=norm( r ) ;
i f e==’ J ’ ;
while e r r >t o l ;
d=(b−(L+U) ∗ x ) ;
x=D\d ;
disp ( x ) ;
k=k+1;
r=b−a∗x ;
e r r=norm( r ) /norm( b ) ;
end
e l s e i f e==’G ’ ;
while e r r >t o l ;
d=(b−U∗x ) ;
x=(D+L) \ d ;
disp ( x ) ;
k=k+1;
r=b−a∗x ;
e r r=norm( r ) /norm( b ) ;
end
end
>> n=200;m=210;
t o l =1e −8;
e r 1=zeros (m, 1 ) ;
e r 2=zeros (m, 1 ) ;
f o r i=n :m;
x0=o n e s ( i , 1 ) ;
a=hilb ( i ) ;
b=a∗ o n e s ( i , 1 ) ;
x=o n e s ( i , 1 ) ;
xx1=c h o l 1 ( a , b ) ;
e r 1 ( i )=norm( xx1 ’−x ) /norm( x ) ;
xx2=i t e r a t i v e ( a , b , x0 , ’G ’ , t o l ) ;
e r 2 ( i )=norm( x−xx2 ) /norm( x ) ;
end
disp ( e r 1 ( n :m) ’ ) ;
disp ( e r 2 ( n :m) ’ ) ;
Columns 1 through 8
Columns 9 through 11
0 0 0 0 0 0 0 0 0 0 0
On remarque que les erreurs relatives par la méthode de Cholesky varient de 16694% à 56690% ce
qui est énorme. Par contre la méthode de Gauss-Seidel donne des erreurs relatives pratiquement
nulles. Ceci s’explique par le fait que la matrice de Hilbert A est très mal conditionnée. En général
le défaut principal des méthodes directes est leur sensibilité par rapport aux erreurs d’arrondis
lorsque les matrices sont mal conditionnée. Dans de tels cas les méthodes itératives sont mieux
adaptées.
Commande gallery
La commande Matlab gallery implémente une classe de matrices particulières comme celle
de Poisson, Riemann, Wilkinson, Hadamard, ect. Tapez help gallery pour plus de détails.
La matrice de Poisson s’obtient par la commande gallery(’poisson’,n) ou n est le nombre
de bloc de la matrice. C’est une matrice tridiagonale par bloc de taille (n2 × n2 ) qui résulte
de la discrétisation de l’opérateur laplacien en deux dimensions. On peut montrer que c’est une
matrice symétrique et définie positive. Le système Ax = b où A est la matrice de Poisson peut
donc être résolu par les méthode de Cholesky et Gauss-Seidel.
On peut visualiser la structure bande de cette matrice en utilisant la commande Matlab spy.
Par exemple pour une matrice de Poisson à 4 blocs on a
>> n=4;
>> A=g a l l e r y ( ’ p o i s s o n ’ , 4 ) ;
>> spy (A)
ce qui donne le graphe de la figure 5.2 qui montre une structure à large bande de la matrice
dont chaque sous et sur-diagonale est constituée de blocs contenant chacun une matrice identité
(n × n).
116 CHAPITRE 5. SYSTÈMES LINÉAIRES
0 0 0 0 0 0
Le script précédent montre que le temps de résolution par la méthode de Cholesky varie de 2.33
à 6.23 secondes environ alors que celui par la méthode de Gauss-Seidel est pratiquement nul. Cet
exemple montre que la méthode de Gauss-Seidel est plus rapide que celle de Cholesky.
x=o n e s ( i , 1 ) ;
b=a ∗x ;
x0=zeros ( i , 1 ) ;
xx=i t e r a t i v e ( a , b , x0 , ’G ’ , t o l ) ;
e r ( i )=norm( x−xx ) /norm( x ) ;
r e s ( i )=norm( b−a∗xx ) /norm( b ) ;
end
disp ( e r ( n :m) ) ; disp ( r e s ( n :m) ) ;
Columns 1 through 8
Columns 9 through 11
1 . 0 e −04 ∗
Columns 1 through 8
Columns 9 through 11
Exercices
1. Résoudre le système suivant en utilisant la méthode des pivots de Gauss :
1 2 1 4 x1 13
2 0 4 3 x2 = 28 .
4 2 2 1 x3 20
−3 1 3 2 x4 6
118 CHAPITRE 5. SYSTÈMES LINÉAIRES
−1 −1 −1 1
admet une décomposition LU . Calculer L et U par la méthode de Crout. En déduire le
determinant de A.
— A l’aide de la décomposition obtenue dans la question précédente résoudre le système
Ax = b où b = (3, 5, 4, −2)> .
4. (Méthode de Cholesky)
Soit n ≥ 1 un entier. On définit la matrice de Hilbert A = (aij )1≤i,j≤n par :
1
aij = , 1 ≤ i, j ≤ n.
i+j−1
— Montrer que A est une matrice symétrique.
— Vérifier que A est définie positive pour n = 2, 3. On admettra que cette propriété est
vérifiée pour tout n ≥ 1.
— Résoudre le système Ax = b par la méthode de Cholesky pour n = 4 et b = (1, 1, 1, 1)> .
5. Donner la décomposition LU de la matrice :
2 −1 0
A = 4 −1 2 .
−6 2 0
— En déduire det A.
T
— Résoudre le système Ax = b où b = (−2, 14, 12) .
2 2
— Sans calculer A , résoudre le système A x = b.
6. (Calcul de l’inverse d’une matrice)
— Résoudre le système linéaire de l’exercice 1 par la méthode de décomposition LU de
Crout.
— En remarquant que la j-ème colonne de A−1 vérifie le système linéaire Ayj = ej où
ej est le vecteur dont les composantes sont toutes nulles exceptée la j-ème qui vaut 1,
calculer la matrice inverse A−1 de A. Quel est le cout de cet algorithme ? Écrire un script
Matlab qui renvoi la matrice inverse A−1 par cette méthode.
7. Considérons le système linéaire suivant
4x1 + x2 + x3 = 6
2x1 − 8x2 + 5x3 = −1 (5.39)
x1 + 3x2 + 4x3 = 8
8. Considérons le système Ax = f où
1 −1 0 0 2
−1 2 −1 0 −4
A= 0 −1
, f =
2 −1 4
0 0 −1 2 −3
— Montrer que A est définie positive. En déduire que les méthodes de Jacobi et Gauss-
Seidel sont convergentes ? Quelle relation y a t-il entres les rayons spectraux ρ(TJ ) et ρ(SG )
des matrices de Jacobi et Gauss-Seidel respectivement ? Comparer dans ce cas précis et
sans faire de calcul la vitesse de convergence des deux méthodes. Justifier votre réponse.
— On voudrai maintenant appliquer la méthode de relaxation (SOR) pour ω = 1.25.
Calculer la matrice Jω .
— On prend b = (24, 30, −24)> . En partant de x(0) = (1, 1, 1) calculer les cinq premieres
itérations par les méthodes de Gauss-Seidel et SOR. Sachant que la solution exacte est
x = (3, 4, −5)> donner un classement des trois méthodes précédentes (Jacobi, Gauss-Seidel
et SOR) en fonction de leur vitesse de convergence. Conclusion.
10. Considérons le système suivant
3x1 + x2 = 5
x1 + 3x2 + x3 = 10
x2 + 3x3 + x4 = 15
x3 + 3x4 = 15
— Écrire le système précédent sous forme matricielle Ax = b et montrer qu’il admet une
solution unique.
— Résoudre le système précédent par la méthode des pivots de Gauss. En déduire le
determinant de la matrice A.
120 CHAPITRE 5. SYSTÈMES LINÉAIRES
Initiation a Matlab
Démarrage de Matlab
Pour lancer Matlab sous windows cliquez sur l’icône de Matlab ou bien allez au menu démarrez
puis programmes et cliquez sur Matlab. On obtient alors l’interface de Matlab comme montré
dans la figure A.1. En haut dans la barre de recherche il faut se placer dans le répertoire ou
sont situés les scripts à exécuter et dans la partie gauche de la fenêtre on trouve tous les scripts
Matlab qui sont présent dans ce répertoire. Dans la partie droite de la fenêtre il y a le work-space
(ou espace de travail) c’est là ou on exécute les calculs rapides et les scripts. Le début de la ligne
commence toujours par le prompt >>. Effectuons le produit suivant suivit de la touche "entrée"
pour l’exécuter
>> 2∗5
ans =
10
On remarque qu’une variable nommée "ans" est automatiquement affectée au résultat. Par contre
si on tape
>> x=2;
>> y=5;
>> z=x∗y
z =
10
1. The MathWorks, Inc. 3 Apple Hill Drive Natick, Massachusetts 01760 USA +1.508.647.7000
121
122 ANNEXE A. INITIATION A MATLAB
on remarque que le résultat est affecté à la variable nommée z. Remarquons que si on met le " ;"
alors Matlab enregistre le résultat sans l’afficher alors que si le signe " ;" est omis le résultat est
affiché.
Vecteurs et matrices
1 6 8
Le vecteur x = (−1, 3, 5, 6) et la matrice A = −3 0 2 s’écrivent dans Matlab sous la
−6 1 0
forme
>> x=[−1 3 5 ] , A=[1 6 8; −3 0 2; −6 1 0 ]
x =
−1 3 5
A =
1 6 8
−3 0 2
−6 1 0
Dans le script suivant on calcule le transposé x0 du vecteur x puis le produit Ax0
>> A∗x
Error using ∗
I n n e r matrix d i m e n s i o n s must a g r e e .
123
>> x ’
ans =
−1
3
5
>> A∗x ’
ans =
57
13
9
le produit A ∗ x n’est pas accepté par Matlab car il faut que le nombre de colonnes de la matrice
A soit égal au nombre de ligne du vecteur x. Il faut donc respecter les dimensions dans toutes
les opérations matricielles.
Fonctions Mathématiques
Les fonctions mathématiques élémentaires sont toutes implémentées dans Matlab. Pour affi-
cher la liste de toutes ces fonctions tapez
>> help e l f u n
2π
Par exemple pour calculer cos 7 on tape
>> cos ( 2 ∗ pi / 7 )
ans =
0.6235
Pour définir une fonction f (x) = cos(x2 ) de la variable x on utilise le symbole @
>> f=@( x ) cos ( x ^2)
f =
@( x ) cos ( x ^2)
π
pour évaluer f en x = 6 on tape
>> f ( pi / 6 )
ans =
0.9627
Si x est un vecteur ou une matrice alors la syntaxe précédente reste valable mais dans l’expression
de la fonction f il faut remplacer le produit ∗ le quotient / et la puissance b par les opérations
termes à termes .∗, ./ et .brespectivement.
124 ANNEXE A. INITIATION A MATLAB
>> x=[−1 3 5 ] ;
>> f=@( x ) cos ( x . ^ 2 ) ;
>> f ( x )
ans =
Graphisme
Pour générer un graphique en dimension 2 on utilise la commande fplot(f,[a b]) qui trace
le graphe de la fonction f dans l’intervalle [a, b]. Par exemple le script
>> f=@( x ) cos ( x . ^ 2 ) ;
>> f p l o t ( f , [ 0 pi ] )
retourne le graphe de la figure A.2. On peut modifier le type et la couleur du trait du graphique,
Scripts et fonctions
Un script est un programme Matlab qui a un nom de fichier avec l’extension .m. Le script
suivant
a=input ( ’ e n t r e z ␣un␣ p r e m i e r ␣nombre ’ ) ;
b=input ( ’ e n t r e z ␣un␣ s e c o n d ␣nombre ’ ) ;
i f a~=0;
x=−b/ a ;
disp ( x ) ;
else
disp ( ’ i l ␣n␣y␣ a ␣ pas ␣ de ␣ s o l u t i o n s ’ ) ;
end
125
Figure A.3 – Graphe de f (x) = cos(x2 ) en noir tracé avec des points
ans =
4
l’entier 1234 possède donc 4 diviseurs.
Annexe B
Commandes Matlab
La liste suivante contient les principales commandes Matlab que nous utiliserons dans ce livre.
Opérations élémentaires
* produit
/ division
b puissance
+ addition
- soustraction
.* multiplication terme à terme
./ division terme à terme
.b puissance terme à terme
= affectation
== égalité
<= Inférieur ou égal
>= supérieur ou égal
< inférieur
> supérieur
∼= différent (6=)
% début d’un commentaire
Représentation des réels
format short représentation des réels au format court (5 chiffres après la virgule)
format short e représentation au format court avec notation exponentielle (base 10)
format long représentation des réels au format long (15 chiffres après la virgule)
format long e représentation au format long avec notation exponentielle (base 10)
realmax plus grand réel en MATLAB
realmin plus petit réel en MATLAB
eps erreur d’arrondi relative
fix(x) partie entière d’un réel x
pi π = 3.1415926535897
Entiers naturels
factorial(n) factorielle d’un entier n
mod(a,b) reste de la division euclidienne de a par b
127
128 ANNEXE B. COMMANDES MATLAB
Vecteurs
[x1 x2 · · · xn] Construction d’un vecteur (x1 , x2 , · · · , xn )
max(x) Plus grande composante d’un vecteur x
min(x) Plus petite composante de x
sum(x) Somme de toutes les composantes de x
length(x) nombres de composantes d’un vecteur x
a:h:b progression arithmétique de pas h de a j’usqu’a b
(le résultat est un vecteur)
linspace(a,b,n) segmentation en n points équidistants de l’intervalle [a, b]
(le résultat est un vecteur)
dot(u,v) produit scalaire des vecteurs u et v
u’ transposé de u
norm(u) norme euclidienne du vecteur u
Matrices
[a11 · · · a1p; Construction de la matrice
(aij )1≤i≤n,1≤j≤p
.
.
.
an1 · · · anp]
size(A) dimension n × p d’une matrice A
A(:,j), A(i,:) sont respectivement la colonne j et la ligne i de A
zeros(n,p) matrice de dimension n × p dont tous les
éléments sont égaux à 0
ones(n,p) matrice de dimension n × p dont tous les
éléments sont égaux à 1
eye(n) matrice carré unité de dimension n
gallery donne accès à une bibliothèque de matrices spéciales
norm(A) norme euclidienne de la matrice A
det(A) determinant de A
trace(A) trace de A
inv(A) inverse de la matrice A
A\b solution du système linéaire Ax = b
chol(A) factorisation de Cholesky de la matrice A
lu(A) factorisation LU de la matrice A par la méthode de Doolitle
eig(A) valeurs propres de la matrice A
diag(x) matrice diagonale dont la diagonale est x = (x1 , ..., xn )
tril(A) partie triangulaire inférieure de A
triu(A) partie triangulaire supérieure de A
A’ transposée de A
Commandes d’entrées-sorties
disp(x) affiche la valeur de la variable x
fprintf(’expression’) Affichage formaté
x=input(’message’) entrées d’une variable x avec "message" à afficher
129
Fonctions mathématiques
elfun donne accès à la bibliothèque des fonctions élémentaires
specfun donne accès à la bibliothèque des fonctions spéciales
sin sinus
sinh sinus hyperbolique
asin arcsinus
asinh argsh
cos cosinus
acos arccosinus
cosh cosinus hyperbolique
acosh argch
tan tangente
atan arctangente
tanh tangente hyperbolique
atanh argth
cot cotangente
coth cotangente hyperbolique
acot arccotangente
acoth argument cotangente hyperbolique
exp(x) exp(x)
log(x) ln(x)
√
sqrt(x) x
√
nthroot(x,n) n
x
abs(x) |x|
Commandes système
which fichier donne l’emplacement du script "fichier"
save nom_fichier sauvegarde des variables de l’espace de travail
dans le fichier "nom_fichier.mat"
load nom_fichier chargement des variables à partir du fichier "nom_fichier.mat"
clear suppression de toutes les variables de l’éditeur
help commande aide à propos de "commande"
home curseur en haut à gauche
cputime temps CPU en secondes
version version de MATLAB
computer retourne le type de la machine sur laquelle est exécutée Matlab
Polynômes
conv(p,q) Produit de deux polynômes p et q
[s,r]=deconv(p,q) s est le quotient et r le reste de la division euclidienne de p et q
roots(p) racines du polynôme p
polyval(p,x) evaluation du polynôme p en x
polyder(p) dérivée du polynôme p
130 ANNEXE B. COMMANDES MATLAB
Interpolation polynômiale
polyfit(x,y,n) polynôme de degré n interpolant les données discrètes (x, y)
spline(x,y) calcule la spline cubique interpolant les données discrètes (x, y)
ppval(s,z) calcule les valeurs prise par la spline
cubique s aux points stockés dans le vecteur z
[x,C]=unmkpp(s) retourne les noeuds d’interpolation x ainsi que la matrice C
dont chaque ligne i contient les coefficients du polynôme
d’interpolation dans l’intervalle [xi , xi+1 ]
Fonctions
f=inline(’expression de f’) construction d’une fonction f
f=@(x)(expression de f) définition d’une fonction f de la variable x
fzero(f,[a,b]) racine de l’équation f (x) = 0 dans l’intervalle [a, b]
Intégration numériques
Rb
trapz(x,y) valeur approchée de l’intégrale a f (x)dx par la méthode des trapèzes
x est un vecteur contenant les points de la subdivision de [a, b] et y = f (x)
Rb
quad(f,a,b) valeur approchée de l’intégrale a f (x)dx par
la méthode de Simpson adaptative
Graphisme
131
Copyright Editions El-Djazair — Septembre 2015
13, rue des frères Boulahdour
16000 Alger-Algérie
Cet ouvrage est soumis au copyright. Le présent ouvrage présent sur le site web et à son contenu appartient aux Editions El-Djazair.
Le présent site web et son contenu, que ce soit en tout ou en partie, ne peuvent être reproduits, publiés, affichés, téléchar gés, modifiés, utilisés en
vue de créer des œuvres dérivées ou reproduits ou transmis de toute autre façon par tout moyen électronique connu ou inconnu à la date des
présentes sans l’autorisation écrite expresse des Editions El-Djazair
Les actes ci-dessus sont des infractions sanctionnées par le Code de la propriété intellectuelle Algérienne.