Vous êtes sur la page 1sur 137

Kouche Mahiéddine

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

Ce livre est le fruit de plusieurs années d’enseignement du module d’analyse numérique I


et II que j’ai assuré pour les étudiants de 2ème année licence académique de mathématiques à
l’université Badji-Mokhtar de Annaba dans le cadre du système LMD. Le but, en écrivant ce livre,
est de donner une introduction à l’analyse numérique destinée aux étudiants désirant s’initier
aux méthodes numériques modernes ainsi qu’à tous les étudiants des écoles d’ingénieurs dont les
méthodes numériques constituent un outil indispensable à la conception et à la modélisation de
différents types de problèmes issus de l’industrie.
En écrivant ce cours j’ai voulu qu’il soit accessible à la plupart des étudiants. C’est pour cela que
j’ai omis de donner certaines démonstrations qui m’ont paru longues ou difficiles. Les exemples
proposés sont judicieusement choisis et illustrent les avantages et les inconvénients de chaque
méthode. Les exercices proposés à la fin de chaque chapitre ont tous fait l’objet de travaux
dirigés ou de sujets d’examens. Les solutions de la plupart de ces exercices sont disponibles dans
mon site web : https://sites.google.com/site/kouchetpmatlab/.
Etant convaincu qu’on ne peut faire sérieusement de l’analyse numérique sans l’utilisation d’un
logiciel de calcul numérique, j’ai ajouté à la fin de chaque chapitre des travaux pratiques réalisés
avec le logiciel de calcul numérique Matlab dont le but de mettre en évidence les avantages et les
inconvénients de chaque méthode numérique. L’accent est mis sur les limites de chaque méthode
et la nécessité de choisir la meilleure méthode en terme de précision et de cout pour la résolution
des problèmes rencontrés. Tous les scripts proposés peuvent être téléchargés depuis mon site web.

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

1 Représentation des Réels 1


1.1 Représentation des nombres réels . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Représentation des entiers en base b . . . . . . . . . . . . . . . . . . . . . 1
1.1.2 Représentation des réels en base b . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Représentation des réels en virgule flottante . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Représentation des nombres réels en machine . . . . . . . . . . . . . . . . 4
1.2.2 Norme IEE754 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 L’ensemble F(b, N, L, U ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.1 Erreur absolue et erreur relative . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.2 Epsilon machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4 Propagation des erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5 Arithmétique flottante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5.1 Opérations risquées en arithmétique flottante . . . . . . . . . . . . . . . . 11
1.5.2 Algorithme de Horner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.6 Applications avec Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.6.1 Généralités sur Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.6.2 Erreur d’affectation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.6.3 Effet d’annulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.6.4 Effet des erreurs d’arrondi . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2 Interpolation et Approximation Polynomiales 19


2.1 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2 Polynôme de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3 Construction du polynôme de Lagrange . . . . . . . . . . . . . . . . . . . . . . . 20
2.4 Méthode de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.5 Erreur d’interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.6 Erreur d’interpolation par la méthode de Newton . . . . . . . . . . . . . . . . . . 27
2.7 Interpolation par fonction spline . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.8 La méthode des moindres carrés . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.9 Application avec Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.9.1 Commande polyfit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.9.2 Phénomène de Runge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.9.3 Splines cubiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

ii
TABLE DES MATIÈRES

3 Dérivation et Intégration Numériques 41


3.1 Dérivation numérique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.1.1 Formules à deux points . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.1.2 Formules à trois points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.1.3 Dérivée d’ordre supérieur . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2 Intégration numérique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.2.1 Méthode des trapèzes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.2.2 Méthode de Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.3 Applications avec Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.3.1 Calcul dans le work-space . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.3.2 Effet des erreurs d’arrondis . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.3.3 Méthodes des trapèzes et de Simpson . . . . . . . . . . . . . . . . . . . . 54
3.3.4 Commande Matlab quad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

4 Résolution des Équations non Linéaires 59


4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.2 Séparation des Racines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.3 Méthode de Dichotomie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.4 Méthode du Point Fixe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.4.1 Notion de Point Fixe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.4.2 Convergence de la Méthode du Point Fixe . . . . . . . . . . . . . . . . . . 63
4.4.3 Ordre de Convergence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.5 Méthode de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.6 Application avec Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.6.1 La commande fzero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.6.2 Méthode de dichotomie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.6.3 Méthode de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

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

A Initiation a Matlab 121

B Commandes Matlab 127

iii
1

Chapitre 1

Représentation des Réels en Virgule


Flottante et Notions d’Erreurs

1.1 Représentation des nombres réels

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.

Exemple 1.1 Pour stocker le nombre réel x = 17 on approche x par


x∗ = 0.1428 (si on prend 4 chiffres après la virgule)
x∗ = 0.142857 (si on prend 6 chiffres après la virgule)
x∗ = 0.14285714 (si on prend 8 chiffres après la virgule)

1.1.1 Représentation des entiers en base b

La représentation des nombres que nous connaissons quotidiennement est la représentation en


base 10 appelée représentation décimale. Les ordinateurs travaillent toujours en base 2 (binaire)
quoique le résultat affiché est toujours sous forme décimale.

Exemple 1.2 Écrivons le nombre 234 en bases 10 et 2.


— En base 10
10
234 = 2 × 102 + 3 × 101 + 4 × 100 = 234
— En base 2
2 CHAPITRE 1. REPRÉSENTATION DES RÉELS

On effectue à chaque fois la division euclidienne du quotient par 2

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

on écrit dans ce cas


b
n = dp dp−1 ...d0 .

1.1.2 Représentation des réels en base b


Voyons maintenant comment on représente un réel dans une base b.
Théorème 1.2 Soit b ≥ 2 un entier. Pour tout réel x 6= 0 il existe un unique entier p et des
entiers dp , dp−1 , ..., d0 , d−1 , ... vérifiant : di ≥ 0, ∀i ≥ 0 tel que

x = (−1)s dp bp + ... + d0 + d−1 b−1 + ...




Xp
= (−1)s di bi ,
i=−∞

où s est le signe de x c’est à dire que s = 0 si x est positif et s = 1 si x est négatif. On


écrit dans ce cas b
x = (−1)s dp dp−1 ...d0 , d−1 d−2 ... .
Exemple 1.3 Écrivons le nombre réel 12.625 en base 10 et en base 2.
— En base 10
10
12.625 = 1 × 101 + 2 × 100 + 6 × 100 + 2 × 10−2 + 5 × 10−3 = 12.625
— En base 2
On décompose le nombre en partie entière et partie fractionnaire
12.625 = 12 + 0.625
Codage de la partie entière
2
12 = 23 + 22 = 1100
Codage de la partie fractionnaire
— On multiplie a chaque fois la partie fractionnaire par 2
1.2. REPRÉSENTATION DES RÉELS EN VIRGULE FLOTTANTE 3

— On note a chaque fois la partie entière 0 ou 1


— On s’arrête lorsque la partie fractionnaire est nulle
0.625 × 2 = 1.25 = 1 + 0.25 → 1
0.25 × 2 = 0.5 → 0
0.5 × 2 = 1 → 1
d’ou
2
12.625 = 1100.101 .
10
Remarque 1.1 Le nombre x = 13 s’écrit en base 10 ; 13 = 0.33....3... et possède une infinité
3
de chiffres après la virgule. Par contre en base 3 ; 13 × 3 = 1 → 1 d’ou 13 = 0.1 et possède
un seul chiffre après la virgule. Un nombre réel peut donc avoir une infinité de chiffres
après la virgule dans une base donnée et un nombre fini de chiffres dans une autre base.

1.2 Représentation des réels en virgule flottante


Les ordinateurs utilisent la représentation en virgule flottante pour stocker les nombres réels.
Elle consiste à représenter un nombre par un signe s une mantisse m et un exposant e. On
verra dans la suite de ce paragraphe que l’avantage de la représentation en virgule flottante par
rapport à la virgule fixe est que la virgule flottante est capable, à nombre de bits égal, de gérer
un intervalle de nombres réels plus important.

Soit b ≥ 2 un entier et x un réel non nul. La représentation en virgule flottante de x en base b


est donnée de manière unique par
b
x = (−1)s 0.a1 ...aN be = (−1)s m.be (1.1)


— 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.2.1 Représentation des nombres réels en machine


Rappelons que dans une machine informatique toute information est codée en binaire (base
2). En particulier un nombre (entier ou réel) est codé sous la forme d’une suite de 0 et 1. En
pratique la machine utilise la représentation en virgule flottante c’est à dire la relation (1.1) pour
stocker les nombres réels. Par exemple le nombre réel x = (−1)s m.2e est stocké comme suit :
s ··· a1 ··· aN
| {z } | {z }
e m

— la première case contient le signe s de x (0 ou 1)


— Le second groupe de cases contient l’exposant e écrit en base 2
— Le troisième groupe contient la mantisse m c’est à dire les chiffres significatifs a1 ,...,aN .
Exemple 1.5 Le nombre réel x = −3.625 est stocké comme suit
1 1 0 1 1 1 0 1
|{z} | {z } | {z }
s e m

1.2.2 Norme IEE754


Pour unifier les différentes représentations en virgule flottante et pour garantir la portabilité
des programmes de calcul scientifique d’une machine à une autre l’IEEE (Institute of Electrical
and Electronics Engineers) à mis en place depuis 1985 la norme dite IEEE 754.
La norme IEEE 754 définie deux formats de nombres à virgule flottante. Il s’agit des formats dit
simple précision ou format 32 bits et double précision ou 64 bits.

Codage des nombres en simple précision


Un réel x = (−1)s m.2e est codé en simple précision comme suit :
s exposant e mantisse
|{z} | {z } | {z }
1 bit 8 bits 23 bits

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.

Codage des nombres en double précision


En double précision un réel x = (−1)s m.2e est codé comme suit :
s exposant e mantisse
|{z} | {z } | {z }
1 bit 11 bits 52 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

1.3 L’ensemble F(b, N, L, U )


Pour un ordinateur l’ensemble de tous les nombres représentables en machine n’est plus la
droite réelle R mais un sous ensemble fini de celle ci appelé l’ensemble des nombres à virgule
flottante. D’une manière générale on définit l’ensemble des nombres en virgule flottante par
n o
b
F(b, N, L, U ) = {0} ∪ x = (−1)s 0.a1 ...aN .be

où b ≥ 2 est la base de représentation, N le nombre de chiffres significatifs de x et L, U deux


entiers relatifs tel que L ≤ e ≤ U ; U est la borne supérieure de e et L est la borne inférieure de
e. De plus les ai sont tels que :

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)

Arrondis d’un nombre


Commençons par un exemple. Considérons l’ensemble F(10, 4, −1, 1) et les deux réels x =
0.8888 et y = 0.9999. Il est clair que x, y ∈ F(10, 4, −1, 1). Calculons la somme de ces deux
nombres : z = x + y = 0.18887 ∈ / F(10, 4, −1, 1). Cet exemple montre que lorsque l’on effectue
une opération sur deux réels appartenant à F(10, 4, −1, 1) le résultat n’est pas nécessairement
dans F(10, 4, −1, 1). Ceci nous amène à la notion d’arrondis d’un nombre.
b
Définition 1.1 Soit x = (−1)s 0.a1 · · · aN · · · be un réel écrit dans une base b et ayant un
nombre quelconque de chiffres après la virgule. On définie le flottant (ou l’arrondi) f l(x)
de x comme suit :
(
b
(−1)s 0.a1 · · · aN be , si aN +1 ≤ 2b
f l(x) = b
(−1)s 0.a1 · · · aN + 1 be , si aN +1 > 2b

Exemple 1.7 Revenons à l’exemple précédent. On a z = 0.18887 d’ou f l(z) = 0.1889.

1.3.1 Erreur absolue et erreur relative


Définition 1.2 Soit x un réel et x∗ une valeur approchée de x. On appelle erreur absolue de
x la valeur
∆x = |x − x∗ |.
On appelle erreur relative de x 6= 0 la valeur
x − x∗

Ex = .
x

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.

1.3.2 Epsilon machine


Quelle est l’erreur relative commise lorsque l’on remplace un réel x par son arrondi dans le
b
système de représentation F(b, N, L, U ) ? Soit le réel x = (−1)s 0.a1 · · · aN · · · .be , avec a1 6= 0.
On a alors (
b
(−1)s 0.a1 · · · aN be , si aN +1 ≤ 2b
f l(x) = b
(−1)s 0.a1 · · · aN + 1 be , si aN +1 > 2b
Calculons l’erreur relative Ex . On a dans le premier cas
x − f l(x)
Ex =
x b
0.0 · · · 0aN +1 · · · .be
= b
0.a1 · · · aN aN +1 · · · .be
(aN +1 b−N −1 + · · · )be
= b
0.a1 · · · aN aN +1 · · · .be
Calculons un majorant de Ex . Pour majorer la fraction précédente il suffit de minorer le déno-
minateur de cette fraction. Le plus petit réel est alors le suivant :
b
0.10 · · · 0 .be = b−1 .be
(on a mis 1 car la plus petite valeur non nulle de a1 est 1). D’ou et puisque ai ≤ b − 1 ∀i
(aN +1 b−N −1 + · · · )be
Ex ≤
b−1 .be
(b − 1)b−N −1 + · · · e
≤ b
b−1 .be
b−N −1 + · · · e
≤ (b − 1) b
b−1 be
b − 1 b−N −1 e
≤ b
b−1 be 1 − b−1
≤ b1−N .
De même dans le second cas
x − f l(x)
Ex ≤
x
b b
0.a1 · · · aN + 1 .be − 0.a1 · · · aN aN +1 · · · .be
≤ b
0.a1 · · · aN · · · .be
b−N − aN +1 b−N −1 − · · · e
≤ b
b−1 .be
≤ b1−N
8 CHAPITRE 1. REPRÉSENTATION DES RÉELS

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 .

Définition 1.3 Le nombre M = b1−N s’appelle l’epsilon machine de l’ensemble F(b, N, L, U ).


Exemple 1.9 Soit x = 1.375 et calculons le flottant de ce nombre dans le système F(2, 3, −1, 2).
Lorsque l’on compare ce nombre avec les éléments de F(2, 3, −1, 2) on voit que celui le plus proche
est 1.25. Calculons le flottant de ce nombre dans F(2, 3, −1, 2). On a en base b = 2 :
2
x = 0.1011 .21 ∈
/ F(2, 3, −1, 2).
b
Le dernier chiffre est 1 = 2 (b = 2), d’ou

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.

Si xM ∈ F est le flottant le plus proche de 1 dans F alors :


b
xM = 0.10 · · · 01 .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.

1.4 Propagation des erreurs


Que peut-on dire de la précision des résultats obtenus lorsqu’on additionne ou qu’on multiplie
des valeurs connus avec une précision limitée ? On peut montrer que :

∆(x + y) = ∆x + ∆y, E(x + y) = E(x) + E(y)


∆(x − y) = ∆x − ∆y, E(x − y) = E(x) − E(y)
∆(x × y) = |y|∆x + |x|∆y, E(x × y) = |y|E(x) + |x|E(y) (1.4)
∆(x ÷ y) = ||y|∆x−|x|∆y|
y2 , E(x ÷ y) = ||y|E(x)−|x|E(y)|
y2

Pus généralement on a le résultat suivant :


Théorème 1.4 Soient x une quantité inconnue approchée par une valeur approximative
x∗ avec une erreur absolue ∆x et f une fonction dérivable. La quantité f (x) est alors
approchée par f (x∗ ) avec une erreur absolue ∆f donnée par :

∆f = |f (x) − f (x∗ ) ' |f 0 (x∗ )|∆x.

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

∆V ' |V 0 (x∗ )|∆x = 3(x∗ )2 .∆x| = |3 × (10.2)2 × 0.1


10 CHAPITRE 1. REPRÉSENTATION DES RÉELS

d’ou
∆V = 31.212 cm3 .
Le volume approximatif V ∗ du cube est :

V ∗ = (102.2)3 = 1061.2 cm3

soit
V = 1061.2 ± 31.212 cm3 .

1.5 Arithmétique flottante


Les opérations en arithmétique flottante se font selon le schéma suivant :

x op y → f l(f l(x) op f l(y)))

où "op" désigne un opérateur arithmétique quelconque.


Exemple 1.13 Calculons le produit 3× 13 en arithmétique flottante avec 4 chiffres significatifs
après la virgule :
   
1 1
× 3 → fl fl × f l(3)
3 3
= f l(0.3333 × 0.3000 × 101 )
= f l(0.09999 × 101 )
= f l(0.9999 × 100 )
= 0.9999.

On remarque une légère perte de précision.


Effectuons maintenant la division :

0.56789 × 104 ÷ 0.1234321 × 10−3 → f l(0.5679 × 104 ÷ 0.1234 × 10−3 )


= f l(4.602106969 × 107 )
= f l(0.4602106969 × 108 )
= 0.4602

Voyons maintenant l’addition et la soustraction :

0.4035 × 106 + 0.1978 × 104 → f l(0.4035 × 106 + 0.1978 × 104 )


= f l(0.4035 × 106 + 0.001978 × 106 )
= f l(0.405478 × 106 )
= 0.4055 × 106 .

De même pour la soustraction :

0.56789 × 104 − 0.1234321 × 106 → f l(0.5679 × 104 − 0.1234 × 106 )


= f l(0.005679 × 106 − 0.1234 × 106 )
= −f l(0.11772 × 106 )
= −0.1177 × 106 .
1.5. ARITHMÉTIQUE FLOTTANTE 11

1.5.1 Opérations risquées en arithmétique flottante


Les opérations élémentaires n’ont pas les mêmes propriétés en arithmétique flottante. Voici
quelques exemples.

Non distributivité de la multiplication par rapport à l’addition


Calculons en arithmétique flottante à 3 chiffres significatifs :

122 × (333 + 695) = f l(0.122 × 103 × f l(0.333 × 103 + 0.695 × 103 ))


= f l((0.122 × 103 ) × f l(1.028 × 103 ))
= f l(0.122 × 103 × f l(0.1028 × 104 ))
= f l(0.122 × 103 × 0.103 × 104 )
= f l(0.012566 × 107 )
= 0.126 × 106 .

D’un autre coté

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

On constate donc une légère différence entre les deux résultats.

Effet d’absorption
Calculons la somme des nombres suivants en arithmétique flottante à 4 chiffres significatifs :

0.4000 × 104 + 0.1000 × 10−2 → f l(0.4000 × 104 + 0.1000 × 10−2 )


= f l(0.4000 × 104 + 0.0000001 × 104 )
= f l(0.4000 × 104 )
= 0.4000 × 104 .

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 :

0.56779 × 106 − 0.56778 × 106 → f l(f l(0.56779 × 106 ) − f l(0.56778 × 106 ))


= f l(0.5678 × 106 − 0.5678 × 106 )
= 0.

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

1.5.2 Algorithme de Horner


Les exemples vus plus haut montrent que les opérations en arithmétique flottante sont particu-
lièrement sensible aux erreurs d’arrondis. Il est donc important de pouvoir évaluer ces opérations
de manière à minimiser ces erreurs du à l’arrondis.

Supposons qu’on veut évaluer en arithmétique flottante la valeur du polynôme


P (x) = 2 + 4x + 5x2 + 3x3
au point x. On voit bien que ceci nécessite 3 additions et 6 multiplications.
Écrivons le polynôme P sous la forme équivalente
P (x) = 2 + x(4 + x(5 + 3x)).
On voit que sous cette nouvelle forme le calcul de P (x) nécessite seulement 3 additions et 3
multiplications. En réduisant le nombre d’opérations cette nouvelle expression est moins sensible
aux erreurs d’arrondis de l’arithmétique flottante.
D’une manière générale pour évaluer le polynôme
P (x) = a0 + a1 x + · · · + an xn
en x, la méthode de Horner consiste à écrire ce polynôme sous la forme
P (x) = a0 + x(a1 + x(a2 + · · · + x(an−1 + an x) · · · )
d’ou l’algorithme suivant
coefficients de P an an−1 an−2 ··· a1 a0
facteur de x an an x + an−1 (an x + an−1 )x + an−2 ··· P (x)
La méthode consiste donc à multiplier le premier coefficient par x et à lui ajouter le second
coefficient ensuite on multiplie le nombre ainsi obtenu par x et on lui ajoute le troisième coefficient
et ainsi de suite. Reprenons l’exemple précédent et calculons la valeur de P en x = 1.51
coefficients de P 3 5 4 2
facteur de 3 9.53 18.3903 29.7694
d’ou P (1.51) = 29.7694.

1.6 Applications avec Matlab


1.6.1 Généralités sur Matlab
Dans Matlab la droite réelle est représentée par l’ensemble F(2, 53, −1021, 1024). Ceci veut
dire que les nombres réels sont codés en double précision avec 53 chiffres significatifs. Ces 53
chiffres significatifs en base 2 correspondent aux 15 chiffres significatifs montrés par Matlab en
base 10 avec le "format long". L’erreur relative commise par Matlab ou l’epsilon machine est
donc 21−53 = 2−52 . On peut retrouver cette erreur relative en tapant dans le work-space
>> eps

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

1.6.2 Erreur d’affectation


Le script suivant somme n fois le réel x :
function s=some ( x , n )
format l o n g e
s =0;
f o r i =1:n ;
s=s+x ;
end
En prenant x = 0.1 calculons la somme de 1000 fois le nombre 0.1. On a
>> some ( 0 . 1 , 1 0 0 0 )

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

D’un autre coté Es = 100−99.99999999999859


100 = 1.406874616804998 × 10−14 . On voit bien qu’on a
−13
Es ≤ 2.2204 × 10 comme prévu par les formules de propagation des erreurs.

1.6.3 Effet d’annulation


(1+x)−1
Soit x = 10−15 et calculons avec Matlab la quantité x on a
>> x=1e −15;((1+ x) −1)/x

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.

1.6.4 Effet des erreurs d’arrondi


Considérons la suite récurrente

u1 = 1, u2 = 0.9,
un+1 = 2.9un − 1.8un−1 , n≥2
1.6. APPLICATIONS AVEC MATLAB 15

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) :

e, 1/6, 12.487, 2000.1

2. Effectuer les opérations suivantes en arithmétique flottante à 3 chiffres :


 
1
π , 2136(9993 + 0.004567), (1.235)4 , 10200 + 341, (10200 + 341) − 9800,
π
(125 × 25) + (10 × 2.5)

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

— Donner l’expression de N en base 2.


— Combien de chiffres comprend l’écriture de ce nombre en base 10.
Indication : Montrer que si N = bn 10n + · · · + b1 101 + b0 , avec bn 6= 0 alors on a 10n ≤
N ≤ 10n+1 . Il suffit de prendre le log10 des trois cotés.
√ √
5. Calculer en arithmétique flottante avec 8 chiffres significatifs le nombre 106 + 4− 106 + 3.
Proposer une autre façon d’estimer ce nombre et qui soit plus précise.
6. Considérons l’ensemble des flottants F(10, 4, −9, 9).
— Quels sont le plus petit et le plus grand flottants positifs appartenant a cet ensemble ?
— Trouver l’epsilon machine εM de cet ensemble.
— Calculer dans F(10, 4, −9, 9) les expressions suivantes :

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

(2) En calculant 100 + · · · + 11


1

Quel résultat est le plus précis et pourquoi ?


8. Pour évaluer la fonction ex on propose d’utiliser son développement de Maclaurin d’ordre
n
n
X xi
ex ' .
i=0
i!

— Utiliser un développement de Maclaurin d’ordre 9 et l’arithmétique flottante à trois


chiffres pour trouver une approximation du nombre e−5 en utilisant les deux méthodes
suivantes :
9
xi
(a) e−5 '
P
i!
i=0
(b) e−5 = 1
e5 ' P
9
1
xi
i!
i=0
— Calculer dans chaque cas l’erreur relative commise. Laquelle des deux méthodes pré-
cédentes est la plus précise ? Justifier votre réponse.
9. Considérons l’équation du second degré

x2 + 3000.001x + 3 = 0

— Calculer les racines x1 et x2 (x2 < x1 ) de cette équation en arithmétique flottante à 4


chiffres significatifs après la virgule.
— Comparer ces racines par rapport aux racines exactes de cette équation. Quel est
l’erreur relative sur x1 et x2 ? Expliquez la cause de l’erreur dans le calcul de x1 .
— Proposer une autre méthode pour calculer x1 avec plus de précision.
10. Évaluer les erreurs absolues commises ainsi que le nombre de chiffres significatifs dans le
calcul des expressions suivantes :
1.6. APPLICATIONS AVEC MATLAB 17

x2 y 3 en x∗ = 12.1, y ∗ = 3.721,
−xyz, en x∗ = 1.260, y ∗ = 0.510−3 , z ∗ = 12.93

on supposera que tous les chiffres fournis sont significatifs.



11. Dans un calcul numérique on approche 4.001 par 2. En utilisant les formules de propa-
gation des erreurs vues en cours donner une majoration de l’erreur commise.
12. Calculer en arithmétique flottante à trois chiffres la valeur du polynôme P (x) = x3 −
6.1x2 + 3.2x + 1.5 en x = 4.71.
— Même question en utilisant cette fois-ci le schéma de Horner. Calculer dans les deux cas
les erreurs relatives commises. Laquelle des deux méthode est la plus précise ? Conclusion.
13. Combien de chiffres significatifs obtient-t-on dans le calcul du volume V d’une sphère de
rayon R = 1 cm mesuré avec une erreur absolue ∆R ≤ 0.5 × 10−4 cm et si on prend le
nombre π avec quatres chiffres significatifs après la virgule ?
14. On considère la fonction
f (x) = (8 + x)3 − 512
(a) Sans modifier la forme algébrique de f , calculer f (0.0001) en arithmétique flottante
à 5 chiffres en utilisant l’arrondis. Comparer avec la valeur fournie par votre calculatrice
lorsque vous utilisez le maximum de chiffres significatifs et commenter les résultats obte-
nus.
(b) Trouver une expression de f (x) qui soit algébriquement équivalente à celle proposée
plus haut et qui vous permettra de calculer f (0.0001) en arithmétique flottante à cinq
chiffres avec plus de précision.
15. Quelles sont les erreurs commises dans l’évaluation des fonctions suivantes (tous les chiffres
sont significatifs) et indiquer le nombres de chiffres significatifs du résultat :

ln x en x∗ = 2.01, arctan x en x∗ = 1.0100, x8 en x∗ = 1.123, sin2 x en x∗ = 0.11

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 ?

2.2 Polynôme de Lagrange


L’interpolation de Lagrange consiste à chercher la fonction qui interpole f (x) aux nœuds
(xi , yi ), i = 0, n sous la forme d’un polynôme L. Quel est le degré de ce polynôme ? La réponse
est donnée par le théorème suivant
Théorème 2.1 Par (n + 1) points (xi , yi ), i = 0, n il ne passe au plus qu’un seul polynôme

• •

• • x
L

Figure 2.1 – Le polynôme L qui interpole les nœuds (xi , yi )

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

Posons L(x) = L1 (x) − L2 (x) qui est un polynôme de degré ≤ n. De plus

L(xi ) = L1 (xi ) − L2 (xi ) = yi − yi = 0,

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 ). 

2.3 Construction du polynôme de Lagrange


Cherchons l’expression du polynôme de Lagrange L correspondant aux nœuds (xi , yi ), i =
0, n.

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.

Les xi sont donc les n racines de l0 , d’ou

l0 (x) = c(x − x1 )(x − x2 ) · · · (x − xn ).

Or l0 (x0 ) = 1 d’où on tire


1
c=
(x0 − x1 )(x0 − x2 ) · · · (x0 − xn )
2.3. CONSTRUCTION DU POLYNÔME DE LAGRANGE 21

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)

l0 a donc la forme suivante


n
Q
(x − xi )
(x − x1 )(x − x2 ) · · · (x − xn ) i=1
l0 (x) = = Qn .
(x0 − x1 )(x0 − x2 ) · · · (x0 − xn )
(x0 − xi )
i=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)

Les n racines de li sont donc x0 , x1 , · · · , xi−1 , xi+1 , · · · , xn . D’ou


li (x) = c(x − x0 ) · · · (x − xi−1 )(x − xi+1 ) · · · (x − xn ).
Or li (xi ) = 1, on obtient alors
1
c= .
(xi − x0 ) · · · (xi − xi−1 )(xi − xi+1 ) · · · (xi − xn )
li a donc la forme suivante
n
Q
(x − xj )
(x − x0 ) · · · (x − xi−1 )(x − xi+1 ) · · · (x − xn ) j=0,j6=i
li (x) = = n .
(xi − x0 ) · · · (xi − xi−1 )(xi − xi+1 ) · · · (xi − xn ) Q
(xi − xj )
j=0,j6=i

Définition 2.1 Les polynômes li , i = 0, n sont appelés les polynômes caractéristiques de


Lagrange.

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

où li sont les polynômes caractéristiques de Lagrange.


Preuve. Comme le polynôme d’interpolation de Lagrange est unique il suffit de montrer que
L(xi ) = yi , i = 0, n.
En effet
n
X
L(xi ) = yj lj (xi )
j=0
n
X
= yi li (xi ) + yj lj (xi ),
j=0,j6=i
2.4. MÉTHODE DE NEWTON 23

or li (xi ) = 1 et lj (xi ) = 0 pour j 6= i d’ou


L(xi ) = yi .

Exemple 2.1 Trouver le polynôme de Lagrange L3 qui interpole les nœuds : (0, 1), (1, 2),
(2, 9), (3, 28).
La formule (2.1) donne
(x − 1)(x − 2)(x − 3) (x − 0)(x − 2)(x − 3) (x − 0)(x − 1)(x − 3)
L3 (x) = 1 +2 +9 +
(0 − 1)(0 − 2)(0 − 3) (1 − 0)(1 − 2)(1 − 3) (2 − 0)(2 − 1)(2 − 3)
(x − 0)(x − 1)(x − 2)
+28
(3 − 0)(3 − 1)(3 − 2)
(x − 1)(x − 2)(x − 3) x(x − 1)(x − 3)
= − + x(x − 2)(x − 3) − 9 +
3 2
x(x − 1)(x − 2)
+14
3
= x3 + 1.

Remarque 2.1 La méthode d’interpolation de Lagrange n’est pas récursive. En effet si on


souhaite passer d’un polynôme de degré n à un polynôme de degré n + 1 en ajoutant
simplement un nœud on doit reprendre tout le processus à zéro. Dans l’exemple précédent
si on souhaite obtenir le polynôme de degré 4 correspondant aux nœuds (0, 1), (1, 2), (2, 9),
(3, 28) et (5, 54) on ne peut récupérer le polynôme de degré 3 déjà calculé et le modifier
simplement pour obtenir L4 . On verra dans le prochain paragraphe que la méthode de
Newton permet de le faire.

2.4 Méthode de Newton


Dans ce paragraphe on notera les nœuds d’interpolation par (xi , f (xi )), i = 0, n où f est
la fonction inconnue qu’on cherche à approcher par le polynôme d’interpolation. Notons par L
l’unique polynôme de degré n qui interpole f aux nœuds (xi , f (xi )), i = 0, n. On a
L(xi ) = f (xi ), i = 0, n. (2.2)
Écrivons L sous la forme
L(x) = a0 + a1 (x − x0 ) + a2 (x − x0 )(x − x1 ) + a3 (x − x0 )(x − x1 )(x − x2 ) +
+ · · · + an (x − x0 )(x − x1 ) · · · (x − xn−1 ).
Le coefficient an comporte n monômes (x − xi ), i = 0, n − 1, L est donc de degré n. L’idée
consiste à déterminer les coefficients ai de L à partir des relations (2.2). Comme les coefficients
de L s’annulent tous en x = x0 sauf le premier on a L(x0 ) = a0 = f (x0 ), d’ou le premier
coefficient
a0 = f (x0 ).
Ensuite
L(x1 ) = a0 + a1 (x1 − x0 )
= f (x0 ) + a1 (x1 − x0 )
= f (x1 ),
24 CHAPITRE 2. INTERPOLATION ET APPROXIMATION POLYNOMIALES

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 )

On a donc avec cette nouvelle notation

a1 = f [x0 , x1 ].

Calculons maintenant a2

L(x2 ) = a0 + a1 (x2 − x0 ) + a2 (x2 − x0 )(x2 − x1 ) = f (x2 ),

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+1 , xi+2 ] − f [xi , xi+1 ]


f [xi , xi+1 , xi+2 ] = .
xi+2 − xi
Les nième différences divisées sont définit par

f [x1 , · · · , xn ] − f [x0 , · · · , xn−1 ]


f [x0 , · · · , xn ] = .
xn − x0
De même les différences divisées d’ordre 0 sont

f [xi ] = f (xi ).

Suivant cette nouvelle notation on a pour a2

a2 = f [x0 , x1 , x2 ].

On peut montrer par récurrence le théorème suivant :


2.4. MÉTHODE DE NEWTON 25

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

L(x) = a0 + a1 (x − x0 ) + a2 (x − x0 )(x − x1 ) + · · · an (x − x0 )(x − x1 ) · · · (x − xn−1 ),

où les coefficients ai sont donnés par

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

L3 (x) = 1 + 1(x − 0) + 3(x − 0)(x − 1) + 1(x − 0)(x − 1)(x − 2) = x3 + 1

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

le polynôme d’interpolation est alors


3
L4 (x) = L3 (x) − (x − 0)(x − 1)(x − 2)(x − 3).
5
On voit sur cet exemple qu’on a tout simplement ajouté un terme au polynôme précédemment
calculé. La méthode de Newton est donc récursive.
Remarque 2.2 Notons par L le polynôme d’interpolation par la méthode de Newton aux
nœuds (xi , f (xi )), i = 0, n. Ce polynôme s’écrit

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 ),

on obtient donc le polynôme Ln+1 en ajoutant juste un terme au polynôme Ln

Ln+1 (x) = Ln (x) + an+1 (x − x0 ) · · · (x − xn−1 )(x − xn ).

La formule précédente traduit la récursivité de la méthode de Newton.

2.5 Erreur d’interpolation


On a vu dans les paragraphes précédents que le polynôme d’interpolation L de f aux nœuds
(xi , f (xi )), i = 0, n approche la fonction f aux points x 6= xi . Ceci entraîne donc une erreur
d’interpolation E(x) en tout point x qu’on va étudier. Écrivons

E(x) = f (x) − L(x)

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.

Preuve du Théorème 2.4 Montrons la relation (2.4). Posons

wn+1 (x) = (x − x0 )(x − x1 ) · · · (x − xn )

qui est un polynôme de degré n + 1 ayant les n + 1 racines xi , i = 0, n. Soit x ∈ [x0 , xn ].


Si x coïncide avec l’un des nœuds xi alors E(x) = f (xi ) − L(xi ) = 0. La relation (2.4) est
2.6. ERREUR D’INTERPOLATION PAR LA MÉTHODE DE NEWTON 27

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)

D’autre part φ(x) = E(x) − E(x) = 0. φ s’annule donc en (n + 2) points de (x0 , xn ).


D’après le lemme précédent il existe ξx ∈ (x0 , xn ) tel que

φ(n+1) (ξx ) = 0. (2.5)

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).

2.6 Erreur d’interpolation par la méthode de Newton


Cherchons l’expression de l’erreur avec la méthode des différences divisées. Soient les (n + 1)
nœuds (x0 , f (x0 )),· · · ,(xn , f (xn )) distincts et cherchons l’erreur d’interpolation E(x) en un point
28 CHAPITRE 2. INTERPOLATION ET APPROXIMATION POLYNOMIALES

x distincts des xi , i = 0, n. Notons par Ln le polynôme d’interpolation par la méthode de Newton


de f aux nœuds x0 , · · · , xn . L’erreur E(x) est donnée par
E(x) = f (x) − Ln (x).
Ajoutons aux nœuds x0 , · · · , xn un (n+2) iéme nœud xn+1 = x. Les nouveaux nœuds sont donc :
x0 , · · · , xn , xn+1 (attention xn+1 = x est situé entre x0 et xn ), et notons par Ln+1 le polynôme
d’interpolation de f aux nœuds x0 , · · · , xn+1 on a d’après la remarque 2.2
Ln+1 (t) = Ln (t) + an+1 (t − x0 ) · · · (t − xn ), (2.7)
avec an+1 = f [x0 , · · · , xn , x]. D’autre part
f (x) = f (xn+1 ) = Ln+1 (xn+1 ) = Ln+1 (x).
D’après (2.7)
E(x) = f (x) − Ln (x)
= Ln+1 (x) − Ln (x)
= an+1 (x − x0 ) · · · (x − xn )
d’ou l’expression suivante de l’erreur
E(x) = f [x0 , · · · , xn , x](x − x0 ) · · · (x − xn ). (2.8)
Exemple 2.3 Considérons la table suivante de f :
x 1 2 3.5 5 7
f (x) 0 0.6931 1.2528 1.6094 1.9459
On veut obtenir une approximation de f (4.5) par un polynôme d’interpolation de degré
2. Il y a deux possibilités :
1er cas : Interpolation avec les points : x0 = 3.5, x1 = 5 et x2 = 7. La table des différences
divisées est alors :
xi f (xi ) f [xi , xi+1 ] f [x0 , x1 , x2 ]
3.5 1.2528 0.2377 −0.0198
5 1.6094 0.1682
7 1.9459
Le polynôme d’interpolation de degré 2 L2 est alors donné par :
L2 (x) = 1.2528 + 0.2377(x − 3.5) − 0.0198(x − 3.5)(x − 5)
d’ou f (4.5) ' L2 (4.5) = 1.5004.
Cherchons maintenant l’erreur commise en utilisant la relation (2.8). Pour cela considérons
un quatrième nœud x3 = 4.5 et considérons la suite de la table des différences divisées
précédente
xi f (xi ) f [xi , xi+1 ] f [xi , xi+1 , xi+2 ] f [x0 , x1 , x2 , x3 ]
3.5 1.2528 0.2377 −0.0198 −0.0002
5 1.6094 0.1682 −0.0200
7 1.9459 0.1782
4.5 1.5004
On voit donc que f [x0 , x1 , x2 , x3 ] = −0.0002 l’erreur E(4.5) est donc d’après la relation
(2.8) E(4.5) = −2 × 10−4 (4.5 − 3.5)(4.5 − 5)(4.5 − 7) = −0.00025, ce qui donne une erreur
de l’ordre de 2.5 × 10−4 .
2eme cas : Interpolation avec les nœuds : x0 = 2, x1 = 3.5, x2 = 7, (exercice).
2.7. INTERPOLATION PAR FONCTION SPLINE 29

2.7 Interpolation par fonction spline


On verra dans la partie TP que l’utilisation des polynômes de degré élevé est délicate et peut
mener à des erreurs d’interpolations importantes. Une méthode populaire consiste à utiliser dans
chaque intervalle [xi−1 , xi ] un polynôme de degré 3 de la forme

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 :

P1 (x0 ) = f (x0 ), (2.9)


Pn (xn ) = f (xn ). (2.10)

ce qui nous donne 2 équations.


— Par chaque point intérieur xi , i = 1, n − 1 passent 2 polynômes Pi dans [xi−1 , xi ] et Pi+1
dans [xi , xi+1 ], donc

Pi (xi ) = f (xi ), (2.11)


Pi+1 (xi ) = f (xi ), (2.12)

ce qui nous donne 2(n − 1) équations supplémentaires.


— Pour assurer la régularité de la courbe on doit imposer que les dérivées premières et
secondes de ces 2 polynômes soient continues aux points intérieurs

Pi0 (xi ) = Pi+1


0
(xi ), i = 1, n − 1 (2.13)
Pi00 (xi ) = 00
Pi+1 (xi ) = fi00 , i = 1, n − 1, (2.14)

soit 2(n − 1) équations. On a donc au total 2n − 2 + 2n − 2 + 2 = 4n − 2 équations. Il nous


manque donc 2 équations.
Il y a plusieurs conditions à imposer pour obtenir ces 2 équations manquantes. La plus simple
est d’imposer
f000 = fn00 = 0, (2.15)
la spline résultante est appelée spline naturelle. Au total on a 4n équations à 4n inconnues, le
système linéaire peut donc être résolu.

Calcul de la spline naturelle


Dans l’intervalle [xi−1 , xi ] Pi00 est un polynôme de degré 1. D’après l’équation (2.14) Pi00 passe
00
par les 2 nœuds (xi−1 , fi−1 ) et (xi , fi00 ). La formule d’interpolation de Lagrange donne

(x − xi ) (x − xi−1 )
Pi00 (x) = fi−1
00
+ fi00
(xi−1 − xi ) (xi − xi−1 )
30 CHAPITRE 2. INTERPOLATION ET APPROXIMATION POLYNOMIALES

après intégration sur [x, xi ] où x ∈ [xi−1 , xi ]


1 (x − xi )2 1 (x − xi−1 )2
Pi0 (x) = fi−1
00
+ fi00 + αi ,
2 xi−1 − xi 2 xi − xi−1
une seconde intégration donne
1 (x − xi )3 1 (x − xi−1 )3
Pi (x) = fi00 + fi00 + αi (x − xi ) + βi ,
6 xi−1 − xi 6 xi − xi−1
où αi et βi sont des constantes d’intégration. D’après les formule (2.11)-(2.12) Pi passe par les 2
nœuds (xi , yi ) et (xi−1 , yi−1 ) d’ou
1 (xi − xi−1 )3
Pi (xi ) = fi00 + βi = f (xi ), (2.16)
6 xi − xi−1
et aussi
00 1
Pi (xi−1 ) = fi−1 (xi−1 − xi )2 + αi (xi−1 − xi ) + βi = yi−1 , (2.17)
6
la relation (2.16) donne
1
βi = yi − fi00 (xi − xi−1 )2 , (2.18)
6
en remplaçant (2.18) dans (2.17) on obtient

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

Posons hi = xi − xi−1 , on a alors la formule plus compacte


3
(x − xi−1 )3
 
00 (x − xi ) f (xi−1 ) 00 hi
Pi (x) = −fi−1 + fi00 − − fi−1 (x − xi )
 6hi  6hi hi 6 (2.20)
f (xi ) hi
+ − fi00 (x − xi−1 ),
hi 6
qui est l’équation de la spline cubique dans l’intervalle [xi−1 , xi ]. Il reste à utiliser les équations
(2.13) pour déterminer les fi00 . On a d’une part
2
(x − xi−1 )2
 
00 (x − xi ) f (xi−1 ) 00 hi
Pi0 (x) = −fi−1 + fi00 − − fi−1
2hi 2hi hi 6
 
f (xi ) hi
+ − fi00 .
hi 6
D’autre part
− xi+1 )2 2
 
0 (x 00 (x − xi ) f (xi ) hi+1
Pi+1 (x) = −fi00 + fi+1 − − fi00
2hi+1 2hi+1 hi+1 6
 
f (xi+1 ) 00 hi+1
+ − fi+1 .
hi+1 6
En égalisant les deux quantités précédentes on obtient
 
hi hi hi+1 hi+1 00 hi 00 h6 f (xi−1 ) f (xi ) f (xi ) f (xi+1 )
fi00 − − + + fi−1 + fi+1 = − − +
2 6 6 2 6 6 hi hi hi+1 hi+1

et après quelques arrangements


 
hi hi+1 00 hi 00 hi+1 f (xi+1 ) − f (xi ) f (xi ) − f (xi−1 )
fi00 + + fi−1 + fi+1 = − ,
3 3 6 6 hi+1 hi
ou sous forme plus compacte
00
fi+1 hi+1 + 2(hi + hi+1 )fi00 + fi−1
00
hi = 6(f [xi , xi+1 ] − f [xi−1 , xi ]),
or hi + hi+1 = xi+1 − xi + xi − xi−1 = xi+1 − xi−1 d’ou finalement
hi+1 hi
f 00 + 2fi00 + f 00 = 6f [xi−1 , xi , xi+1 ], i = 1, n − 1. (2.21)
hi+1 + hi i hi+1 + hi i−1
Remarque 2.4 1. Pour calculer la spline cubique il faut d’abord résoudre le système (2.21)
pour calculer les fi00 (i = 0, n) puis déterminer le polynôme Pi dans chaque intervalle
[xi−1 , xi ] en utilisant (2.20).
2. Lorsque les points d’interpolation xi sont équidistants c’est à dire hi = h, ∀i = 1, n
alors (2.21) devient
1 00 1 00
fi+1 + 2fi00 + fi−1 = 6f [xi−1 , xi , xi+1 ], i = 1, n − 1, (2.22)
2 2
la matrice du système (2.22) est tridiagonale de la forme AX = B où
1
 
2 2 0 ··· 0
 1 2 1
··· 0 
 2 2 
 .. . . .. .. .. 
A= . . . . . 
 1 1 

 0 ··· 2
2 2
1
0 ··· 0 2 2
32 CHAPITRE 2. INTERPOLATION ET APPROXIMATION POLYNOMIALES

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

hi xi f (xi ) f [xi , xi+1 ] f [xi , xi+1 , xi+2 ]


1 1 1 3 − 16
5
2 2 4 2 − 16
1 4 9 2
5 11

D’après le système (2.21) la première équation est (i = 1)

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).

Calculons maintenant la spline dans l’intervalle [2, 4] :

(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).

Calculons enfin la spline dans l’intervalle [4, 5] :

(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

2.8 La méthode des moindres carrés


On a vu dans les paragraphes précédents que la méthode d’interpolation de Lagrange ou la
méthode des splines permettent d’approcher la valeur d’une fonction inconnue f en un point
distinct des nœuds xi . Il existe une autre méthode appelée méthode des moindres carrés qui
permet d’approcher la fonction f .
Soient (n + 1) nœuds distincts (xi , yi ), i = 0, n et m ≥ 1 un entier fixé. La méthode des moindres
carrés consiste à chercher un polynôme Pem de degré ≤ m qui vérifie
Xn  2 X n
2
yi − Pem (xi ) ≤ (yi − Pm (xi )) , (2.23)
i=0 i=0

ceci pour tout polynôme Pm de degré ≤ m.


Remarque 2.5 L’inégalité (2.23) signifie qu’on cherche un polynôme Pem de degré ≤ m qui
réalise la plus petite distance aux nœuds (xi , yi ). Le polynôme Pem ne passe pas nécessai-
rement par les nœuds (xi , yi ).

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

pour tout polynôme P1 de degré 1. Écrivons que


Pe1 (x) = a0 + a1 x
P1 (x) = b0 + b1 x,
on cherche donc 2 coefficients a0 et a1 tels que
n
X n
X
2 2
(yi − (a0 + a1 x)) ≤ (yi − (b0 + b1 xi )) , (2.24)
i=0 i=0

ceci pour tout (b0 , b1 ) ∈ R2 . Posons


n
X 2
Φ(b0 , b1 ) = (yi − (b0 + b1 xi ))
i=0
n
X
yi2 + b20 + b21 x2i + 2b0 b1 xi − 2b0 yi − 2yi bi xi ,

=
i=0
34 CHAPITRE 2. INTERPOLATION ET APPROXIMATION POLYNOMIALES

la formule (2.24) revient à chercher le minimum (a0 , a1 ) de la fonction Φ c’est à dire

min Φ(b0 , b1 ) = Φ(a0 , a1 ).


(b0 ,b1 )

Le minimum de Φ en (a0 , a1 ) vérifie

∂Φ ∂Φ
(a0 , a1 ) = 0, (a0 , a1 ) = 0,
∂b0 ∂b1

d’ou le système linéaire  n


P n
P
 (n + 1)a0 + xi = yi


i=0 i=0
n n n (2.25)
x2i + a0
P P P
 a1 xi = xi yi


i=0 i=0 i=1

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.

Cas général : m quelconque


Dans le cas général on est amené à résoudre le système linéaire (m + 1) × (m + 1) suivant
 n n n
xm
P P P


 a0 (n + 1) + a1 xi + · · · + am i = yi
 i=0 i=0 i=0
n n n n


x2i + · · · + am xm+1
 P P P P
 a0
 xi + a1 i = xi yi
i=0 i=0 i=0 i=0 (2.26)
 .. ..
. .



n n n n


xm xm+1 x2m xm
 P P P P

 a0 i + a1 i + · · · + am i = i yi .
i=0 i=0 i=0 i=0

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

Pen (xi ) = Ln (xi ) = yi , i = 0, n

la relation (2.23) devient


n
X 2
0≤ (yi − Pn (xi ))
i=0

qui est toujours satisfaite pour tout polynôme Pn de degré ≤ n.


Théorème 2.6 Lorsque m = n le polynôme des moindres carrés Pen coïncide avec le poly-
nôme de Lagrange correspondant aux n nœuds distincts (xi , yi ), i = 0, n.
2.9. APPLICATION AVEC MATLAB 35

Exemple 2.5 Considérons le tableau

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

le determinant du système est : ∆ = 36, donc



5 5 13
1
a0 = 8 13 35 = 1
36

16 35 97

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 .

2.9 Application avec Matlab


2.9.1 Commande polyfit
La commande Matlab polyfit(x,y,n) renvoie le polynôme d’interpolation de degré n qui
interpole les données xi et yi rassemblées dans les vecteurs x et y respectivement. Considérons
la fonction f (x) = cosh(x) et calculons le polynôme d’interpolation de Lagrange aux points
xi = −1 + 0.5i où i = 0, · · · , 4. Comme on a 5 nœuds le polynôme de Lagrange est de degré 4
d’ou

>> 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 =

0.0434 0.0000 0.4996 −0.0000 1.0000

le polynôme de Lagrange est donc L(x) = 0.0434x4 + 0.4996x2 + 1.


36 CHAPITRE 2. INTERPOLATION ET APPROXIMATION POLYNOMIALES

Figure 2.5 – Graphiques du polynôme d’interpolation : en haut à gauche n = 5 ; à droite n = 10 ;


en bas n = 20

2.9.2 Phénomène de Runge


Considérons la fonction suivante
1
f (x) =
1 + x2
Le script runge(n) renvoi le graphe du polynôme de Lagrange de degré n qui interpole la fonction
f aux nœuds xi = −5 + 10 n i pour i = 0, · · · , n.

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

legend ( ’ f ( x ) ’ , ’ ( x_i , y_i ) ’ , ’ p ( x ) ’ ) ;


Dans la figure 2.5 on a tracé les graphiques du polynôme d’interpolation de Lagrange pour
n = 5, 10, 20 ainsi que le graphe de f . On remarque que plus le degré n du polynôme d’in-
terpolation est élevé plus on observe des oscillations de celui-ci aux extrémités de l’intervalle
[−5, 5]. Ce phénomène est connu sous le nom du phénomène de Runge. Le phénomène de Runge
montre les limites de la méthode d’interpolation de Lagrange lorsque les nœds d’interpolation
sont nombreux. Dans ce cas on préfère utiliser la méthode des splines cubiques.

2.9.3 Splines cubiques


Calculons la spline cubique qui interpole la fonction f (x) = sin(2πx) en 21 nœuds équidistants
de l’intervalle [−1, 1]. La commande Matlab s=spline(x,y) renvoie la spline s qui interpole les
données x et y. Le script
>> f=@( x ) sin ( 2 ∗ pi ∗x ) ;
>> x=linspace ( − 1 , 1 , 2 1 ) ;
>> y=f ( x ) ;
>> s=s p l i n e ( x , y ) ;
>> [ x , C]=unmkpp ( s ) ;

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 =

0.8643 −19.6030 1.9517 0.9511


38 CHAPITRE 2. INTERPOLATION ET APPROXIMATION POLYNOMIALES

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

— En déduire que pour tout x


π3
|f (x) − p(x)| ≤ |x(x − 1)(x − 2))| .
48
— Estimer l’erreur pour x = 21 et comparer la à l’erreur effective.
5. On souhaite concevoir un virage d’une voie de chemin de fer entre les points (0, 0) et (1, 1).
Le virage est décrit par une courbe de la forme y = f (x) qui satisfait :
f (0) = 0, f (1) = 1
De plus pour assurer une transition en douceur, la pente de la courbe doit satisfaire :
f 0 (0) = 0, f 0 (1) = 0.3
On représente la courbe à l’aide d’un polynôme dans l’intervalle [0, 1].
(a) Quel est le degré minimal que ce polynôme devra avoir pour remplir toutes les condi-
tions ?
(b) Calculer ce polynôme.
6. Considérons la fonction f (x) = 2 sin x + 3 cos x (x est en radians).
— Calculer le polynôme d’interpolation de degré 2 puis de degré 3 en des points équidis-
tants de l’intervalle [0, π].
— Estimer la valeur de f ( π4 ) à l’aide des deux polynômes précédents. Quelles sont les
erreurs commises ?
— Écrire le terme de l’erreur dans chaque cas et donner une majoration de la valeur
absolue de l’erreur en fonction de x. En déduire les majorations des erreurs commises en
x = π4 et comparer par rapport à celles obtenues dans la deuxième question.
— Calculer la spline cubique naturelle passant par quatre points équidistants de [0, π] et
proposer une estimation de f ( π4 ).
—Calculer le polynôme des moindres carrés de degré 2 qui approche f aux nœuds précé-
dents. Proposer une approximation de f ( π4 ) à l’aide de ce polynôme et en déduire l’erreur
correspondante.
— Parmi les trois méthodes précédentes quelle est celle qui est la plus précise ?
7. Dans cet exercice on reprend l’exemple du phénomène de Runge de la section 2.9.2. Consi-
dérons pour cela les nouveaux points d’interpolation appelés nœuds de Tchebytchev
xi = −5 cos πi

n , i = 0, · · · , n

A l’aide de Matlab tracer le graphe du polynôme d’interpolation de Lagrange de la fonction


f aux nœuds de Tchebychev xi . Comparer par rapport aux nœuds d’interpolation utilisés
dans la section 2.9.2. Que remarque-t-on ? Justifier votre réponse.
8. Application à la climatologie
Le tableau suivant représente la variation moyenne annuelle de la température de la Terre
à différentes latitudes :
Lati 65 55 45 35 25 15 5 -5 -15 -25 -35
temp -3.1 -3.22 -3.3 -3.32 -3.17 -3.07 -3.02 -3.02 -3.12 -3.2 -3.35
— Donner une estimation de la température pour une latitude de -30 en utilisant le
polynôme de Lagrange et la spline cubique.
— Donner l’expression de la spline cubique sur l’intervalle [45, 55].
— Tracer dans le même repère, à l’aide de l’interface graphique de Matlab, le graphe du
polynôme de Lagrange ainsi que la spline cubique qui interpolent les nœuds précédents.
Lequel des deux approchent le mieux les données précédentes.
40 CHAPITRE 2. INTERPOLATION ET APPROXIMATION POLYNOMIALES
Chapitre 3

Dérivation et Intégration
Numériques

3.1 Dérivation numérique


Soit une fonction f qui est connue seulement en (n + 1) points (x0 , f (x0 )), · · · , (xn , f (xn )).
Dans ce chapitre on voudrai trouver une approximation de la dérivée f 0 en un point x ∈ [x0 , xn ].
L’idée de départ est d’utiliser le polynôme d’interpolation Ln . On sait que

f (x) = Ln (x) + En (x), (3.1)

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

f 0 (x) = L0n (x) + En0 (x). (3.3)

Une première approximation de f 0 (x) est donc la dérivée du polynôme d’interpolation en x

f 0 (x) ' L0n (x).

L’erreur due à cette approximation est En0 (x). Calculons En0 (x), on a partir de (3.2)

f (n+2) (ξ(x))ξ 0 (x) f (n+1) (ξ(x)) 0


En0 (x) = (x − x0 ) · · · (x − xn ) + [(x − x0 ) · · · (x − xn )]
(n + 1)! (n + 1)!
0
Calculons la dérivée [(x − x0 ) · · · (x − xn )] par récurrence sur n.
0
n = 1 : [(x − x0 )(x − x1 )] = (x − x0 ) + (x − x1 )
n=2:
2 2
0
X Y
[(x − x0 )(x − x1 )(x − x2 )] = (x−x1 )(x−x2 )+(x−x0 )(x−x2 )+(x−x0 )(x−x1 ) = (x−xj ).
k=0 j=0,j6=k

41
42 CHAPITRE 3. DÉRIVATION ET INTÉGRATION NUMÉRIQUES

Par récurrence on obtient


n n
0
X Y
[(x − x0 ) · · · (x − xn )] = (x − xj ).
k=0 j=0,j6=k

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

En particulier on a aux points d’interpolation xi


n
f (n+1) (ξi ) Y
En0 (xi ) = (xi − xj ).
(n + 1)!
j=0,j6=i

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 ).

3.1.1 Formules à deux points


Considérons le cas de deux noeuds (x0 , f (x0 ), (x1 , f (x1 )) et calculons la dérivée approchée
ainsi que le reste d’une fonction f qui passe par les deux points (x0 , f (x0 )), (x1 , f (x1 )) en x0 et
x1 . On a d’après la relation (3.3)

f 0 (x) = L01 (x) + E10 (x), (3.5)

où L1 est le polynôme d’interpolation de degré 1 de f aux noeuds x0 et x1 . On a d’après la


formule de Newton
L1 (x) = f (x1 ) + f [x0 , x1 ](x − x0 )
d’ou d’après (3.5)

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 .

3.1.2 Formules à trois points


Passons maintenant aux polynômes de degré 2. Soit f une fonction connue seulement en 3
points x0 , x1 , x2 . On a alors d’après (3.3)

f 0 (x) = L02 (x) + E20 (x),

où L2 (x) = f (x0 ) + f [x0 , x1 ](x − x0 ) + f [x0 , x1 , x2 ](x − x0 )(x − x1 ), d’ou

L02 (x) = f [x0 , x1 ] + f [x0 , x1 , x2 ](2x − (x0 + x1 )).

En x = x0 :

P20 (x0 ) = f [x0 , x1 ] + f [x0 , x1 , x2 ](x0 − x1 )


 
f (x1 ) − f (x0 ) x1 − x0 f (x2 ) − f (x1 ) f (x1 ) − f (x0 )
= − −
x1 − x0 x2 − x0 x2 − x1 x1 − x0
 
f (x1 ) − f (x0 ) h f (x2 ) − f (x1 ) f (x1 ) − f (x0 )
= − −
h 2h h h
4f (x1 ) − 3f (x0 ) − f (x2 )
= .
2h
En prenant n = 2 dans (3.4) on obtient

h2 000 h2 000
E20 (x0 ) = f (ξ0 )(0 − 1)(0 − 2) = f (ξ0 ),
6 3
où ξ0 ∈ [x0 , x2 ], d’ou la relation

4f (x1 ) − 3f (x0 ) − f (x2 ) h2 000


f 0 (x0 ) = + f (ξ0 ). (3.8)
2h 3
La formule (3.8) est dite formule à trois points à droite de x0 .

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

L’erreur est donc E2 (0) = 8.7 × 10−4 .


Centrée en x = 0 : On a x0 = −0.05, x1 = 0, x2 = 0.05. D’après (3.9)
e0.05 − e−0.05
f 0 (0) = f 0 (x1 ) ' = 1.0005.
0.1
L’erreur est donc E2 (0) = 5 × 10−4 . La formule centrée est donc la plus précise des trois
formules.
Remarque 3.1 En général les formules centrées sont plus précises que les formules de dé-
rivation approchée à droite et à gauche puisqu’elles tiennent compte de la valeur de la
fonction f à droite et à gauche de x0 .

3.1.3 Dérivée d’ordre supérieur


Pour approcher les dérivées supérieures d’une fonction f l’idée est la même que dans le cas
d’ordre 1 puisqu’il suffit d’utiliser la formule (3.1) qui consiste à approcher la fonction f par son
polynôme d’interpolation Ln et de dériver f autant de fois que nécessaire.

Soient x0 , x1 , x2 trois points équidistants avec x2 −x1 = x1 −x0 = h. Le polynôme L2 de Newton


qui interpole les points x0 , x1 , x2 est donné par
L2 (x) = f (x0 ) + f [x0 , x1 ](x − x0 ) + f [x0 , x1 , x2 ](x − x0 )(x − x1 ), (3.11)

où f [x0 , x1 ] = f (x1 )−f


h
(x0 )
et f [x0 , x1 , x2 ] = f (x2 )−2f2h
(x1 )+f (x0 )
2 . En dérivant deux fois les deux
cotés de la formule (3.1) on a
00 00 00
f (x) = L2 (x) + E2 (x).
D’autre part d’après (3.11)
00
L2 (x) = 2f [x0 , x1 , x2 ]
00
Une valeur approchée de f (x) est donc
00 00 f (x2 ) − 2f (x1 ) + f (x0 )
f (x) ' L2 (x) = . (3.12)
h2
La formule (3.12) est vraie pour tout point x ∈ (x0 , x2 ), en particulier aux nœuds xi ,
00f (x2 ) − 2f (x1 ) + f (x0 )
f (xi ) ' , i = 0, 1, 2.
h2
Il nous reste à déterminer le terme de l’erreur aux nœuds xi , i = 0, 1, 2. Pour déterminer l’erreur
en x1 par exemple supposons que f est de classe C 4 ([x0 , x1 ]) et écrivons les développements
limités de f en x0 et x2 à l’ordre 4
0 2 00 3 000 4
f (x0 ) = f (x1 ) − hf (x1 ) + h2 f (x1 ) − h6 f (x1 ) + h24 f (4) (ξ1 ),
0 2 00 3 000 4
f (x2 ) = f (x1 ) + hf (x1 ) + h2 f (x1 ) + h6 f (x1 ) + h24 f (4) (ξ2 )
avec ξ1 , ξ2 ∈ (x0 , x2 ), d’ou
h4  (4) 00

f (x0 ) − 2f (x1 ) + f (x2 ) = h2 f (x1 ) +f (ξ1 ) + f (4) (ξ2 ) .
24
On obtient finalement la formule suivante avec le reste de l’erreur
00 f (x0 ) − 2f (x1 ) + f (x2 ) h2  (4) (4)

f (x1 ) = − f (ξ1 ) + f (ξ2 ) .
h2 24
Le théorème suivant résume ce qui précède.
46 CHAPITRE 3. DÉRIVATION ET INTÉGRATION NUMÉRIQUES

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 f (x0 ) − 2f (x1 ) + f (x2 ) h2  (4) 


f (x1 ) = 2
− f (ξ1 ) + f (4) (ξ2 ) . (3.13)
h 24
De plus on a l’estimation de l’erreur suivante
2

f (x1 ) − f (x0 ) − 2f (x1 ) + f (x2 ) ≤ h max |f (4) (x)|.
00
(3.14)
h2 12 x∈[x0 ,x2 ]

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 .

3.2 Intégration numérique


Dans ce chapitre on veut développer des méthodes numériques pour l’approximation des
intégrales du type
Z b
f (x)dx.
a

On parle alors de méthodes d’intégration numériques. On a vu au chapitre 2 qu’une fonction f


peut être approchée à l’aide d’un polynôme

f (x) = Lm (x) + Em (x), (3.15)

où Lm est le polynôme de degré m interpolant la fonction f et Em est l’erreur associée. En


intégrant les deux membres de (3.15) sur (a, b) on obtient
Z b Z b Z b
f (x)dx = Lm (x)dx + Em (x)dx (3.16)
a a a

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

o x0 x1 ··· xi xi+1 · · · xn−1 xn x

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.

3.2.1 Méthode des trapèzes


Soit a = x0 < x1 < · · · < xn = b une subdivision uniforme de l’intervalle [a, b] de "pas"
h = xi+1 − xi . On a alors
Z b n−1
X Z xi+1
f (x)dx = f (x)dx. (3.17)
a i=0 xi
Rx
On voudrai maintenant trouver une approximation de l’intégrale xii+1 f (x)dx. Pour cela on
approche f par un polynôme de degré 1 (m = 1 dans (3.16)) qui interpole la fonction f aux
nœuds xi et xi+1 , d’ou
Z xi+1 Z xi+1 Z xi+1
f (x)dx = L1 (x)dx + E1 (x)dx,
xi xi xi

avec

= f (xi ) + f [xi , xi+1 ](x − xi )


L1 (x)
(x − xi )(x − xi+1 ) 00
E1 (x) = f (ξi ),
2
Rx
où ξi ∈ (xi , xi+1 ). Posons Ii = xii+1 L1 (x)dx, on a alors
Z xi+1
Ii = f (xi ) + f [xi , xi+1 ](x − xi )dx
xi
h
= (f (xi ) + f (xi+1 )).
2
D’un autre coté
Z xi+1 Z xi+1
1
Ri = E1 (x)dx = (x − xi )(x − xi+1 )f 00 (ξi )dx. (3.18)
xi 2 xi

Pour simplifier l’expression précédente on utilise le lemme suivant.


48 CHAPITRE 3. DÉRIVATION ET INTÉGRATION NUMÉRIQUES

Lemme 3.1 (Théorème de la moyenne)


Soient f et g deux fonctions continues sur un intervalle [α, β] telle que g ne change pas de
signe sur [α, β]. Alors il existe η ∈ [α, β] tel que
Z β Z β
f (x)g(x)dx = f (η) g(x)dx.
α α

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

d’ou la formule dite du trapèze


n−1
!
b
h3 00
Z
h X
f (x)dx = f (x0 ) + 2 f (xi ) + f (xn ) − f (η), a ≤ η ≤ b.
a 2 i=0
12

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

x0 x1 x2 ··· xi xi+1 xi+2 x

Figure 3.2 – Méthode de Simpson : Le graphe en trait discontinue représente le polynôme


d’interpolation de degré 2 de f aux points xi , xi+1 , xi+2 .

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.

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.

3.2.2 Méthode de Simpson


La méthode de Simpson consiste à approcher la fonction f par un polynôme de degré 2 dans
chaque sous-intervalle de la subdivision. Pour cela il nous faut trois points d’interpolation. On
50 CHAPITRE 3. DÉRIVATION ET INTÉGRATION NUMÉRIQUES

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

Erreur de la méthode de Simpson


L’erreur de la méthode de Simpson sur chaque sous-intervalle [xi , xi+2 ] est donnée par
Z xi+2
(x − xi )(x − xi+1 )(x − xi+2 ) 00
Ri = f (ξi )dx,
xi 6

x xi xi+1 xi+2
p(x) 0 + 0 − 0

Signe du polynôme p(x) = (x − xi )(x − xi+1 )(x − xi+2 )


malheureusement comme le montre le tableau précédent le polynôme p(x) = (x−xi )(x−xi+1 )(x−
xi+2 ) change de signe sur [xi , xi+2 ] on ne peut donc pas appliquer le Théorème de la moyenne.
Pour cela fixons x ∈ (xi , xi+2 ) et considérons la fonction en t
(t − xi )(t − xi+1 )2 (t − xi+2 )
θ(t) = f (t) − L2 (t) − (f (x) − L2 (x)) ,
(x − xi )(x − xi+1 )2 (x − xi+2 )
avec x 6= xi , xi+1 , xi+2 . On a θi (xi ) = θi (xi+1 ) = θ(xi+2 ) = θ(x) = 0 avec xi+1 une racine
double. La fonction θ possède donc 5 racines. D’après le Lemme 2.1 existe ηi ∈ (xi , xi+2 ) tel que
θ(4) (ηi ) = 0, d’ou
4!
θ(4) (ηi ) = f (4) (ηi ) − (f (x) − L2 (x))
(x − xi )(x − xi+1 )2 (x − xi+2 )
= 0,
3.2. INTÉGRATION NUMÉRIQUE 51

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

d’ou la formule approchée de Simpson


Z b
h
f (x)dx ' [f (x0 ) + 2 (f (x2 ) + f (x4 ) + · · · + f (x2n−2 )) + 4 (f (x1 ) + · · · + f (x2n−1 )) + f (x2n )] .
a 3
Pour ce qui est du reste on a d’après (3.22)
n−1
P n−1
P h5 h5
|Ri | ≤ M4 = nM4
i=0 i=0 90 90
52 CHAPITRE 3. DÉRIVATION ET INTÉGRATION NUMÉRIQUES

b−a
or n = d’ou
2h
n−1
X (b − a)h4
|Ri | ≤ M4
i=0
180

qui est le reste de la formule de Simpson.


Théorème 3.3 Soient f une fonction de classe C 4 sur un intervalle [a, b] et a = x0 < x1 <
· · · < xn = b une subdivision uniforme de [a, b] de "pas" h. Alors on a la formule suivante
dite de Simpson
Rb h
a
f (x)dx = [f (x0 ) + 2 (f (x2 ) + f (x4 ) + · · · + f (x2n−2 )) + 4 (f (x1 ) + · · · + f (x2n−1 ))
3
+f (x2n )] + R,
(3.25)
où le reste R vérifie
(b − a)h4
|R| ≤ M4 , (3.26)
180
avec M4 = max |f (4) (x)|.
x∈[a,b]

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.

3.3 Applications avec Matlab


3.3.1 Calcul dans le work-space
En utilisant les formules à trois points calculons trois valeurs approchées de la dérivée de
la fonction f (x) = ex sin2 x en x = 0 en prenant h = 0.1. Le script suivant calcule la dérivée
approchée en utilisant la formule centrée en x = 0.
3.3. APPLICATIONS AVEC MATLAB 53

>> f=@( x ) exp ( x ) . ∗ sin ( x ) . ^ 2 ;


>> %on donne l e v e c t e u r x c o n t e n a n t l e s noeuds
>> % dont l e c e n t r e e s t 0
>> x=[ −0.1 0 0 . 1 ] ;
>> y=f ( x ) ;
>> % on c a l c u l e l e polynôme d ’ i n t e r p o l a t i o n p1
>> p1=p o l y f i t ( x , y , 2 ) ;
>> %p u i s on d é r i v e l e polynôme d ’ i n t e r p o l a t i o n p1
>> pp1=polyder ( p1 ) ;
>> %e n f i n on é v a l u e l a d é r i v é e du polynôme d ’ i n t e r p o l a t i o n pp1 en x=0
>> f d e r 1=polyval ( pp1 , 0 )

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).

3.3.2 Effet des erreurs d’arrondis


Dans ce TP on veut tester les formules de dérivation approchées. Considérons la fonction
f (x) = tan x et calculons f 0 (1) et f 00 (1) à l’aide des formules approchées (3.8), (3.9), (3.10) et
(3.13) ceci pour différentes valeurs du "pas" h. Le script der(h) renvoi le vecteur er (resp : eer)
constitué des erreurs commises lorsque l’on approche f 0 (1) (resp : f 00 (1)) par les formules à trois
points avec un "pas" h.
function [ er , e e r ]= d e r ( h )
%a p p r o x i m a t i o n de l a d é r i v é e p r e m i è r e
f=@tan ;
%v a l e u r e x a c t e de l a d é r i v é e en 1
y=tan ( 1 ) ^ 2 + 1 ;
%v a l e u r e x a c t e de l a d é r i v é e s e c o n d e en 1
yy1=2∗tan ( 1 ) ∗ ( tan ( 1 ) ^ 2 + 1 ) ;
%d é r i v a t i o n a d r o i t e de 1
y1 =(4∗ f (1+h)−3∗ f (1) − f (1+2∗h ) ) / ( 2 ∗ h ) ;
% d r i v a t i o n c e n t r é e en 1
y2=( f (1+h)− f (1−h ) ) / ( 2 ∗ h ) ;
%d é r i v a t i o n a gauche de 1
y3=(−4∗ f (1−h)+3∗ f (1−2∗h)+ f ( 1 ) ) / ( 2 ∗ h ) ;
%l e s e r r e u r s commises
e r 1=abs ( y−y1 ) ;
e r 2=abs ( y−y2 ) ;
e r 3=abs ( y−y3 ) ;
%v e c t e u r c o n t e n a n t l e s e r r e u r s
e r =[ e r 1 e r 2 e r 3 ] ;
%a p p r o x i m a t i o n de l a d é r i v é e s e c o n d e
yy=( f (1+h)−2∗ f (1)+ f (1−h ) ) / h ^ 2 ;
e e r=abs ( yy−yy1 ) ;
54 CHAPITRE 3. DÉRIVATION ET INTÉGRATION NUMÉRIQUES

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.

3.3.3 Méthodes des trapèzes et de Simpson


Méthode des trapèzes
1 R1
Calculons l’intégrale I = 0
dx par la méthode des trapèzes. Le script suivant retourne
1+x
la valeur IT de I par la méthode des trapèzes
>> f=@( x ) 1 . / ( 1 + x ) ;
>> x=0:0.1:1;
>> y=f ( x ) ;
>> IT=trapz ( x , y )

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.

3.3.4 Commande Matlab quad


La commande Matlab quad(f,a,b) qui reçoit en argument une fonction f et deux réels
Rb
a et b renvoie la valeur approchée de l’intégrale a f (x)dx par la méthode dite de Simpson
adaptative. L’algorithme utilisé choisit automatiquement la subdivision de l’intervalle [a, b] de
R1 1
sorte à minimiser l’erreur commise. Par exemple pour évaluer l’intégrale I = 0 dx on
1+x
procède comme suit
>> quad( ’ 1./(1+ x ) ’ , 0 , 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

f (xi−2 ) − 6f (xi−1 ) + 3f (xi ) + 2f (xi+1 )


(b) f 0 (xi ) '
6h
0 −f (xi−2 ) − 12f (xi ) + 16f (xi+1 ) − 3f (xi+2 )
(c) f (xi ) '
12h
— Calculer le terme de l’erreur dans chacun des trois cas précédents.
Application : Considérons la fonction f (x) = ex , h = 0.1 et x = 0. Calculer à l’aide des
formules précédentes une valeur approchée de f 0 (0). Comparer avec la valeur exacte.
3. En utilisant des développements limités de différents ordres trouver une formule de déri-
vation approchée pour calculer f 00 (x) en fonction de f (x + 2h), f (x + h), f (x), f (x − h)
et f (x − 2h).
— En déduire le terme de l’erreur de cette méthode.
Application : (Détection d’un avion par un radar)
Un avion est suivit par un radar en mesurant toute les deux secondes sa position en
coordonnées polaires (r, θ) :
t(secondes) 200 202 204 206 208 210
θ(radians) 0.75 0.72 0.70 0.68 0.67 0.66
r(mètres) 5120 5370 5560 5800 6030 6240

— Sachant que le vecteur vitesse →−


v de l’avion et le vecteur accélération →

a sont donnés
par :


−v = ṙ→

er + rθ̇→

eθ , →a = r̈ − rθ̇2 →
− er + rθ̈ + 2ṙθ̇ →
− −
   
eθ ,

calculer le vecteur vitesse et le vecteur accélération à l’instant t = 206 secondes en appro-


chant la dérivée première par une formule de différence centrées et la dérivée seconde par
la formule trouvée précédemment.
4. Soit f une fonction de classe C 4 sur un intervalle [a, b] dont on connaît les valeurs aux
points équidistants xi , xi+1 = xi + h, xi+2 = xi + 2h, xi−1 = xi − h et xi−2 = xi − 2h.
On veut approcher f 000 (xi ) par la formule suivante

f (xi+2 ) − 2f (xi+1 ) + 2f (xi−1 ) − f (xi−2 )


f 000 (xi ) '
2h3
— Trouver le terme de l’erreur de cette formule.
5. Calculer l’intégrale
Z 2
2
e−x dx
0

par la méthode des trapèzes puis par la méthode de Simpson en prenant n = 4.


— Combien de sous-intervalles doit-on prendre pour approcher l’intégrale précédente à
10−3 près par les méthodes du trapèze et de Simpson.
6. Trouver la meilleure stratégie pour calculer une valeur approchée de l’intégrale suivante :
Z 1
2
x − 1
dx,
0
4

on s’arrangera à ce que la précision soit la meilleure possible.


3.3. APPLICATIONS AVEC MATLAB 57

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

et calculer L(0). En déduire une valeur approchée de I.


8. Soit 0 < α ≤ 1 un nombre réel donné, soit x1 = −α, x2 = 0, x3 = α et soit w1 , w2 , w3
trois nombres réels. Considérons la formule de quadrature suivante
Z 1
f (x)dx ' w1 f (x1 ) + w2 f (x2 ) + w3 f (x3 ) (3.28)
−1

où f est une fonction continue sur [−1, 1].


— Trouver w1 , w2 , w3 en fonction de α de sorte que la formule (3.31) soit exacte pour
tout polynôme de degré ≤ 2.
— Montrer qu’avec de tels poids la formule (3.31) est également exacte pour tout polynôme
de degré ≤ 3.
— Posons α = 1. Quelle est la formule ainsi obtenue ?
— Calculer l’intégrale
Z 1
(x + 1)(x2 − 1)dx
−1

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

où les ti sont les racines du polynôme de Legendre défini par :


1 dn 2
Pn (x) = (x − 1)n , n ≥ 0,
n!2n dxn
et les wi sont les poids d’intégration donnés par :
2
wi = 2, 1 ≤ i ≤ n.
(1 − t2i ) [Pn0 (ti )]

— Donner la formule de Gauss-Legendre dans le cas de 3 points.



Application : Calculer l’intégrale 02 sin xdx par la méthode de Gauss-Legendre à trois
points puis par la méthode de Simpson. Lesquelles des deux méthodes est la plus précise ?
Pouvait-on prévoir ce résultat ?
Rb
— Écrire un script Matlab qui renvoi une valeur approchée de l’intégrale a f (x)dx par
la méthode de Gauss-Legendre.
Chapitre 4

Résolution des Équations non


Linéaires

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

Figure 4.1 – Racine α de l’équation f (x) = 0 : f (a)f (b) < 0.

59
60 CHAPITRE 4. RÉSOLUTION DES ÉQUATIONS NON LINÉAIRES

4.2 Séparation des Racines


Avant toute chose il nous faudra au départ localiser les racines de l’équation (4.1) c’est à dire
trouver un intervalle [a, b] qui contient une et une seule racine de (4.1) (voir figure 4.1). Pour
cela on utilise le théorème suivant :
Théorème 4.1 Soit f une fonction continue sur [a, b]. Si f (a)f (b) < 0 alors f possède au
moins une racine α ∈ (a, b). De plus si f est dérivable sur (a, b) et si f 0 (x) 6= 0 ∀x ∈ (a, b)
alors la racine α de l’équation (4.1) est unique.
Remarque 4.1 Si l’équation f (x) = 0 possède plusieurs racines dans l’intervalle (a, b) alors
il faut trouver des intervalles plus petits contenant chacun une et une seule racine.
Exemple 4.1 Localiser les racines de l’équation suivante dans l’intervalle [−1, 1]

4x3 − 2x2 − 2x + 1 = 0. (4.2)

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

f 0 (x) = 12x2 − 4x − 2 = 2(6x2 − 2x − 1).

Comme f 0 est un polynôme de degré 2 il s’annule donc en x1 = 0.6 et x2 = −0.27. D’ou


le tableau de variations
x −1 −0.27 0.6 1
0 + − +
f 0 0
1.39 1
f
−3 −0.41

Tableau de variations de la fonction f


D’après le tableaux de variations de f l’équation (4.1) possède 3 racines dans l’intervalle
[−1, 1]. Une racine unique dans l’intervalle [−1, −0.27] une racine unique dans [−0.7, 0.6]
et une troisième racine dans l’intervalle [0.6, 1]. Dans cet exemple on a localisé chacune
des trois racines de (4.2).

4.3 Méthode de Dichotomie


Soit f une fonction qui possède une unique racine α dans l’intervalle [a, b]. La méthode de
dichotomie ou bissection consiste à diviser en deux l’intervalle [a, b] et à choisir le sous-intervalle
où f change de signe (voir figure 4.2).
Posons au départ I0 = [a0 , b0 ] avec a0 = a, b0 = b et notons par x0 = a0 +b 2
0
le milieu de
l’intervalle I0 . Si f (a0 )f (x0 ) < 0 alors la racine α est dans l’intervalle [a0 , x0 ]. Posons de nouveau
I1 = [a1 , b1 ] avec a1 = a0 et b1 = x0 . On divise de nouveau l’intervalle [a1 , b1 ] en deux parties
[a1 , x1 ] et [x1 , b1 ] avec x1 = a1 +b
2
1
et on teste de nouveau si f (a1 )f (x1 ) < 0.
A l’étape k ≥ 1 on obtient une suite (xk ) telle que xk = ak +b 2
k
avec |Ik | = b−a 2k
où |Ik | désigne
la longueur de l’intervalle Ik . De plus chaque intervalle Ik contient la racine α de l’équation
f (x) = 0, d’ou
|xk − α| ≤ b−a
2k
, k ≥ 0. (4.3)
4.3. MÉTHODE DE DICHOTOMIE 61

y f

o
| | | • | |
a x0 x1 α x2 b x

Figure 4.2 – Méthode de Dichotomie

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)

Remarque 4.2 1. On remarque que la méthode de dichotomie ne suppose aucune condition


particulière sur régularité de la fonction f . La seule condition est que la fonction f change
de signe dans l’intervalle [a, b]. La figure 4.3 montre l’exemple d’une fonction f qui admet
une racine unique dans l’intervalle [a, b] mais qui ne change pas de signe sur cet intervalle.
On ne peut donc pas appliquer la méthode de dichotomie dans un tel cas.
2. Le nombre d’itérations dans la formule (4.5) est indépendant de la fonction f . Ceci est
une propriété importante de la méthode de dichotomie. On verra dans la partie TP qu’un
inconvénient majeur de cette méthode est qu’elle converge lentement.

Exemple 4.2 Calculer 2 avec une calculatrice dotée seulement des quatre opérations élé-
mentaires. √
Posons α = 2 d’ou α2 − 2 = 0, α est donc une racine de l’équation

x2 − 2 = 0.

Posons f (x) = x2 − 2. f est continue et dérivable sur R et f (1) = −1, f (2) = 1. f


0
possède donc au moins une racine dans l’intervalle [1, 2]. De plus f (x) = 2x 6= 0 pour
tout x ∈ (1, 2). La racine α est donc unique dans l’intervalle (1, 2).
Calculons cette racine par la méthode de dichotomie avec  = 10−2 . Pour cela calculons
le nombre d’itérations k à l’aide de la formule (4.5). On a
2−1

ln 10 −2
k≥ = 6.64,
ln(2)
1+2
comme k est un entier on prend k = 7. De plus a0 = 1, b0 = 2, x0 = 2 = 1.5. D’ou le
tableau suivant
62 CHAPITRE 4. RÉSOLUTION DES ÉQUATIONS NON LINÉAIRES

| • |
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

Figure 4.4 – Le point fixe α est l’intersection du graphe de g et de la droite y = x

k ak bk xk f (ak ) f (bk ) f (xk )


0 1 2 1.5 −1 2 0.25
1 1 1.5 1.25 −1 0.25 −0.437
2 1.25 1.5 1.375 −0.437 0.25 −0.109
3 1.375 1.5 1.437 −0.109 0.25 0.066
4 1.375 1.437 1.406 −0.109 0.066 −0.0232
5 1.406 1.437 1.414 −0.022 0.021 −0.0004
6 1.406 1.421 1.413 −0.0232 0.019 −0.0034
7 1.413 1.421 1.417 −0.0034 0.0192 0.0079
Méthode de Dichotomie
une valeur approchée de la racine est donc α ' 1.41 à 10−2 près par la méthode de
dichotomie.

4.4 Méthode du Point Fixe


4.4.1 Notion de Point Fixe
Définissons d’abord ce qu’est un point fixe d’une fonction g.
Définition 4.1 Un point fixe d’une fonction g est une valeur α dont l’image par g est égale
à elle même c’est à dire
g(α) = α
4.4. MÉTHODE DU POINT FIXE 63

Géométriquement α est l’intersection du graphe de g avec la première bissectrice y = x (voir


figure 4.4).
Il existe un algorithme très simple permettant de déterminer les points fixe d’une fonction g. A
partir d’une valeur de départ x0 on effectue les itérations suivantes

x0 ,
(4.6)
xk+1 = g(xk ), k ≥ 0.

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.

4.4.2 Convergence de la Méthode du Point Fixe


L’algorithme du point fixe (4.6) ne converge pas toujours. Le théorème suivant donne des
conditions suffisantes pour assurer la convergence de cet algorithme.
Théorème 4.2 Soit g une fonction continue telle que :
(i) g : [a, b] → [a, b]
(ii) g est de classe C 1 ([a, b]) et |g 0 (x)| ≤ K < 1 pour tout x ∈ [a, b].
Alors pour tout x0 ∈ [a, b], l’algorithme du point fixe (4.6) converge vers l’unique point
fixe α de g. De plus on l’estimation d’erreur suivante :

|xk − α| ≤ K k |b − a|, ∀k ≥ 1. (4.7)

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

|xk+1 − xk | = |g(xk ) − g(xk−1 )| = |g 0 (ck )||xk − xk−1 |,

où ck est située entres xk et xk−1 . L’hypothèse (ii) du théorème entraîne

|xk+1 − xk | ≤ K|xk − xk−1 |.


64 CHAPITRE 4. RÉSOLUTION DES ÉQUATIONS NON LINÉAIRES

Par récurrence on obtient


|xk+1 − xk | ≤ K|xk − xk−1 | ≤ K 2 |xk−1 − xk−2 | ≤ · · · ≤ K k |x1 − x0 | (4.8)
Montrons maintenant que la suite (xk ) est de Cauchy. Soient n ≥ p deux entiers, on a
d’après (4.8)
|xn − xp | = |xn − xn−1 + xn−1 − · · · + xp+1 − xp |
≤ |xn − xn−1 | + |xn−1 − xn−2 | + · · · + |xp+1 − xp |
≤ K n−1 |x1 − x0 | + K n−2 |x1 − x0 | + · ·· + K p |x1 − x0 |
= |x1 − x0 | K n−1 + K n−2 + · · · + K p
1 − K n−p
= |x1 − x0 |K p
1−K
1
≤ |x1 − x0 |K p .
1−K
1
Comme K p → 0 lorsque p → +∞ on déduit d’après la relation précédente que
1−K
|xn − xp | → 0 lorsque n ≥ p → +∞. La suite (xk ) est de Cauchy. Il existe donc α tel que
xk → α, k → +∞.
En prenant la limite lorsque k → +∞ des deux cotés de la seconde relation de (4.6) on
obtient compte tenu de la continuité de g
α = g(α). (4.9)
α est donc un point fixe de g.
Pour montrer l’unicité du point fixe de g supposons que g admet un second point fixe β
tel que β = g(β). Comme α = g(α) on a alors d’après la seconde hypothèse du théorème
|α − β| = |g(α) − g(β)| ≤ K|α − β| < |α − β|,
ce qui est une contradiction. Le point fixe de g est donc unique dans [a, b].
Montrons maintenant l’inégalité (4.7). On a d’après la définition de (xk ), (4.9) et l’hypo-
thèse (ii) du théorème
|xk − α| = |g(xk−1 ) − g(α)| ≤ K|xk−1 − α|.
Par récurrence sur k on obtient
|xk − α| ≤ K k |x0 − α|.
Or puisque x0 , α ∈ [a, b] alors |x0 − α| ≤ b − a d’ou
|xk − α| ≤ K k |b − a|.
Soit  > 0 un ordre de précision et supposons qu’on identifie le terme xk de la suite à α,
l’erreur absolue commise est alors ek = |xk − α|. Pour que l’erreur commise soit inférieure
ou égale à  il suffit d’après (4.7) que
K k (b − a) ≤ ,
d’ou  

ln
b−a
k≥ . (4.10)
ln(K)
La relation précédente nous donne le test d’arrêt de la méthode du point fixe. L’entier k
donné par la relation (4.10) est le plus petit entier qui vérifie (4.7). 
4.4. MÉTHODE DU POINT FIXE 65

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)

dans l’intervalle [0, 1]. Écrivons l’équation sous la forme

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.

4.4.3 Ordre de Convergence


Définition 4.2 Soit α une racine de l’équation f (x) = 0 et soit (xn ) une suite associée à
une méthode numérique convergeant vers la racine α. On dit que la méthode numérique
est d’ordre k si
xn+1 − α
lim = ak 6= 0.
n→∞ (xn − α)k

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 − α)

Si g 0 (α) 6= 0 alors la méthode du point fixe est d’ordre 1.


(ii) Supposons de plus que g est de classe C 2 et que g 0 (α) = 0 et g 00 (α) 6= 0, alors
xn+1 − α 1
lim = g 00 (α).
n→∞ (xn − α) 2
La méthode du point fixe est dans ce cas d’ordre 2.
4.5. MÉTHODE DE NEWTON 67

f
x0 x1 x2
•• • •
o α x

Figure 4.6 – La méthode de Newton

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

xn+1 − α = g(xn ) − g(α) = g 0 (cn )(xn − α),

d’ou
xn+1 − α
lim = lim g 0 (cn ) = g 0 (α) 6= 0,
n→∞ (xn − α) n−→∞

car g 0 est continue et cn → α lorsque n → ∞. La méthode du point fixe converge donc


linéairement.
(ii) Supposons maintenant que g est de classe C 2 et que g 0 (α) = 0 et g 00 (α) 6= 0. Un
développement limité à l’ordre 2 donne

(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.

4.5 Méthode de Newton


Dans le cas ou f est dérivable il existe une méthode qui s’appelle la méthode de Newton et
qui permet d’exploiter les valeurs de f ainsi que celles des ses dérivées. Supposons tout d’abord
68 CHAPITRE 4. RÉSOLUTION DES ÉQUATIONS NON LINÉAIRES

que f possède une racine unique α dans [a, b].


A partir d’une valeur donnée x0 traçons la droite tangente à la courbe représentative de f au
point (x0 , f (x0 )) (voir figure 4.6). L’équation de cette droite est

y = f 0 (x0 )(x − x0 ) + f (x0 ).

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 )

La droite tangente à la courbe de f en x1 a pour équation

y = f 0 (x1 )(x − x1 ) + f (x1 )

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 )

En répétant ce processus on obtient une suite (xn ) définie par



 x0 ,
f (xn ) (4.13)
 xn+1 = xn − 0 , n ≥ 0.
f (xn )

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 )

converge vers α lorsque n → ∞. Puisque f 00 (x) 6= 0, il y a deux cas à distinguer :


1. f 00 (x) > 0, ∀x ∈ [a, b], dans ce cas d’après la condition (iv) f (x0 ) > 0. Posons

f (x)
g(x) = x − , x ∈ (a, b).
f 0 (x)
4.5. MÉTHODE DE NEWTON 69

L’algorithme (4.13) devient donc



x0
(4.14)
xn+1 = g(xn ), n≥0
De la même manière distinguons deux cas sur le signe de f 0 :
— Si f 0 (x) > 0 ∀x ∈ [a, b] alors f est une fonction strictement croissante et puisque f
s’annule en α alors f (x) < 0, ∀x ∈ (a, α) et f (x) > 0 ∀x ∈ (α, b). Comme f (x0 ) > 0
alors nécessairement x0 ∈ (α, b). Dans ce cas
f (x)f 00 (x)
g 0 (x) = > 0, ∀x ∈ (α, b).
(f 0 (x))2
g est donc strictement croissante dans (α, b). Puisque α < x0 alors g(α) < g(x0 ) = x1 .
Or et puisque f (α) = 0 alors g(α) = α − ff0(α)
(α) = α donc

α < x1 , et x1 ∈ (α, b).


f (x0 )
De l’autre coté et puisque f (x0 ) > 0 et f 0 (x0 ) > 0, alors g(x0 ) = x1 = x0 − < x0 ,
f 0 (x0 )
d’ou α < x1 < x0 . Par récurrence on obtient

α < · · · < xn < xn−1 < · · · < x1 < x0 , (4.15)


d’ou
xn − α < xn−1 − α < · · · < x1 − α < x0 − α
D’après (4.15) la suite (xn ) est décroissante et minorée par α. (xn ) est donc conver-
gente.
— Dans le cas ou f 0 (x) < 0, ∀x ∈ (a, b) alors f est strictement décroissante et puisque
f s’annule en α alors f (x) > 0, ∀x ∈ (a, α) et f (x) < 0, ∀x ∈ (α, b). Comme f (x0 ) > 0
donc nécessairement x0 ∈ (a, α). De plus
f (x)f 00 (x)
g 0 (x) = > 0, ∀x ∈ (a, α),
(f 0 (x))2
g est donc strictement croissante dans l’intervalle (a, α). Comme x0 < α donc α =
g(α) > g(x0 ) = x1 d’ou x1 < α. De plus puisque f 0 (x0 ) < 0 alors
f (x0 )
x1 = x0 − > x0
f 0 (x0 )
on obtient donc x0 < x1 < α. Par récurrence x0 < x1 < · · · < xn−1 < xn < · · · < α ou
bien α − x0 > α − x1 > · · · > α − xn−1 > α − xn > · · · > 0. La suite (xn ) est croissante
et majorée elle est donc convergente.
2. f 00 (x) < 0, ∀x ∈ (a, b). De la même manière on montre que la suite (xn ) est convergente.
Dans tous les cas on obtient que la suite (xn ) est convergente. Notons par β sa limite
c’est à dire que lim xn = β. Un passage à la limite dans (4.14) et en tenant compte de
n→∞
la continuité de g on obtient
β = g(β)
c’est à dire que f (β) = 0. Comme la racine de f est unique dans (a, b) donc α = β. La
suite (xn ) donnée par l’algorithme de Newton converge donc vers l’unique racine α de
l’équation f (x) = 0. 
70 CHAPITRE 4. RÉSOLUTION DES ÉQUATIONS NON LINÉAIRES

La proposition suivante nous donne une estimation de l’erreur |xn − α|.


Proposition 4.2 Supposons que les conditions (i)-(iv) du Théorème 4.3 sont vérifiées et
notons par (xn ) la suite définie par (4.13). Posons en = xn − α où α est l’unique racine
de l’équation f (x) = 0 dans [a, b]. Alors on a
en = xn − xn+1 + o(xn − α) (4.16)
lorsque n → +∞.
Preuve. D’après le Théorème 4.3, xn → α lorsque n → +∞. On a
en+1 = xn+1 − α = g(xn ) − g(α)
D’après le Théorème des accroissements finis il existe cn situé entres xn et α tel que
en+1 = xn+1 − α = g(xn ) − g(α) = g 0 (cn )(xn − α) = g 0 (cn )en ,
d’ou
xn+1 − xn = (xn+1 − α) − (xn − α) = en+1 − en = (g 0 (cn ) − 1)en ,
ce qui implique
en = xn − xn+1 + en g 0 (cn ), (4.17)
0
or comme cn → α lorsque n → ∞ et puisque g est continue et f (α) = 0 alors
f (α)f 00 (α)
g 0 (cn ) → g 0 (α) = = 0, n → +∞
(f 0 (α))2
ce qui entraîne compte tenue de (4.17)
en = xn − xn+1 + o(xn − α).

Remarque 4.5 La Proposition précédente nous donne un test d’arrêt de la méthode de
Newton. En effet soit  > 0 un ordre de précision donné. On cherche le plus petit entier n
tel que
|xn − α| ≤ .
D’après (4.16) on a |en | = |xn − α| ' |xn − xn+1 |, lorsque n est suffisamment grand. Pour
avoir donc |en | ≤  il suffit d’avoir
|xn − xn+1 | ≤ . (4.18)
La relation (4.18) nous donne un test d’arrêt de la méthode de Newton.
Exemple 4.5 Reprenons le calcul de la racine de l’équation e−x − x = 0 par la méthode de
Newton pour  = 10−2 en partant de x0 = 0.
On a déjà montré que l’équation possède une racine unique α ∈ (0, 1). Posons
f (x) = e−x − x,
on a f (0)f (1) < 0. De plus f 0 (x) = −e−x − 1 < 0, f 00 (x) = e−x > 0 ∀x ∈ (0, 1) et
f (0)f 00 (0) = 1 > 0. Les conditions (i)-(iv) du Théorème 4.3 sont vérifiées. L’algorithme
de Newton est donc 
 x0 = 0,
e−xn − xn
 xn+1 = xn + −x , n ≥ 0,
e n +1
on s’arrête au premier entier n tel que |xn+1 − xn | ≤ 10−2 . Le calcul des termes xn de la
suite de Newton est résumé dans le tableau suivant
4.5. MÉTHODE DE NEWTON 71

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 − α

La méthode de Newton converge dans ce cas linéairement.


Preuve. (i) Supposons que f 0 (α) 6= 0. Un développement limité à l’ordre 2 donne

(α − 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)

f (xn ) = (xn − α)f 0 (xn ) − (xn+1 − α)f 0 (xn ). (4.20)

En remplaçant (4.20) dans (4.19) on obtient

(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 0 (xn ) = f 0 (α) + (xn − α)f 00 (dn ),

où dn est situé entres xn et α. Comme f 0 (α) = 0 on obtient

f 0 (xn ) = (xn − α)f 00 (dn ). (4.21)


72 CHAPITRE 4. RÉSOLUTION DES ÉQUATIONS NON LINÉAIRES

De même un second développement à l’ordre 2 de f donne


1
f (xn ) = f (α) + (xn − α)f 0 (α) + (xn − α)2 f 00 (hn ),
2
où hn est situé entres α et xn . D’ou puisque f (α) = 0 et f 0 (α) = 0
1
f (xn ) = (xn − α)2 f 00 (hn ). (4.22)
2
En remplaçant (4.21) et (4.22) dans (4.13) on obtient

f 00 (hn )
xn+1 − α = xn − α − (xn − α),
f 00 (dn )

puisque f 00 (dn ) −→ f 00 (α) et f 00 (hn ) −→ f 00 (α) lorsque n −→ +∞ on aura

xn+1 − α 1 f 00 (α) 1
lim =1− = .
n→+∞ xn − α 2 f 00 (α) 2

La méthode de Newton est donc d’ordre 1.


Remarque 4.6 L’algorithme de Newton peut être vu comme un point fixe de l’application

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,

d’après la Proposition 4.1 la méthode de Newton est quadratique. On vient de retrouver


la première partie de la Proposition 4.3.

4.6 Application avec Matlab


4.6.1 La commande fzero
La commande Matlab fzero(f,[a b]) retourne la racine de l’équation f (x) = 0 située dans
l’intervalle [a, b]. Il est nécessaire que f (a) et f (b) soient de signes différents. Calculons les racines
de l’équation
e−x − sin(x) = 0
Pour cela localisons ces racines à l’aide de l’interface graphique de Matlab
>> f p l o t ( ’ exp(−x)− s i n ( x ) ’ , [ 0 4 ] )
la figure 4.7 montre que l’équation e−x − sin(x) = 0 admet deux racines dans l’intervalle [0, 4].
Pour calculer la première racine située dans l’intervalle [0, 1] on utilise fzero
4.6. APPLICATION AVEC MATLAB 73

Figure 4.7 – Localisation des racines de l’équation e−x − sin(x) = 0

>> fzero ( ’ exp(−x)− s i n ( x ) ’ , [ 0 1 ] )

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

4.6.2 Méthode de dichotomie


Le script biss renvoi la racine de l’équation f (x) = 0 située dans l’intervalle [a, b] ainsi que
le nombre d’itérations N par la méthode de dichotomie.
function [ alpha ,N]= b i s s ( f , a , b , e p s i )
%l e nbr d ’ i t é r a t i o n s N
N=log ( ( b−a ) / e p s i ) / log ( 2 ) ;
f o r k=1:N;
x1=(a+b ) / 2 ;
%on t e s t e s i l a r a c i n e e s t dans [ a , x1 ]
i f f ( a ) ∗ f ( x1 ) <0;
b=x1 ;
else
%s i n o n e l l e e s t dans [ x1 , b ]
a=x1 ;
end
end
a l p h a=x1 ;
74 CHAPITRE 4. RÉSOLUTION DES ÉQUATIONS NON LINÉAIRES

Calculons la racine de l’équation x3 − 2x − 5 = 0 située dans l’intervalle [0, 3] par la méthode de


dichotomie avec deux chiffres significatifs après la virgule. On tape
>> f=@( x ) x^3−2∗x −5;
>> [ x ,N]= b i s s ( f , 0 , 3 , 0 . 5 ∗ 1 e −2)

alpha =

2.0947

N =

10
La méthode de dichotomie converge après 10 itérations.

4.6.3 Méthode de Newton


Le script newt renvoi la racine, par la méthode de Newton, de l’équation f (x) = 0 ainsi que
le nombre d’itérations N .
function [ xx ,N]= newt ( f , f d e r , f d e r 2 , x0 , e p s i l o n )
%c o n d i t i o n de c o n v e r g e n c e de l a méthode
i f f ( x0 ) ∗ f d e r 2 ( x0)<=0;
disp ( ’ x0 ␣ ne ␣ c o n v i e n t ␣ pas ’ ) ;
else
N=0;
%x j o u e l e r o l e de x ( n ) e t xx c e l u i de x ( n+1)
%on i n i t i a l i s e d ’ abord x par x0 e t xx par x1
x=x0 ; xx=x−( f ( x ) / f d e r ( x ) ) ;
%on t e s t e l a d i f f é r e n c e e n t r e deux i t é r a t i o n s s u c c e s s i v e s
while abs ( xx−x)> e p s i l o n ;
%dans ce c a s on a j o u t e 1 au compteur
N=N+1;
%x ( n ) prend l a v a l e u r de x (N+1) e t x (N+1) c e l l e de x (N+2)
x=xx ;
xx=x−( f ( x ) / f d e r ( x ) ) ;
%s i on v e u t a f f i c h e r l e s v a l e u r s de l a s u i t e (x_n) on t a p e
disp ( x ) ;
end
end
Calculons la racine de l’équation 4x3 − 8x2 + 5x − 1 = 0 située dans [0, 1] par la méthode de
Newton en prenant  = 10−8 . On a
>> f=@( x ) 4 ∗ x^3−8∗x^2+5∗x −1;
>> f d e r=@( x ) 1 2 ∗ x^2−16∗x+5;
>> f d e r 2=@( x ) 2 4 ∗ x −16;
>> %on prend par exemple x0=0
>> [ xx ,N]= newt ( f , f d e r , f d e r 2 , 0 , 1 e −8)
4.6. APPLICATION AVEC MATLAB 75

xx =

0.5000

N =

26
La méthode de Newton converge en 26 itérations.

Calcul de l’ordre de convergence


Pour déterminer numériquement l’ordre de convergence de la méthode de Newton on modifie
xn+1 −α
le script précédent pour afficher les valeurs du rapport (x k où α et la racine de l’équation et
n −α)
k l’ordre de convergence. On utilise alors le script
function newt_conv ( f , f d e r , x0 , e p s i l o n , alpha , k )
%i n i t i a l i a s a t i o n de x e t xx
x=x0 ; xx=x−( f ( x ) / f d e r ( x ) ) ;
while abs ( xx−x)> e p s i l o n ;
x=xx ;
xx=x−( f ( x ) / f d e r ( x ) ) ;
%on a f f i c h e à chaque f o i s l a v a l e u r du r a p p o r t
disp ( ( xx−a l p h a ) / ( x−a l p h a )^ k ) ;
end
Comme α = 0.5 voyons si la méthode de Newton a une convergence linéaire (k = 1) ou quadra-
tique (k = 2). On tape
>> newt_conv ( f , f d e r , 0 , 1 e − 8 , 0 . 5 , 1 )
0.5789

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

admet une solution unique dans un intervalle du type [n, n + 1], n ∈ N.


— Calculer cette solution par la méthode de dichotomie avec 2 chiffres significatifs après
la virgule.
4.6. APPLICATION AVEC MATLAB 77

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)

où x représente la longueur d’un coté.


— Montrer que l’équation (4.23) admet une solution dans un intervalle que l’on détermi-
nera.
— Écrire l’équation (4.23) sous la forme x = F (x) en utilisant la méthode de Newton.
— Montrer que F satisfait les conditions de la méthode du point fixe.
— Posons en = xn − α. Donner une estimation de |e4 |, en utilisant le fait que la méthode
de Newton est quadratique.

5. En utilisant la méthode du point fixe calculer 2 avec deux chiffres significatifs après la
virgule.
6. Montrer graphiquement que l’équation

e−x = x2 ,

admet une unique racine positive.


— Proposer un intervalle du type [n, n + 1] contenant cette racine.
— Écrivez l’équation précédente sous la forme

x = g(x),

où g satisfait les conditions de la méthode du point fixe.


— Écrire l’algorithme de la méthode du point fixe et calculer les trois premières itérations.
7. Évaluer la quantité r

q
3 3
s= 3+ 3 + 3 3 + ···
Indication : Mettre cette équation au cube et obtenir une équation de la forme f (s) = 0.
Résoudre cette dernière à l’aide de la méthode de Newton à partir de s0 = 1.
8. Considérons l’algorithme suivant qui est une modification de l’algorithme de Newton

 x0 ,
f (xn )
 xn+1 = xn − m 0 , n ≥ 0.
f (xn )
où m est la multiplicité de la racine α.
— Montrer que si la suite (xn ) converge alors elle converge vers la racine α de l’équation
f (x) = 0.
— Montrer que dans ce cas la convergence est nécessairement quadratique.
78 CHAPITRE 4. RÉSOLUTION DES ÉQUATIONS NON LINÉAIRES

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)

Il est alors clair que α est un point fixe de F .


— Montrer que F 0 (α) = 1 − m 1
où m est la multiplicité de α.
— En déduire que la méthode de Newton converge quadratiquement si α est une racine
simple et linéairement sinon.
Chapitre 5

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.

5.1 Méthodes Directes


D’une façon générale la résolution d’un système d’équations linéaires consiste à trouver un
vecteur x = (x1 , · · · , xn )> ∈ Rn solution de


 a11 x1 + a12 x2 + · · · + a1n xn = b1
 a21 x1 + a22 x2 + · · · + a2n xn = b2

. (5.1)
 ..


an1 x1 + an2 x2 + · · · + ann xn = bn

qu’on peut écrire sous forme matricielle

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.

5.1.1 Méthode de Cramer


Si A est une matrice non singulière c’est à dire si det A 6= 0 alors l’unique solution x =
(x1 , · · · , xn )> du système (5.1) est donnée par les formules de Cramer
det Ai
xi = , 1 ≤ i ≤ n,
det A

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

où Ai est la matrice obtenue en remplaçant la ième colonne de A par le vecteur b.


On peut montrer que pour résoudre le système (5.2) par la méthode de Cramer il nous faudra
faire 2(n + 1)! opérations (+, −, ×,÷).
Question : Combien de temps mettra un ordinateur capable d’effectuer 109 opérations par
seconde pour résoudre un système de dimension n = 20 par la méthode de Cramer ?
Réponse. 3240 ans environ ! ! !
Cet exemple nous amène à chercher d’autres méthodes moins gourmande en temps de calcul
pour résoudre des systèmes de grande taille.

5.1.2 Systèmes Triangulaires


Définition 5.1 Une matrice carré A = (aij )1≤i,j≤n est dite triangulaire inférieure (resp :
supérieure) si
aij = 0, si i < j
(resp : aij = 0, si i > j).
Une matrice triangulaire inférieure (ou supérieure) a donc l’une des formes de la figure 5.1.
Qn
Remarque 5.1 Si A est triangulaire inférieure ou supérieure alors det A = aii . Dans ce
i=1
cas le système Ax = b admet une solution unique si et seulement si aii 6= 0, ∀i = 1, · · · , n.
Définition 5.2 Une méthode de résolution d’un système linéaire est dite directe si la solution
du système peut être obtenue par cette méthode en un nombre fini d’opérations.
Soit A = (aij )1≤i,j≤n une matrice triangulaireinférieure. On veut résoudre le système
    
a11 0 ··· 0 x1 b1
 a21 a22 · · · 0   x 2   b2 
  ..  =  ..  .
    
 .. . .. ..
 . .  .   . 
an1 a2n · · · ann xn bn
 
x1
 x2 
En multipliant la première ligne de la matrice avec le vecteur colonne x =  .  on obtient
 
 .. 
xn
a11 x1 = b1 , d’ou
b1
x1 = .
a11
De même avec la deuxième ligne
a11 x1 + a12 x2 = b2 ,
5.1. MÉTHODES DIRECTES 81

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.

5.1.3 Méthode des Pivots de Gauss


La méthode de Gauss a pour but de transformer le système Ax = b en un système triangulaire
supérieure Ax
e = eb qui lui est équivalent.
Définissons la matrice augmentée (A, b) du système Ax = b comme étant la matrice que l’on
obtient en ajoutant le membre de droite b du système à la matrice A c’est à dire
 
a11 · · · a1n b1
(A, b) =  ... .. .. .. 

. . . 
an1 ··· ann bn
c’est une matrice de taille n × (n + 1).
Pour transformer un système Ax = b en un système triangulaire il suffit d’utiliser deux opérations
sur les lignes de la matrice A pour obtenir un nouveau système équivalent. Les deux opérations
sont
Ii ← λIi + βIj : Remplacer la ligne i de la matrice A par une combinaison linéaire des lignes i
et j.
Ii ↔ Ij : Intervertir les lignes i et j de A.
Théorème 5.2 Soit le système linéaire Ax = b où A est une matrice carré non singulière.
Si on remplace la matrice augmentée (A, b) par (A,
e eb) obtenue de (A, b) à l’aide des deux
opérations précédentes alors les deux systèmes Ax = eb et Ax = b ont la même solution.
e
82 CHAPITRE 5. SYSTÈMES LINÉAIRES

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

On effectue l’opération suivante sur la matrice augmentée (A(1) , b(1) ) :


— On laisse intacte la première ligne de la matrice augmentée (A(1) , b(1) )
— On remplace chaque ligne i ≥ 2 par la ligne obtenue en multipliant la première ligne par
(1)
λi et en retranchant la même ligne i :
(1)
Ii ← λi I1 − Ii , i ≥ 2.

On obtient alors un nouveau système (A(2) , b(2) ) définit par


 (2)
 ai1 = 0,

(2) (1) (1) (1)
aij = aij − λi a1j , i, j ≥ 2
 (2)
 (1) (1) (1)
bi = bi − λi b1 ,

La matrice augmentée (A(2) , b(2) ) a la forme suivante


 (1) (1) (1) (1)

a11 a12 · · · a1n b1
(2) (2) (2)
 0 a22 · · · a2n b2
 

 . . .. ..
..

 . .. .

 . . . 
(2) (2) (2)
0 an2 · · · ann bn

D’après le Théorème 5.2 (A(2) , b(2) ) ∼ (A, b).


(2) (2)
On répète ce processus pour annuler les éléments ai2 , i = 3, · · · , n. Supposons que a22 6= 0 et
posons
(2)
(2) ai2
λi = (2)
, i = 3, · · · , n.
a22

On effectue l’opération suivante sur les lignes i ≥ 3


— On laisse intacte les deux premières lignes
— On remplace chaque ligne i ≥ 3 par la ligne obtenue en multipliant la deuxième ligne par
(2)
λi et en retranchant la même ligne i :
(2)
Ii ← λi I2 − Ii , i ≥ 3.

On obtient alors le nouveau système (A(3) , b(3) ) définit par


 (3)
 ai2 = 0,

(3) (2) (2) (2)
aij = aij − λi a2j , i, j ≥ 3
 (3)
 (2) (2) (2)
bi = bi − λi b2 ,
5.1. MÉTHODES DIRECTES 83

La matrice augmentée (A(3) , b(3) ) a alors la forme suivante


 (1) (1) (1) (1) 
a11 a12 · · · · · · a1n b1
(2) (2) (2)
 0 a22 · · · · · · a2n b2
 

 (3) (3) (3) 
 0 0 a33 · · · a3n b3 
 .. .. .. .. ..
 
.. 
 . . . . . . 
(3) (3) (3)
0 0 an3 · · · ann bn

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

avec A(1) = A et b(1) = b.


Remarque 5.3 (i) Si au cour de ce processus on tombe sur un pivot nul alors on intervertit
la ligne contenant ce pivot nul avec une ligne au dessous de sorte que le nouveau pivot
soit non nul. D’après le Théorème 5.2 cette opération nous donne un système équivalent.
A la fin de l’algorithme de Gauss on obtient un système triangulaire supérieure (A(n−1) , b(n−1) )
équivalent à (A, b). On résout le nouveau système en utilisant l’algorithme de remonté du
Théorème 5.1.
(ii) Puisque les systèmes (A, b) et (A(n−1) , b(n−1) ) sont équivalent alors
n
(i)
Y
det A = det A(n−1) = (−1)p aii , (5.4)
i=1

où p désigne le nombres de permutations effectuées.


Exemple 5.1 Résolvons le système suivant par la méthode de Gauss


 x1 − x2 + 2x3 − x4 = −8
2x1 − 2x2 + 3x3 − 3x4 = −20

 x1 + x2 + x3
 = −2
x1 − x2 + 4x3 + 3x4 = 4

84 CHAPITRE 5. SYSTÈMES LINÉAIRES

A l’étape k = 1 écrivons la matrice augmentée du système précédent


 
1 −1 2 −1 −8 ×2
(1) (1)
 2 −2 3 −3 −20 
(A , b ) =  
 1 1 1 0 −2 
1 −1 4 3 4
(1)
Le premier pivot est a11 = 1 6= 0. On laisse donc intacte la première ligne, celle contenant
le pivot, et pour annuler l’élément a21 = 2 situé juste en dessous du pivot on multiplie
la ligne du pivot c’est à dire dans notre cas la première ligne par 2 puis on retranche la
deuxième ligne ce qui donne le nouveau système augmenté
 
1 −1 2 −1 −8
 0 0 1 1 4 
 
 1 1 1 0 −2 
1 −1 4 3 4
On fait de même pour annuler les deux autres éléments situés en dessous du pivot c’est à
dire les éléments a31 et a41 . Pour annuler l’élément a31 = 1 il suffit juste de retrancher la
première ligne avec la troisième et pour annuler l’élément a41 = 1 on retranche également
la ligne du pivot avec la quatrième ligne on obtient finalement
 
1 −1 2 −1 −8
 0 0 1 1 4 
(A(2) , b(2) ) = 
 0 −2 1 −1 −6 

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

le nouveau système triangulaire obtenu est




 x1 − x2 + 2x3 − x4 = −8
−2x2 + x3 − x4 = −6


 x3 + x4 = 4
2x4 = 4

d’ou en résolvant ce système à l’aide de l’algorithme de remonté on obtient x4 = 2, puis


x3 = 4 − x4 = 2, x2 = x3 −x2 4 +6 = 3 et enfin x1 = x2 − 2x3 + x4 − 8 = −7.
Calculons le determinant de la matrice A à l’aide de la formule (5.4). Puisqu’on a effectuer
une seule permutation donc p = 1, d’ou det A = (−1)1 × 1 × −2 × 1 × 2 = 4.
Remarque 5.4 On peut montrer que la résolution du système Ax = b par l’algorithme des
pivots de Gauss nécessite un nombre d’opérations de l’ordre de n3 où n est la taille de la
matrice A.

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

Écrivons le système augmenté (A, b, I) on a


 
2 −1 0 −2 1 0 0 ×2 × −3
 4 −1 2 14 0 1 0 
−6 2 0 12 0 0 1
(1)
le premier pivot est a11 = 2 6= 0. Pour diagonaliser la matrice A on annule les deux
(1) (1)
premiers éléments a21 = 4 et a31 = −6 situés juste en dessous du pivot. Pour annuler le
(1)
premier élément situé sur la deuxième ligne a21 on remplace la deuxième ligne par celle
obtenue en multipliant la ligne du pivot par 2 et en retranchant la deuxième ligne. En
(1)
faisant de même avec l’élément a31 situé sur la troisième ligne on obtient
 
2 −1 0 −2 1 0 0
 0 −1 −2 −18 2 −1 0  ×1 × −1
0 1 0 −6 −3 0 −1
(2) (2) (2)
le nouveau pivot est a22 = −1 6= 0. Il y a deux éléments à annuler a12 = −1 et a32 = 1.
(2)
Pour annuler l’élément a12 on remplace la première ligne par celle obtenue en retranchant
(2)
la première ligne de celle du pivot, on obtient alors en faisant de même avec l’élément a32
 
−2 0 −2 −16 1 −1 0
 0 −1 −2 −18 2 −1 0 
0 0 2 24 1 1 1 × − 1 × −1
86 CHAPITRE 5. SYSTÈMES LINÉAIRES

(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

la nouvelle matrice A est diagonale. On normalise le nouveau système en divisant la


première ligne par 2 et la troisième par 2

− 21
 
1 0 0 −4 −1 0
 0 1 0 −6 −3 0 −1 
1 1 1
0 0 1 12 2 2 2

d’ou la solution du système x = (−4, −6, 12)T et la matrice inverse de A,

− 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)

ou bien sous forme matricielle


  
  l11 0 ··· 0 u11 ··· ··· u1n
a11 ··· a1n  .. .. ..   .. .. 
.. .. ..  =  . .  0
.   . . 
(5.6)

 . . .  

.. ..  . .. ..

0   ..

an1 ··· ann
 . . . . 
ln1 ··· ··· lnn 0 ··· 0 unn

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

Pour déterminer les inconnues lij et uij on procède comme suit


— On multiplie les lignes de L par la première colonne de U d’ou :

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

Pour déterminer les coefficients lij et uij on procède comme suit :


— On multiplie la première ligne de L avec les colonnes de U d’ou

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

u2j = a2j − l2j u1j , j = 2, · · · , n

— 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

Supposons que la matrice A admet une décomposition de la forme A = LU . Le système linéaire


Ax = b est alors équivalent à LU x = b. Posons y = U x d’ou Ly = b. La résolution du système
Ax = b est donc ramené aux deux systèmes triangulaires

Ly = b,
Ux = y

Exemple 5.3 Résolvons le système suivant par la méthode de Crout



 2x1 − x2 − x3 = −3
−4x2 + 2x3 = −2
6x1 − 3x2 + x3 = 3

Écrivons la matrice A et le second membre b


   
2 −1 −1 −3
A =  0 −4 2  , b =  −2 
6 −3 1 3

2 −1
On a A1 = 2 6= 0, A2 = = −8 6= 0. La matrice A admet donc une décomposition
0 −4
LU . Calculons L et U par la méthode de Crout. Écrivons pour cela la décomposition de
A     
2 −1 −1 l11 0 0 1 u12 u13
 0 −4 2  =  l21 l22 0   0 1 u23 
6 −3 1 l31 l32 l33 0 0 1
il y a en tous 9 inconnues. L’algorithme de Crout nous donne alors :
— En multipliant la première ligne de L avec la première colonne de U on a l11 = 2.
— De même la seconde ligne de L avec la première colonne de U donne l21 = 0.
5.1. MÉTHODES DIRECTES 89

— La dernière ligne de L avec la première colonne de U donne également l31 = 6.


— De même la première ligne de L avec la seconde colonne de U on obtient l11 u12 = −1
d’ou u12 = − 12 .
— De même la première ligne de L avec la dernière colonne de U entraine l11 u13 = −1
d’ou u13 = − 12 .
— La deuxième ligne de L avec la deuxième colonne de U donne l21 u12 + l22 = −4 ce qui
entraîne l22 = 4.
— De la même manière la troisième ligne de L avec la deuxième colonne de U entraine
l31 u12 + l32 = −3 ce qui donne l32 = 0.
— La deuxième ligne de L avec la troisième colonne de U on a l21 u13 + l22 u23 = 1 d’ou
u23 = − 21 .
— Finalement la dernière ligne de L avec la dernière colonne de U entraine l31 u13 +l32 u23 =
1 ce qui donne finalement l33 = 4.
Écrivons le système Ly = b
    
2 0 0 y1 −3
 0 −4 0   y2  =  −2 
6 0 4 y3 3

L’algorithme de la descente donne y1 = − 32 , y2 = 1


2 et y3 = 3.
Écrivons maintenant le système Lx = y

− 21 − 12
    3 
1 x1 −2
 0 1 − 12   x2  =  12 
0 0 1 x3 3

d’ou en utilisant l’algorithme de la remonté x3 = 3, x2 = 2 et enfin x1 = 1.


Remarque 5.5 L’algorithme (5.7) de Crout ou (5.8) de Doolittle nécessitent chacun 32 n3
opérations environ. La méthode de décomposition LU est donc moins couteuse en temps
de calcul que la méthode de Gauss.

Cas d’une matrice tridiagonale : Algorithme de Thomas

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

Soit i ≥ 3 un entier et multiplions la ligne i (li1 , · · · , lii−1 , 1, 0, · · · , 0) de L avec la première


colonne (u11 , · · · , 0) de U on a alors li1 u11 = ai1 , comme A est tridiagonale alors ai1 = 0 d’ou
li1 = 0.
Supposons qu’à l’étape (i − 3) on a obtenu li1 = · · · = lii−3 = 0, on a alors en multipliant la ligne
i de L avec la colonne (i − 2) (ui−21 , · · · , ui−2i−2 , 0, · · · , 0) de U

li1 ui−21 + · · · + ui−2i−2 lii−2 = aii−3 , (5.9)

d’après l’hypothèse de récurrence li1 = · · · = lii−3 = 0 et puisque A est tridiagonale aii−3 = 0


d’ou on obtient de (5.9) lii−2 = 0. La matrice L est donc bidiagonale. De la même manière on
montre que U est également bidiagonale. Écrivons alors L et U sous la forme suivante
   
1 0 ··· 0 α1 γ1 · · · 0
 . . ..   .. .. 
 β2 1 . . , U =  0
 α2 . . 
L= 
 . .. . .. 0 
  .. .. 
 0  0 . . γn−1 
0 · · · βn 1 0 ··· ··· αn

et calculons les coefficients αi , βi , γi en fonction de ai , fi et ci . Écrivons pour cela la décomposition


de A = LU sous la forme suivante
···
 
a1 c1 0 0   
. . 1 0 ··· 0 α1 γ1 · · · 0

 f2 a2 c2 .. ..  

.. .  .. 

. . .   β2 1
  . ..   0 α2 . . . . 

 0 . . . . . . 0 =   
.. .. .. ..
    
0 . . 0 0 . . γn−1 
  
 . .  
 .. .. f

n−1 an−1 cn−1 0 · · · βn 1 0 ··· ··· αn

0 ··· 0 fn an
Multiplions la première ligne de L avec la première colonne de U on a

α1 = a1

En multipliant la ligne i de L avec la colonne i + 1 de U on obtient

γi = ci , 1 ≤ i ≤ n − 1

De même la ligne i de L avec la colonne i − 1 de U donne βi αi−1 = fi , d’ou


fi
βi = , 2 ≤ i ≤ n.
αi−1
Finalement on a en multipliant la ligne i de L avec la colonne i de U

βi γi−1 + αi = ai , (5.10)
5.1. MÉTHODES DIRECTES 91

d’ou d’après (5.10)


γi−1 fi
αi = ai − , 2 ≤ i ≤ n.
αi−1
La résolution du système tridiagonale Ax = b est donc ramenée à la résolution des deux systèmes
triangulaires suivants
U x = y,
Ly = b
Le système Ly = b donne
    
1 0 ··· 0 y1 b1
 .. ..   ..   .. 
 β2
 1 . . 

 .  
= . 

 .. ..  ..   .. 
 0 . . 0  .   . 
0 ··· βn 1 yn bn

d’ou
y1 = b1
et yi + βi yi−1 = bi ce qui donne

yi = bi − βi yi−1 , 2 ≤ i ≤ n

Calculons maintenant la solution x du système U x = y


    
α1 γ1 · · · 0 x1 b1
 . . ..   ..   .. 
 0 α2
 .  .
.    
= . 

. .  . ..
.. .. γ   ..
   
 0 n−1
  . 
0 ··· ··· αn xn bn

En utilisant l’algorithme de la remonté on a


yn
xn =
αn
et αi xi + γi xi+1 = yi d’ou finalement
yi − γi xi+1
xi = , i = n − 1, · · · , 1.
αi
On obtient alors les formules suivantes appelées formules de Thomas

α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

On a à partir de la première relation (5.11) α1 = 2. De plus


c 1 b2 (−1)(−1)
α2 = a2 − α1 =2− 2 = 32 ,
c 2 b3 2 4
α3 = a3 − α2 =2− 3 = 3,
c 3 b4 3 5
α4 = a4 − α3 =2− 4 = 4.

Calculons maintenant y = (y1 , y2 , y3 , y4 ). On en utilisant les cinquième et sixième relations


(5.11)
y1 = 5,
f2
y2 = f2 − y1 = −7 + 25 = −92
α1
f3
y3 = f3 − y2 = 3
α2
f4
y4 = f4 − y3 = −1 + 49 = 54 .
α3
Calculons enfin x = (x1 , x2 , x3 , x4 ). Les relations (5.11) entrainent
x4 = αy44 = 1,
x3 = y3 − cα 3 x4
3
=3
c 2 x3
x2 = y2 − α2 = −1
x1 = y1 − cα 1 x2
1
=2

5.1.5 Méthode de Cholesky


Lorsque la matrice A est symétrique et définie positive il existe une autre méthode de facto-
risation appelée méthode de Cholesky.
Définition 5.3 Soit A = (aij )1≤i,j≤n une matrice carré d’ordre n. On dit que A est symé-
trique si aij = aji , ∀i 6= j.
On dit que A est définie positive si
xt Ax > 0, ∀x ∈ Rn , x 6= 0.

Exemple 5.5 La matrice  


2 −1 1
 −1 3 1 
1 1 5
est définie positive. En effet soit x = (x1 , x2 , x3 )t ∈ R3 on a
 
2x1 − x2 + x3
Ax =  −x1 + 3x2 + x3 
x1 + x2 + 5x3
5.1. MÉTHODES DIRECTES 93

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

xt Ax = 2x21 + 3x22 − 2x1 x2


= (x1 − x2 )2 + x21 + 2x22
≥0 .

De plus si xt Ax = 0 alors on tire de la relation précédente x1 = 0 et x2 = 0 et donc


x = 0T . La sous-matrice d’ordre 2 est effectivement définie positive.
Théorème 5.4 (Cholesky) Soit A une matrice symétrique et définie positive. Alors il existe
une unique matrice triangulaire inférieure C dont tous les éléments diagonaux sont stric-
tement positifs telle que
A = C.C t
Cette factorisation de la matrice A s’appelle factorisation de Cholesky.
Preuve. Montrons le théorème par récurrence sur la taille n de la matrice A.
Lorsque n = 1 A se réduit à un réel. Supposons que la propriété est vrai à l’ordre n et
considérons une matrice An+1 symétrique et définie positive d’ordre n + 1. Comme An+1
est symétrique elle s’écrit sous la forme
 
An v
vt α

où An est une sous-matrice d’ordre n de An+1 , v ∈ Rn et α ∈ R. D’après la Proposition


5.1 An est également symétrique et définie positive. D’après l’hypothèse de récurrence il
existe une matrice triangulaire inférieure Cn telle que

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

Les relations (5.12)-(5.13) donnent

Cn h = v, ht h + β 2 = α. (5.14)

Comme la matrice Cn est inversible il existe h ∈ Rn tel que

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

Exemple 5.7 Résoudre le système suivant par la méthode de Cholesky :

2x − y + z = 2
−x + 3y + z = 3
x + y + 5z = 7

La matrice de ce système est


 
2 −1 1
A =  −1 3 1 
1 1 5

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

Effectuons le produit de la√première ligne de C avec la première colonne de C t on tire


c211 = 2 ce qui donne c11 = 2.
De même la première ligne de C avec la deuxième colonne de C t on obtient c21 c11 = −1
−1
ce qui entraîne c21 = √ 2
.
La première ligne de C avec la troisième colonne de C t donne c31 c11 = 1 d’ou c31 = √12 .
q
La deuxième ligne de C avec la deuxième colonne de C t donne c221 +c222 = 3 d’ou c22 = 52 .
De la même manière la deuxième ligne de C avec la troisième colonne de C t entraîne
c31 c21 + c32 c22 = 1 soit c32 = √310 .
t 2 2 2
q de C avec la troisième colonne de C nous donne c31 +c32 +c33 = 5
Enfin la troisième ligne
2
d’ou on tire c33 = 3 5. Les matrices C et C t ont alors la forme suivante
 √  √ −1 √1
 
2 2 √
q0 0
q2 2
−1 5 5
0  √3
   
C= √ Ct =  0
2 q ,
2 2

  q10 
√1 √3 3 25 0 0 3 25
2 10

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

d’ou grâce à l’algorithme de la remonté x3 = 1, x2 = 1 et enfin x1 = 1.


Remarque 5.7 On peut montrer que la méthode de Cholesky nécessite un nombre d’opé-
3
rations de l’ordre de n3 . On voit donc que la méthode de Cholesky et plus rapide que la
méthode LU puisque le nombre d’opérations requis est la moitié de celui de la méthode
LU.

5.2 Méthodes Itératives


L’utilisation des méthodes de décomposition LU pour les grand systèmes requiert la mise
en mémoire de matrices de grandes tailles. Pour cela il peut être plus avantageux d’utiliser les
méthodes itératives qu’on va décrire dans ce paragraphe.

5.2.1 Norme matricielle et conditionnement


Norme vectorielle
Définition 5.4 On appelle norme vectorielle une application qui associe à chaque vecteur
x ∈ Rn un réel noté kxk qui vérifie
(i) kxk ≥ 0, et kxk = 0 si et seulement si x = 0.
(ii) kαxk = |λ|kxk, ∀x ∈ Rn et α ∈ R.
(iii) kx + yk ≤ kxk + kyk, ∀x, y ∈ Rn (inégalité triangulaire)

Quelques normes vectorielles


t n
Notons par x = (x1 , · · · , x√
n ) un vecteur quelconque de R . On a alors les normes suivantes :
Norme euclidienne : kxk2 = x1 + · · · + xn
Pn
Norme l1 : kxk1 = |xi |
i=1
Norme l∞ : kxk∞ = max |xi |
1≤i≤n
t 3
√ soit x = (1,√−3, −8) ∈ R . On a
Exemple 5.8
kxk2 = 1 + 9 + 64 = 74
kxk1 = 1 + 3 + 8 = 12
kxk∞ = max (1, 3, 8) = 8.

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

Quelques Normes Matricielles


Soit A = (aij )1≤i,j≤n une matrice carré d’ordre n. On a alors les normes matricielles sui-
vantes : s
n
a2ij
P
kAk2 =
i,j=1
 n 
P
kAk1 = max |aij |
1≤j≤n i=1
!
P n
kAk∞ = max |aij |
1≤i≤n j=1
 
1 −2 5
Exemple 5.9 Soit la matrice A =  −3 1 −5  . On a
1 −9 0

kAk2 = 147
kAk1 = max (5, 12, 10) = 12
kAk∞ = max (8, 9, 10) = 10
La proposition suivante nous donne quelques propriétés des normes matricielles
Proposition 5.2 Pour toute matrice carré A et x ∈ Rn on a les inégalités suivantes :

kAxk2 ≤ kAk2 kxk2


kAxk1 ≤ kAk1 kxk1
kAxk∞ ≤ kAk∞ kxk∞

Rayon Spectral d’une Matrice


Définition 5.6 Soit A une matrice carré d’ordre n. On dit que λ est une valeur propre de
A s’il existe un vecteur x 6= 0 tel que Ax = λx.
On définie le rayon spectral ρ(A) de A par
ρ(A) = max {|λ| : λ est une valeur propre de A}

Lemme 5.1 Le rayon spectral d’une matrice carré A d’ordre n vérifie


ρ(A) ≤ kAk
et ce pour toute norme matricielle k · k dans Rn .
Preuve. Soit λ une valeur propre de A, il existe x ∈ Rn x 6= 0 tel que
Ax = λx
On a alors d’après les propriétés de la norme matricielle kk
|λ|kxk = kλxk = kAxk ≤ kAkkxk
comme x 6= 0 alors kxk =
6 0 d’ou
|λ| ≤ kAk,
et ce pour toute valeur propre λ de A. Finalement
ρ(A) = max |λ| ≤ kAk.
λ


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.

Conditionnement d’une Matrice


Définition 5.7 Soit A une matrice carré d’ordre n. On définit le conditionnement K(A) de
A par rapport à une norme kk de Rn le nombre

K(A) = kAkkA−1 k.

On conviendra que si A est singulière alors K(A) = ∞.


On a alors les propriétés suivantes du conditionnement d’une matrice.
Proposition 5.3 Pour toute matrice carré A on a
(i) K(A) ≥ 1
(ii) Si A est symétrique et définie positive alors
λmax
K(A) = où λmax et λmin sont respectivement la plus grande et la petite valeurs
λmin
propres de A.
Le résultat suivant résume toute l’importance du conditionnement d’une matrice.
Proposition 5.4 Soit x la solution exacte du système Ax = b. Perturbons le second membre
b en le remplaçant par bb et notons par x
b la solution exacte du nouveau système Ab
x = bb.
On a alors l’inégalité suivante

kx − x
bk kb − bbk
≤ K(A) , (5.16)
kxk kbk

où K(A) est le conditionnent de la matrice A.


Preuve Puisque x et x
b satisfont Ax = b et Abx = bb alors x = A−1 b et x
b = A−1bb. Écrivons
que
kx − xbk kA−1 b − A−1bbk kA−1 kkb − bbk
= ≤ (5.17)
kxk kxk kxk
or d’après la propriété de la norme kAkkxk ≥ kAxk = kbk, d’ou

kbk
kxk ≥ , (5.18)
kAk

les relations (5.17) et (5.18) entrainent

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.

5.2.2 Principe des Méthodes Itératives


Soit A une matrice carré d’ordre n et b ∈ Rn . Considérons le système linéaire
Ax = b. (5.19)
Le principe des méthodes itératives est d’écrire le système (5.19) sous la forme suivante
x = Bx + v (5.20)
où B est une matrice carrée d’ordre n appelée matrice d’itération et v ∈ Rn . La solution x
du système (5.19) est alors un point fixe de (5.20). Pour approcher ce point fixe on utilise
un algorithme du point fixe du même type que celui utilisé pour la résolution des équations
non linéaires par la méthode du point fixe (voir §4.4). A partir d’un vecteur initial x(0) ∈ Rn
considérons la suite de vecteurs
 (0)
x
(5.21)
x(k+1) = Bx(k) + v, k ≥ 0.

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

d’ou par récurrence sur k

e(k+1) = Be(k) = B 2 e(k−1) = · · · = B k+1 e(0) . (5.22)

L’inégalité précédente et le Lemme 5.2 entrainent que e(k) −→ 0 lorsque k −→ 0 si et


seulement si ρ(B) < 1. 
En pratique a chaque décomposition (5.20) correspond une méthode itérative. Dans la suite on
s’intéressera principalement à deux de ces méthodes : la méthode de Jacobi et celle de Gauss-
Seidel.

5.2.3 Méthode de Jacobi


Soit A une matrice carré d’ordre n. Décomposons A comme suit

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.

Supposons maintenant que aii 6= 0, ∀i = 1, · · · , n, la matrice D est alors inversible d’ou

x = TJ x + D−1 b, (5.26)

où TJ = −D−1 (L + U ). La solution x du système (5.19) est alors un point fixe de l’équation


(5.26). Soit x(0) ∈ Rn un vecteur initial l’algorithme du point fixe associé à (5.26) est alors

x(0)

(5.27)
x(k+1) = TJ x(k) + D−1 b, k ≥ 0.

Définition 5.8 La matrice TJ est appelée matrice d’itération de Jacobi.


En prenant B = TJ dans le Théorème 5.5 on obtient le résultat de convergence suivant.
Théorème 5.6 Soit A une matrice carré d’ordre n dont tous les éléments diagonaux sont
non nuls. La suite de vecteurs (x(k) )k≥0 définie par (5.27) converge vers la solution x du
système (5.19) pour toute donnée initiale x(0) si et seulement si ρ(TJ ) < 1.
5.2. MÉTHODES ITÉRATIVES 101

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

L’algorithme (5.28) s’appelle algorithme de Jacobi.


Remarque 5.9 La condition de convergence ρ(TJ ) < 1 du Théorème 5.6 est couteuse puis-
qu’elle nécessite le calcul du rayon spectral de la matrice TJ . Il existe cependant un type
de matrices qui vérifient la condition de convergence de la méthode de Jacobi.
Définition 5.9 Une matrice carré A = (aij )1≤i,j≤n est dite à diagonale strictement domi-
nante si
n
P
|aii | > |aij |, i = 1, · · · , n.
j=1,j6=i

On a alors le théorème suivant :


102 CHAPITRE 5. SYSTÈMES LINÉAIRES

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

Montrons que la méthode de Jacobi converge pour ce système. On a


   
5 1 −2 15
A= 0 3 1 , b =  7 
3 −4 8 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.

5.2.4 Méthode de Gauss-Seidel


Soit A une matrice carré d’ordre n et soit D, L et U les trois matrices de la décomposition
(5.23). On a d’après (5.25)
(D + L)x = b − U x
Supposons que aii 6= 0, i = 1, · · · , n. Comme (D + L) est une matrice triangulaire inférieure il
s’ensuit que D + L est inversible d’ou

x = (D + L)−1 b − (D + L)−1 U x. (5.30)

Posons SG = −(D + L)−1 U . La relation (5.30) devient

x = SG x + (D + L)−1 b (5.31)

Définition 5.10 La matrice SG est appelée matrice d’itération de Gauss-Seidel.


La solution x du système (5.19) est donc le point fixe de (5.31). Soit x(0) ∈ Rn un vecteur initial.
Pour approcher ce point fixe on utilise l’algorithme (5.21) d’ou

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

Le théorème suivant découle directement du Théorème 5.5.


Théorème 5.7 Soit A une matrice carré d’ordre n dont tous les éléments diagonaux sont
non nuls. Alors la suite (x(k) ) définie par (5.32) converge vers la solution x du système
(5.19) pour toute donnée initiale x(0) ∈ Rn si et seulement si ρ(SG ) < 1.
Les deux Corollaires suivants découle du théorème précédent.
Corollaire 5.2 Si la matrice A est à diagonale strictement dominante alors la méthode de
Gauss-Seidel converge pour toute donnée initiale x(0) ∈ Rn .
Corollaire 5.3 Si la matrice A est symétrique définie positive alors la méthode de Gauss-
Seidel converge pour toute donnée initiale x(0) ∈ Rn .
(k+1)
Remarque 5.10 Dans la méthode de Jacobi pour calculer xi on a juste besoin des
(k) (k)
composantes x1 , · · · , xn à l’itération k, alors que dans la méthode de Gauss-Seidel pour
(k+1) (k+1) (k+1)
calculer xi on aura besoin des composantes x1 , · · · , xi−1 de x(k+1) à l’itération
(k) (k)
k + 1 plus les dernières composantes xi+1 , · · · , xn de x(k) à l’itération k.

5.2.5 Comparaison des Méthodes de Jacobi et Gauss-Seidel


En général il n’y a pas de critère de comparaison sur la vitesse de convergence des méthodes
de Jacobi et Gauss-Seidel. Cependant le théorème suivant montre que lorsque la matrice A est
tridiagonale la méthode de Gauss-Seidel converge plus rapidement que celle de Jacobi.
Théorème 5.8 Soit A une matrice tridiagonale et inversible dont tous les éléments diago-
naux sont non nuls. Alors les méthodes de Jacobi et Gauss-Seidel sont toutes les deux
convergentes ou divergentes. De plus on a la relation suivantes entres les deux rayons
spectraux des matrices d’itérations
2
(ρ(TJ )) = ρ(SG )
5.2. MÉTHODES ITÉRATIVES 105

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

ρ(SG ) = ρ(TJ )2 < ρ(TJ )

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

Calculons x(1) et x(2) à partir de (5.32), on a


 
5.2500
x(1) = SG x(0) + (D + L)−1 b =  3.8125 
 −5.0469 
3.1406
x(2) = SG x(1) + (D + L)−1 b =  3.8828 
−5.0293

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.

5.2.6 Test d’Arrêt des Méthodes Itératives


Quand doit-on arrêter une méthode itérative ? Pour trouver un critère d’arrêt écrivons l’al-
gorithme (5.21) d’une méthode itérative

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

On a alors d’après la relation (5.16) de la Proposition 5.4

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.

5.3 Application avec Matlab


5.3.1 Commandes \, chol, lu
Pour résoudre le système linéaire Ax = b on utilise la commande x = A\b. Calculons la
solution du système linéaire 3 × 3 suivant
>> A=[4 1 3 ; 1 7 3 ; 3 3 1 0 ] ;
>> b=[9; 0; 2 0 ] ;
>> %l a s o l u t i o n x du s y s t è m e Ax=b s ’ o b t i e n t par
>> x=A\b

x =

1.0000
−1.0000
2.0000
108 CHAPITRE 5. SYSTÈMES LINÉAIRES

La commande chol(A) donne la décomposition de la matrice A par la méthode de Cholesky


>> %C e s t l a m a t r i c e t r i a n g u l a i r e i n f é r i e u r e de C h o l e s k y
>> C=chol (A)

C =

2.0000 0.5000 1.5000


0 2.5981 0.8660
0 0 2.6458
alors que la commande lu(A) renvoie la décomposition de A par la méthode LU
>> [ l , u]= lu (A)

l =

1.0000 0 0
0.2500 1.0000 0
0.7500 0.3333 1.0000

u =

4.0000 1.0000 3.0000


0 6.7500 2.2500
0 0 7.0000

5.3.2 Méthodes Directes


Le script suivant resout le système Ax = b par la méthode des pivots de Gauss :
function x=g a u s s l ( a , b )
[ n , n]= s i z e ( a ) ;
[ p , q]= s i z e ( b ) ;
i f q~=1;
b=b ’ ;
end
f o r r =1:n−1;
p i v o t=a ( r , r ) ;
i f p i v o t ==0;
f o r k=r +1:n ;
i f p i v o t <abs ( a ( k , r ) ) ;
p i v o t=a ( k , r ) ;
l=k ;
end
end
t t=b ( l ) ;
b ( l )=b ( r ) ;
b ( r )= t t ;
f o r j =1:n ;
5.3. APPLICATION AVEC MATLAB 109

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

Le script chol1 renvoi la solution x du système Ax = b par la méthode de Cholesky :

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

Le dernier script thomas renvoi la solution x du système Ax = b par la méthode de Thomas. Le


script teste d’abord si la matrice est tridiagonale ou non.

function x=thomas (A, b )


[ n , n]= s i z e (A ) ;
%on t e s t e s i A e s t é g a l e à l a m a t r i c e formé d e s t r o i s d i a g o n a l e s de A ce
%q u i r e v i e n t à t e s t e r s i A e s t t r i d i a g o n a l e .
i f A==diag ( diag (A) ,0)+ diag ( diag (A, −1) , −1)+ diag ( diag (A, 1 ) , 1 ) ;
a l p h a (1)=A( 1 , 1 ) ;
y (1)=b ( 1 ) ;
f o r i =2:n ;
a l p h a ( i )=A( i , i ) −((A( i −1, i ) ∗A( i , i −1))/ a l p h a ( i − 1 ) ) ;
y ( i )=b ( i ) −((A( i , i −1)∗y ( i −1))/ a l p h a ( i − 1 ) ) ;
end
x ( n)=y ( n ) / a l p h a ( n ) ;
f o r i=n −1: −1:1;
x ( i )=(y ( i )−A( i , i +1)∗x ( i +1))/ a l p h a ( i ) ;
end
else
disp ( ’A␣n␣ e s t ␣ pas ␣ t r i d i a g o n a l e ’ ) ;
end
5.3. APPLICATION AVEC MATLAB 111

Test de comparaison entres les méthodes de Thomas, Cholesky et Gauss


Soit n ≥ 1 un entier et considérons la matrice n × n tridiagonale suivante

2 −1 0 ···
 
0  
 ..  1
 −1 2 −1 · · · .   0 
   
.. .. ..  .. 
A= 0 , b =
 
 . . . 0 
 . 
 
 . . ..  0 
 .. ..

. 2 −1 
1
0 ··· 0 −1 2 n×n

la matrice A résulte de la discrétisation de l’opérateur laplacien par la méthode des différences


finies en dimension 1. On peut montrer que A est une matrice définie positive symétrique et
inversible pour tout n ≥ 1. Le système Ax = b peut donc être résolu par les trois méthodes
directes : Gauss, Chlolesky et Thomas. Le script tridiag(n) renvoi pour chaque n la matrice A
et le vecteur b
function [ a , b]= t r i d i a g ( n )
a=2∗eye ( n)−diag ( o n e s ( n−1 ,1) , −1) − diag ( o n e s ( n − 1 , 1 ) , 1 ) ;
b = [ 1 ; zeros ( n − 2 , 1 ) ; 1 ] ;
On veut tester le temps de résolution que met chacune des trois méthodes pour résoudre le
système Ax = b ceci pour différentes valeurs de n. Pour cela on utilise la commande cputime
qui renvoie le temps cpu en seconde de chaque méthode. Le teste commence pour une matrice
de taille n = 700 et se poursuit pour s’arrêter à m = 710. Le script suivant peut s’exécuter en
bloc dans le work-space
>> n=700;m=710;
f o r i=n :m;
[ a , b]= t r i d i a g ( i ) ;
nn ( i )= i ;
t 1 ( i )=cputime ;
x=thomas ( a , b ) ;
t 1 ( i )=cputime−t 1 ( i ) ;
t 2 ( i )=cputime ;
x=g a u s s l ( a , b ) ;
t 2 ( i )=cputime−t 2 ( i ) ;
t 3 ( i )=cputime ;
x=c h o l 1 ( a , b ) ;
t 3 ( i )=cputime−t 3 ( i ) ;
end
disp ( t 2 ( n :m) ) ; disp ( t 1 ( n :m) ) ; disp ( t 3 ( n :m) ) ;
Columns 1 through 8

3.3700 3.4100 3.3600 3.4700 4.5600 5.0000 5.2100


4.8200

Columns 9 through 11

4.6900 4.8600 5.0400


112 CHAPITRE 5. SYSTÈMES LINÉAIRES

Columns 1 through 8

0.0100 0 0.0100 0.0100 0.0100 0 0.0100


0.0100

Columns 9 through 11

0.0100 0.0200 0.0100

Columns 1 through 8

1.5800 1.5800 1.6000 1.5800 2.1800 2.7400 1.7700


2.6300

Columns 9 through 11

1.8100 2.3000 2.4900

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.

Remarque à propos de la commande ”\”. La commande Matlab ”\” exploite l’effica-


cité de chaque méthode directe pour résoudre le système linéaire Ax = b en le moins de
temps possible. L’algorithme de la commande ”\” est implémenté de la manière suivante :
— Si A est une matrice tridiagonale alors c’est l’algorithme de Thomas qui est utilisé.
— Si A est triangulaire alors le système Ax = b est résolu à l’aide de l’algorithme de la
descente ou de la remonté.
— Si A est symétrique et ayant des éléments diagonaux strictement positifs alors l’algo-
rithme tente une décomposition de Cholesky.
— Dans les autres cas l’algorithme utilise la méthode LU ou celle de Gauss.
D’autres algorithme peuvent être utilisés comme celui du gradient conjugué avec pré-
conditionneur ou bien la factorisation QR dans le cas de systèmes indéterminés. Dans
certains cas la commande Matlab "\" fait appel à des bibliothèque spécifiques comme
UMFPACK.
5.3. APPLICATION AVEC MATLAB 113

5.3.3 Méthodes Itératives


Matrice de Hilbert et conditionnement
On appelle matrice de Hilbert A = (aij )1≤i,j≤n la matrice suivante
1
aij = , i, j = 1, ..., n
i+j−1
On peut montrer que c’est une matrice symétrique et définie positive pour tout n ≥ 1. Le système
linéaire Ax = b peut donc être résolu par les méthodes de Cholesky (Théorème 5.4) et Gauss-
Seidel (Corollaire 5.3).
La commande Matlab hilb(n) renvoie la matrice de Hilbert de taille n.
>> hilb ( 4 )

ans =

1.0000 0.5000 0.3333 0.2500


0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
0.2500 0.2000 0.1667 0.1429
La commande Matlab cond(A) renvoie le conditionnement de la matrice A. Par exemple
>> cond ( hilb ( 4 ) ) , cond ( hilb ( 1 0 ) ) , cond ( hilb ( 1 5 ) )

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é.

Effet du conditionnement d’une matrice


Le script [x,k]=iterative(A,b,x0,e,tol) retourne la solution approchée x ainsi que le
nombre d’itérations k du système Ax = b par la méthode de Jacobi lorsque e=’J’ et Gauss-Seidel
lorsque e=’G’. Le critère d’arrêt utilisé est celui du résidu (voir (5.37)).
function [ x , k]= i t e r a t i v e ( a , b , x0 , e , t o l )
D=diag ( diag ( a ) ) ; L=t r i l ( a)−D;U=t r i u ( a)−D;
x=x0 ;
k=0;
114 CHAPITRE 5. SYSTÈMES LINÉAIRES

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

Résolvons le système de Hilbert Ax = b par les méthodes de Gauss-Seidel et Cholesky pour


différentes valeurs de la taille de la matrice A. On prendra tol = 10−8 et x0 = (0, · · · , 0)t . Pour
chaque valeur de la taille de la matrice on calcule les erreurs relatives commises par les deux
méthodes. Le script suivant, à exécuter en bloc dans le work-space, retourne les erreurs relatives
er1 et er2 par les méthodes de Cholesky et Gauss-Seidel respectivement.

>> 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

166.9450 191.4459 335.0350 134.0171 159.3293 249.6727 566.9041


300.7551
5.3. APPLICATION AVEC MATLAB 115

Columns 9 through 11

247.5770 244.6951 122.9992

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

Figure 5.2 – Structure de la matrice de Poisson pour n = 4

>> 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

Temps de calcul de la méthode de Cholesky et Gauss-Seidel


Dans ce TP on veut comparer le temps de calcul de la méthode de Cholesky et celle de
Gauss-Seidel dans le cas d’une matrice large bande. On prendra comme matrice test la matrice
de Poisson. Pour chaque i variant de n à m on résout le système Ax = b, où A est la matrice
de Poisson de taille i2 , par la méthode de Cholesky et celle de Gauss-Seidel en prenant x0 =
(0, · · · , 0) et tol = 10−4 . Le temps cpu en seconde est obtenu par la commande cputime. Le
script suivant renvoi deux vecteurs t1 et t2 contenant chacun le temps cpu en seconde de chaque
méthode pour la matrice de Poisson dont la taille varie de 625 à 900.
>> n=25;m=30;
t o l =1e −4;
t 1 =0; t 2 =0;
f o r i=n :m;
x0=o n e s ( i ^ 2 , 1 ) ;
a=g a l l e r y ( ’ p o i s s o n ’ , i ) ;
b=a∗ o n e s ( i ^ 2 , 1 ) ;
t 1 ( i )=cputime ;
chol1 (a , b ) ;
t 1 ( i )=cputime−t 1 ( i ) ;
t 2 ( i )=cputime ;
i t e r a t i v e ( a , b , x0 , ’G ’ , t o l ) ;
t 2 ( i )=cputime−t 2 ( i ) ;
end
disp ( t 1 ( n :m) ) ; disp ( t 2 ( n :m) ) ;

2.3300 2.8700 3.4700 4.3000 5.2300 6.2300

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.

Test de pertinence du critère d’arrêt sur le résidu


Quel est l’efficacité du critère d’arrêt sur le résidu des méthodes itératives lorsque les matrices
sont mal conditionnées ? Considérons le cas de la matrice de Hilbert A de taille n qui est l’exemple
type de matrice mal conditionnée. Le script suivant résout le système Ax = b par la méthode de
Gauss-Seidel pour des valeurs de n allant de 100 à 110. b est choisit telle que la solution exacte
kb − Ax(n) k
soit le vecteur unité x = (1, · · · , 1)t . A chaque n on calcule le résidu res(n) = et
kbk
kx − x(n) k
l’erreur relative commise sur la solution ern = .
kxk
>> n=100;m=110;
t o l =1e −4;
r e s =0;
e r =0;
f o r i=n :m;
a=hilb ( i ) ;
5.3. APPLICATION AVEC MATLAB 117

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

0.0995 0.1001 0.1007 0.1014 0.1020 0.1026 0.1032


0.1038

Columns 9 through 11

0.1044 0.1050 0.1056

1 . 0 e −04 ∗

Columns 1 through 8

0.9924 0.9968 0.9863 0.9907 0.9951 0.9997 0.9886


0.9932

Columns 9 through 11

0.9980 0.9865 0.9914


On remarque que l’erreur relative er sur la solution tourne autour de 10% alors que le résidu
res reste bien en dessous de tol = 10−4 . Ce exemple illustre le cas ou l’erreur relative n’est plus
contrôlée par le résidu car la matrice de Hilbert qui nous a servit d’exemple dans ce test est très
mal conditionnée. Le test d’arrêt par le résidu n’est donc pertinent que si la matrice est bien
conditionnée.
Remarque 5.13 Il existe des algorithmes spécifiques pour la résolution des systèmes li-
néaires de grande taille ayant des matrices mal conditionnées. De tels algorithmes sont en
général très couteux en terme de temps de calcul. Les constructeurs de super-ordinateurs
tels Cray Inc, IBM, Fujitsu testent la puissance de calcul de leurs super-ordinateurs en
utilisant l’algorithme de la méthode des pivots de Gauss avec des matrices très mal condi-
tionnées telle la matrice de Hilbert.

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

— En déduire le déterminant de la matrice du système précédent.


2. (Méthode de Jordan)
La méthode de Jordan consiste à transformer, en utilisant la méthode des pivots de Gauss,
une matrice non singulière A en une matrice diagonale.
— Résoudre le système de l’exercice précédent par la méthode de Jordan.
3. Montrer que la matrice  
1 0 0 1
 −1 1 0 1 
A=  −1 −1 1 1 

−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

— Trouver un système équivalent au système (5.39) pour lequel la méthode de Jacobi et


de Gauss-Seidel convergent.
— Calculer la matrice d’itération de Jacobi TJ et de Gauss-Seidel SG du nouveau système.
— En partant de x(0) = (1, 0.8, 0.8)> calculer la solution approchée x = (x1 , x2 , x3 )> par
la méthode de Jacobi à 10−2 près en utilisant le critère d’arrêt sur l’incrément.
5.3. APPLICATION AVEC MATLAB 119

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 le système Ax = f admet une solution unique x.


— Calculer cette solution par l’algorithme de Thomas.
— Montrer que la matrice A est définie positive. En déduire que les méthodes de Jacobi
et Gauss-Seidel sont convergentes (ne pas calculer les matrices d’itération TJ et SG ).
— Laquelle des deux méthodes de Jacobi et Gauss-Seidel est la plus rapide ? Justifier
votre réponse.
9. (Méthode de relaxation (SOR))
Soit A une matrice carré et ω un réel non nul. On veut modifier la méthode de Gauss-
Seidel. Pour cela écrivons que A = D+L+U où L est triangulaire inférieure, U triangulaire
supérieure et D une matrice diagonale. Posons A = M − N telle que M = D ω + L.
— Calculer N
— Donner l’algorithme de la méthode itérative associée à la décomposition précédente et
montrer que :
x(k+1) = Jω x(k) + M −1 b, k ≥ 0,
où Jω = M −1 N .
— Quelle est cette méthode lorsque ω = 1 ?
Application : Considérons la matrice tri-diagonale suivante :
 
4 3 0
A =  3 4 −1 
0 −1 4

— 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

— Montrer que la méthode de Jacobi converge pour le système précédent.


— Calculer la matrice de Jacobi TJ et écrire l’algorithme de Jacobi associé au système
précédent.
— En partant de x(0) = (1, −1, 1, −1)> calculer les deux premières itérations x(1) et x(2) .
— Calculer l’erreur commise kx − x(2) k1 .
11. Soit α un réel non nul et considérons le système suivant

 αx1 + x3 = 4
αx2 = 2
x1 + αx3 = 4

— Écrire le système précédent sous forme matricielle Ax = b.


— Calculer la matrice de Gauss-Seidel SG en fonction de α.
— Calculer le rayon spectral de la matrice SG .
— Donner une condition nécessaire et suffisante sur α pour que la méthode de Gauss-
Seidel converge.
Dans toutes la suite on pose α = 4.
— Écrire l’algorithme de Gauss-Seidel.
— Calculer les deux premières itérations x(1) et x(2) par la méthode de Gauss-Seidel en
partant de x(0) = (0, 0, 0)> .
— Montrer que la matrice A est symétrique et définie positive.
Calculer la solution exacte du système Ax = b par la méthode de Cholesky.
— Quelle est l’erreur effective kx − x(2) k2 , où x est la solution exacte ?
Annexe A

Initiation a Matlab

Matlab est l’acronyme de "MATrix LABoratory". C’est un logiciel de calcul numérique de


type propriétaire édité par la société américaine The Mathworks Inc 1 . Matlab est disponible
sous différentes plates-formes : Windows, Linux et Mac OS. Matlab possède son propre langage
de programmation, on peut donc écrire des scripts dans ce langage et les exécuter directement
dans le work-space.

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é.

Figure A.1 – Capture de la fenêtre de Matlab

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


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 =

0.5403 −0.9111 0.9912

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,

Figure A.2 – Graphe de f (x) = cos(x2 ) dans l’intervalle [0, π]

par exemple dans le script


>> f=@( x ) cos ( x . ^ 2 ) ;
>> f p l o t ( f , [ 0 pi ] , ’ k . ’ )
le graphique est tracé en noir avec des points comme le montre la figure A.3.

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

retourne la solution de l’équation du premier degré ax + b = 0. Le script demande deux réels a


et b et teste à l’aide de l’instruction conditionnelle if...else...end si a est nul ou non. Dans
le cas a 6= 0 il retourne la solution x = − ab à l’aide de la commande disp sinon il affiche le
message "il n y a pas de solutions". Pour exécuter ce script on peut le faire directement dans le
work-space en l’exécutant par bloc en tapant après la fin de chaque instruction "shift+entrée".
A la fin quand on a terminé l’écriture du script on tape "entrée" et le script sera exécuté en bloc.
Une autre façon d’exécuter ce script est de l’écrire à l’aide de l’éditeur Matlab. On clique sur le
bouton "new script" et s’ouvre une nouvelle fenetre celle de l’éditeur de Matlab. On tape alors
notre script et à la fin on l’enregistre dans le répertoire courant de Matlab en lui donnant un
nom de fichier avec l’extension .m, par exemple equ1.m. Pour exécuter le script on tape dans le
work-space le nom du fichier sans l’extension puis on entre les deux nombres demandés et enfin
on tape "entrée".
>> equ1
e n t r e z un p r e m i e r nombre 5
e n t r e z un s e c o n d nombre 7
1.4000
Les fonctions sont des scripts qui ont des arguments d’entrés et de sorties. La syntaxe d’une
fonction est la suivante
[ y1 , . . . , ym]= function nom_func ( x1 , . . . , xn )
i n s t r u c t i o n s de l a f o n c t i o n
une fonction possède donc un nom nom_func suivit des arguments d’entrés x1,...,xn et retourne
des arguments de sorties y1,...,ym. Pour exécuter une fonction on tape son nom suivit de la
valeurs des arguments d’entrés. Si on ne précise pas les arguments de sorties alors la fonction
retourne seulement le premier arguments y1. Par exemple la fonction suivante reçoit en argument
un entier n ≥ 1 et retourne le nombre de diviseurs k de n.
function k=d i v i s e u r ( n )
k=0;
f o r i =1:n ;
i f mod( n , i )==0;
k=k+1;
end
end
126 ANNEXE A. INITIATION A MATLAB

Pour exécuter la fonction pour n = 1234 on tape


>> d i v i s e u r ( 1 2 3 4 )

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

plot(x,y) tracé linéaire des données discrètes (x, y)


fplot(f,[a,b],’couleur forme’) tracé du graphique de f (x) sur [a, b] où :
couleur=r(rouge), b(bleue), g(vert), y(jaune), etc.
et forme=o (rond),b(triangle),+ (plus), . (points),
* (étoile), x (croix), etc.
title(’titre du graphique’) titre du graphique
xlabel(’label de l’axe des x’) label de l’axe des x
ylabel(’label de l’axe des y’) label de l’axe des y
axis([xmin xmax ymin ymax]) graphique dans le carré
[xmin xmax ymin ymax]
legend(’legende’) legende
hold on Superposition de plusieurs graphiques
dans la même fenêtre
hold off Mettre fin à la commande précédente
Bibliographie

1. A. Fortin, Analyse numérique pour ingénieurs, Presses Internationales Polytechnique, 2008


2. A. Quarteroni & F. Saleri, Calcul scientifique, Springer 2006
3. R. L. Burden & J. D. Faires, Numerical analysis, Brooks/Cole 2010
4. S. C. Chapra & R. P. Canale, Numerical methods for engineers, McGraw-Hill, 2010
5. J. L. Merrien, Analyse numérique avec Matlab, Dunod 2007
6. B. Radi & A. El Hami, Mathématiques numériques pour l’ingénieur, ellipses 2010
7. J. Th. Lapresté, Introduction à MATLAB, ellipses 2009

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.

Vous aimerez peut-être aussi