Vous êtes sur la page 1sur 133

Table des matières

I Le calcul Numérique et analyse d’erreur 5


I.1 Modélisation et sources d’erreur . . . . . . . . . . . . . . . . 7
I.2 Estimation de l’erreur de calcul . . . . . . . . . . . . . . . . . 10
I.2.1 Erreur absolue : . . . . . . . . . . . . . . . . . . . . 10
I.2.2 Erreur relative : . . . . . . . . . . . . . . . . . . . . 10
I.2.3 Opérations sur les erreurs . . . . . . . . . . . . . . . . 11
I.3 Représentation des nombres . . . . . . . . . . . . . . . . . . 12
I.3.1 Les chiffres significatifs et l’arrondi . . . . . . . . . . 15
I.4 Codage sur ordinateur . . . . . . . . . . . . . . . . . . . . . . 19
I.4.1 Erreur de représentation et précision machine . . . . . 20
I.4.2 Quelques valeurs particulières : . . . . . . . . . . . . 23
I.5 Arithmétique numérique . . . . . . . . . . . . . . . . . . . . 25
I.5.1 Les opérations élémentaires sur machine . . . . . . . 25
I.5.2 Conséquences dangereuses . . . . . . . . . . . . . . 25
I.5.3 Propriétés des opérations sur les flottants . . . . . . . 30
I.5.4 Quelques solutions . . . . . . . . . . . . . . . . . . . 30
I.6 Evaluer la qualité d’un calcul numérique . . . . . . . . . . . . 31
I.6.1 Conditionnement d’une fonction . . . . . . . . . . . . 32
I.6.2 Stabilité d’un calcul numérique . . . . . . . . . . . . 33
I.7 Processus itératifs et convergence . . . . . . . . . . . . . . . 37

Références bibliographiques 41

II Résolution de f (x) = 0 43
II.1 Position du problème . . . . . . . . . . . . . . . . . . . . . . 44
II.2 Estimation de la solution approchée . . . . . . . . . . . . . . 44
II.3 Résolution par les méthodes itératives . . . . . . . . . . . . . 45
Méthodes Numériques

II.3.1 Convergence d’une méthode itérative . . . . . . . . . 45


II.3.2 Résolution par la méthode de bissection . . . . . . . . 46
II.3.3 Méthode du point fixe . . . . . . . . . . . . . . . . . 53
II.3.4 Convergence de la méthode et choix de g(x) : . . . . . 55
II.3.5 Applications . . . . . . . . . . . . . . . . . . . . . . 57
II.4 Résolution par la méthode de Newton . . . . . . . . . . . . . 62
II.4.1 Théorème de Taylorauthors]Taylor . . . . . . . . . . . 62
II.4.2 Principe et algorithme de la méthode de Newton . . . 62
II.4.3 Convergence de la méthode de Newton . . . . . . . . 63
II.4.4 Applications . . . . . . . . . . . . . . . . . . . . . . 64
II.4.5 Accélération de la convergence et algorithme de New-
tonauthors]Newton pondéré . . . . . . . . . . . . . . 65
II.5 Résolution par la méthode de la sécante . . . . . . . . . . . . 65
II.5.1 Principe de la méthode de la sécante . . . . . . . . . . 65
II.5.2 Applications . . . . . . . . . . . . . . . . . . . . . . 66
II.6 Résolution des équations polynomiales . . . . . . . . . . . . . 68
II.6.1 Rappels de quelques propriétés des polynômes . . . . 68
II.6.2 Schéma de Horner . . . . . . . . . . . . . . . . . . . 69
II.6.3 Méthode de Bairstow . . . . . . . . . . . . . . . . . . 70
II.6.4 Applications . . . . . . . . . . . . . . . . . . . . . . 74
II.6.5 Bilan comparatif . . . . . . . . . . . . . . . . . . . . 79
II.7 Résolution avec la librairie de Matlab . . . . . . . . . . . . . 79
II.7.1 Applications . . . . . . . . . . . . . . . . . . . . . . 80
II.7.2 Limitations : . . . . . . . . . . . . . . . . . . . . . . 81

III Interpolation et approximation Polynômiales 83


III.1 Position du problème de l’interpolation . . . . . . . . . . . . 84
III.2 Interpolation de Lagrange . . . . . . . . . . . . . . . . . . . . 85
III.2.1 L’erreur d’interpolation de Lagrange . . . . . . . . . . 86
III.3 Interpolation de Newton . . . . . . . . . . . . . . . . . . . . 89
III.3.1 Cas particulier de points équidistants . . . . . . . . . 94
III.4 Position du problème de l’approximation . . . . . . . . . . . . 103
III.5 Approximation au sens des moindres carrées . . . . . . . . . . 104
III.5.1 Régression linéaire . . . . . . . . . . . . . . . . . . . 104
III.5.2 Cas continu . . . . . . . . . . . . . . . . . . . . . . . 106
III.5.3 Généralisation . . . . . . . . . . . . . . . . . . . . . 107
IV Intégration Numériques 109
IV.1 Position du problème . . . . . . . . . . . . . . . . . . . . . . 110
IV.2 Méthode directe . . . . . . . . . . . . . . . . . . . . . . . . . 110
IV.3 Méthodes de Newton-Cotes . . . . . . . . . . . . . . . . . . 112
IV.3.1 Formule des trapèzes . . . . . . . . . . . . . . . . . . 113
IV.3.2 Formules de Simpson . . . . . . . . . . . . . . . . . . 115
IV.4 Quadratures de Gauss . . . . . . . . . . . . . . . . . . . . . . 118
IV.4.1 Généralisation . . . . . . . . . . . . . . . . . . . . . 121

V Equations différentielles ordinaires 123


V.1 Rappels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
V.2 Méthode d’Euler . . . . . . . . . . . . . . . . . . . . . . . . 126
V.2.1 Interprétation géométrique : . . . . . . . . . . . . . . 126
V.2.2 Estimation de l’erreur . . . . . . . . . . . . . . . . . 128
V.2.3 Méthode d’Euler Implicite . . . . . . . . . . . . . . . 129
V.3 Méthode de Taylor . . . . . . . . . . . . . . . . . . . . . . . 130
V.4 Méthode de Runge-Kutta . . . . . . . . . . . . . . . . . . . . 131
V.4.1 Méthode de Rung-Kutta 22 : . . . . . . . . . . . . . . 132
V.4.2 Méthode de Rung-Kutta 44 : . . . . . . . . . . . . . . 132
Méthodes Numériques
Chapitre I

Le calcul Numérique et analyse


d’erreur

L IDÉE de faire des calculs à moindre effort est aussi veille que les mathéma-
tiques comme en témoigne, entre autres, les travaux de John Napier. Au
15me siècle, extraire une racine carrée ou élever à une puissance importante
représentaient des opérations très coûteuses à faire à la main et pourtant très
courantes dans la vie de tous les jours quand on est astronome ou naviga-
teur. En cherchant alors à rendre possible des calculs compliqués jusqu’alors,
Napier mets en place une méthode numérique qui √ conduit à la définition du
logarithme. Ainsi, par exemple, pour calculer x = 2357814 × 548127556, la
méthode traditionnelle fait appel à une multiplication de deux grands nombres
et une démarche très longue d’extraction de racine. Napier propose, comme
alternative, la méthode suivante :

x = 2357814 × 548127556 = 2.357814.106 × 5.48127556.108 × 100.5
X = log10 x = log10 2357814 + log10 548127556 + log10 100.5
= 6 + log10 (2.357814) + 8 + log10 (5.48127556) + 0.5

Connaissant log10 2.357814 ≈ 6.3725 et log10 5.48127556 ≈ 8.7389, on cal-


cule la valeur de X. Finalement, on déduit la valeur dont le log correspond
le mieux à X. Ce n’est rien d’autre que la valeur de x approchée avec une
certaine erreur.[1]
La mise en oeuvre numérique de cette méthode, comme pour toute autre mé-
thode numérique à l’époque , se faisait à l’aide de valeurs tabulées qu’on
Méthodes Numériques

appelle des feuilles de calcul. Cette table fournit les valeurs du logarithme pour
les nombres compris entre 0 et 10 de manière discrète (donc pas pour tous !).
Ce n’est que dans la foulée de la guerre mondiale et la course vers la
bombe atomique que les ordinateurs arrivent pour remplacer les feuilles de
calculs. Depuis, une nouvelle discipline appelée Analyse numérique est née à
l’interface des mathématiques et de l’informatique avec comme objectif l’éla-
boration et la mise en pratique des méthodes permettant de résoudre, par des
calculs purement numériques, des problèmes d’analyse mathématique délicats.
De la simple calculatrice aux super-ordinateurs, les machines se basent
sur une représentation des nombres qui est limitée par leur capacité mémoire.
Cette représentation peut être une source principale pour beaucoup de pro-
blèmes associés à l’usage des calculateurs. L’objectif principal de ce chapitre
est de comprendre le principe de cette représentation afin d’en minimiser les
inconvénients.
Le calcul Numérique et analyse d’erreur

I.1 Modélisation et sources d’erreur


Aujourd’hui, avec les progrès technologiques réalisés dans le traitement
automatique de l’information on arrive à modéliser et simuler des systèmes
complexes.
Par modélisation, on entends la démarche qui consiste à exprimer un problème
donné (physique, économique, biologique... etc) par une (des) équation(s) ma-
thématique(s) sous formes différentielles, intégrales, non linéaires,... etc. Une
fois formulés mathématiquement, les problèmes réels sont inaccessibles par
les méthodes analytiques, on ne peut les approcher qu’à travers des méthodes
numériques.
Ces méthodes élaborent des algorithmes de calcul qui sont ensuite transformé
en programmes informatiques et tournés sur une machine de calcul pour pro-
duire une expérience numérique : c’est la simulation.

F IGURE I.1 – La modélisation en schéma


Méthodes Numériques

Comme montré sur Fig 1.1, à chacune de ses étapes, tout calcul numé-
rique est entaché d’erreurs dont la source peut être une ou la combinaison de
plusieurs facteurs :
• Erreurs de données :
1. Erreur de mesure : peuvent provenir de mesures effectuées sur
le phénomène étudié ou de constantes physiques approchées.
2. Erreur de modélisation : dues à des termes dont la contribution
a été négligée dans la formulation mathématique du problème.
Ces erreurs sont extérieures au calcul numérique, on n’a pas de contrôle
sur elles. Cependant, il est important de comprendre leur comporte-
ment pendant le calcul à travers les notions de conditionnement et de
stabilité qu’on verra plus loin.
• Erreurs numériques : :
1. Erreur de troncature : Liée à la méthode de résolution nu-
mérique utilisée en général. On peut citer l’approximation d’une
dérivée par un développement de Taylor à l’ordre 1, le calcul d’une
intégrale par une somme discrète d’aires sous la courbe, ... etc.
Elles sont dues aussi à l’utilisation des fonctions prédéfinies (bi-
bliothèques mathématiques) dans les programmes. En réalité, ces
fonctions font appel a une partie d’un programme qui remplace une
fonction continue par une fonction discrète tronquée à un certain
ordre.

Exemple :
Prenons un cas simple : le calcul du logarithme Népé-
rien d’un nombre ln(x). On peut écrire son développement en série
de Taylor au voisinage de 1 qui donne :

1 1
ln(x) = 0 + (x − 1) − (x − 1)2 + (x − 1)3 + ...
2! 3!
En faisant un changement de variable X = x − 1 et en se limitant
à l’ordre 3, la fonction ln(X + 1) est approchée par le polynôme
d’ordre 3 :

X3 X2
P3 (X) = − +X
3! 2!
Le calcul Numérique et analyse d’erreur

Calculons ln(2) ≈ P3 (1) en faisant appel au schéma de Horner :


Pi = ai + x Pi−1 avec Po = ao et ai est le coefficient de xn−i dans le
polynôme P(x) = ao xn + a1 xn−1 + ... + an−1 x + an

1 1
Po → =
3! 6
1 1 −2
P1 → − + × 1 =
2 6 6
2 4
P2 → 1 − × 1 =
6 6
4 4
P3 → 0 + × 1 =
6 6

Le résultat correspond à ln(2)4/6 ≈ 0.6666. Par contre un dévelop-


pement à l’ordre 4 donne le polynôme :

X4 X3 X2
P4 (X) = − + − +X
4! 3! 2!

Le calcul de : ln(1 + 1) ≈ P4 (1) donne ln(2) ≈ 15/24 ∼ 0.6250.


D’autre part, le calcul fait avec MATLAB donne ln(2) = 0.6931.
On peut toujours affiner notre calcul en prenant des ordres plus
élevés dans le développement en séries de Taylor. Quel que soit
l’ordre, la série prise est finie avec des termes tronqués à l’ordre n
et le résultat reste toujours approximatif.
Ce genre d’erreur se manifeste d’avantage lorsque les compilateurs
des langages proposent différentes bibliothèques pour le même
calcul comme est le cas du sous-programme (subroutine) générateur
des nombres aléatoires (rand sous MATLAB ).
2. Erreurs d’arrondi : Ce sont les erreurs dues à la nature finie
et discrète des mémoires machine. Ce type d’erreur intervient à
la représentation des données ainsi qu’à chaque étape du calcul
numérique, on s’y intéressera en particulier dans la suite.
3. Erreurs de conditionnement et de stabilité : Les erreurs qui
apparaissent dans le résultat d’une opération comme conséquence
des erreurs des opérandes.
Méthodes Numériques

I.2 Estimation de l’erreur de calcul


I.2.1 Erreur absolue :
On appelle erreur absolue sur la valeurs approchée x∗ de la valeurs exacte
x, la quantité réelle positive ∆(x) définie comme l’écart entre les deux valeurs :

∆(x) = |x − x∗ | (I.1)

On remarque que l’erreur absolue est d’autant plus petite que x∗ se rapproche
de x. C’est une quantification de la précision de la valeur approchée x∗ .

Exemple :
Le nombre exact π = 3.14159265359... possède une représenta-
tion décimale infinie. Sa valeur ne nous est donc connue qu’approximativement.
Historiquement, plusieurs démarches mathématiques ont tenté de déterminer
le maximum de chiffres dans la représentation de π. De l’antiquité à nos jours,
on est passé de 2 chiffres à 1010 !
Les fractions x1∗ = 355 ∗ 377
113 = 3.14159292035... , x2 = 120 = 3.14166666667... et
x3∗ = 22
7 = 3.14285714286... en sont quelques exemples.
On constate, par intuition, que x1∗ est plus précis que x2∗ tous deux plus précis
que x3∗ . Ceci est confirmé par le calcul de l’erreur absolue sur chacun des
nombres approchés :

31415926536 − 31415929204
∆(x1 ) = |x − x1 ∗ | = | 10
| = 0.27 × 10−6
10
∗ 31415926536 − 31416666667
∆(x2 ) = |x − x2 | = | 10
| = 0.74 × 10−4
10
31415926536 − 31428571429
∆(x3 ) = |x − x3 ∗ | = | | = 0.12 × 10−2
1010

I.2.2 Erreur relative :


L’erreur relative est la quantité réelle positive définie par :

|x − x∗ | ∆(x)
r(x) = = (I.2)
|x| |x|
Le calcul Numérique et analyse d’erreur

Souvent exprimée en pourcentage, elle donne qualitativement l’importance


de l’erreur dans le calcul de x.

Exemple :
1
Le nombre fractionnaire x1 = 14 est dix fois plus petit que x2 = 57 .
Néanmoins, l’erreur absolue sur leurs représentations approchées respectives
x1∗ = 0.0714 et x2∗ = 0.7143 est la même :
1 714 1
∆(x1 ) = |x − x1 ∗ | = | − 4|= × 10−4
14 10 7
∗ 5 7143 1
∆(x2 ) = |x − x2 | = | − |= × 10−4
7 104 7
Regardons maintenant l’importance de cette erreur dans chacun des deux cas :
|x − x1 ∗ |
r(x1 ) = = 2 × 10−5 = 0.002 × 10−2 = 0.002%
|x1 |
|x − x2 ∗ | 2
r(x2 ) = = 10−5 = 0.0002 × 10−2 = 0.0002%
|x2 | 10
Ainsi, la même erreur absolue est dix fois plus importante dans l’approximation
de x1 par x1 ∗ que dans celle de x2 par x2 ∗ .

I.2.3 Opérations sur les erreurs


Soient deux nombres exacts x1 et x2 approchés par x1 ∗ et x2 ∗ avec une
erreur absolue de ∆(x1 ) = |x1 − x1 ∗ | et ∆(x2 ) = |x2 − x2 ∗ | respectivement. On
peut montrer facilement les résultats suivants : [2]
• Erreur sur la somme :
a. L’erreur absolue sur la somme x1 + x2 est la somme des erreurs
absolues sur x1 et x2 : ∆(x1 + x2 ) = ∆(x1 ) + ∆(x2 )
1) ∆(x2 )
b. L’erreur relative sur la somme vaut : r(x1 + x2 ) = x∆(x
∗ +x∗ + x∗ +x∗
1 2 1 2
• Erreur sur le produit :
a. L’erreur absolue : Lorsqu’on effectue un produit de deux nombres
x1 , x2 il y a un risque d’amplification des erreurs absolues. Le risque
est d’autant plus élevé que les nombres sont grands car l’erreur absolue
commise sur le produit x1 . x2 vaut :
∆(x1 . x2 ) = x2∗ . ∆(x1 ) + x1 ∗ . ∆(x2 )
Méthodes Numériques

b. L’erreur relative : sur la multiplication ou la division de deux valeurs


1) ∆(x2 )
est la somme des erreurs relatives : r(x1 . x2 ) = ∆(x
x1 ∗ + x2 ∗

I.3 Représentation des nombres


Un nombre réel x peut avoir deux représentations :
1. A virgule fixe :

x = signe × valeur

2. A virgule flottante :

x = signe × M × b p

où M est la mantisse, b est la base de numérisation et p l’exposant. La mantisse


contient un nombre n de chiffres compris entre 0 et (b-1).

Exemple :
Le nombre fractionnaire x = 438 25 s’écrit x = +17.52 en virgule
fixe et peut avoir plusieurs écritures équivalentes en virgule flottante dans la
base 10 : x = +0.1752 × 102 , x = +1.752 × 10, x = +175.2 × 10−1 , etc ...
Pour éviter des représentations différentes du même nombre, la mantisse
est normalisée. Cela revient simplement à l’écrire en notation scientifique :
x = signe × M1 . M2 M3 ....Mn × b p , où M1 est non nul Dans l’exemple pré-
cédent, la deuxième écriture x = +1.752 × 10 est la représentation normalisée
de x.
De façon générale, un nombre réel x est représenté en décimal sous la forme :
dm dm−1 ...d1 d0 .d−1 d−2 ...d−n . En écriture compacte, x peut être exprimé par
la somme : x = ∑m k
k=−n dk 10 , d ∈ {0, 1, . . . , 9}
Ainsi, en décimal, un nombre fractionnaire ne peut avoir une représentation
exacte en virgule flottante que s’il peut s’écrire sous la forme 10Xk , c’est-à-dire
que sa mantisse normalisée contient un nombre n fini de chiffres.
Comparons, à titre explicatif, entre x1 = 438 1752
25 = 100 = 17.52 et le rationnel
x2 = 31 qui vaut +0.333333....
Contrairement à x1 , x2 ne peut pas être transformé sous la forme bXk , sa repré-
sentation en virgule flottante s’écrit avec une infinité de décimales et donc sa
valeur ne peut être qu’ approximative.
Le calcul Numérique et analyse d’erreur

Le fonctionnement des machines se base sur l’algèbre de Bool qui fait appel
au code binaire dont la base de numérisation est b = 2. Ainsi, tout nombre réel
écrit en décimal doit être converti en binaire (par l’assembleur) avant d’être
traité par l’ordinateur.

Exercice 1:
1. Ecrire en binaire le nombre x = 9.
2. Convertir y = 9.375 en binaire.
Réponse :
1. Le nombre x=9 dans la base décimale
correspond à la combinaison x2 = 1001 dans
la base binaire. La reconversion vers la base
décimale donne:
x10 = 1 × 23 + 0 × 22 + 0 × 21 + 1 × 20 .
2. Le nombre y = 9.375 s’écrit en binaire
y2 = 1001.011 et sa reconversion dans la base
décimale est:
y10 = 1 × 23 + 0 × 22 + 0 × 21 + 1 × 20 + 0 × 2−1 + 1 ×
2−2 + 1 × 2−3 .

9 2
9.375 =?
8 4 2
910 = 10012
1 4 2 2
0 2 1
0.375x2 = 0.75
0
0.75x2 = 1.5
0.5x2 = 1.0
9 = 10012 0.375 = 1001.0112
D’autres écritures en virgule flottante sont possibles, elles sont équivalentes.
On en cite quelques unes :

x2 =1001 = 100.1 × 21 = 10.01 × 22 = 1.001 × 23 = ...


y2 =1001.011 = 100.1011 × 21 = ... = 1.001011 × 23 = ...
La normalisation de ces écritures binaires consiste à représenter le nombre par
une mantisse qui contient un chiffre 1 avant la virgule : Pour les deux exemples
Méthodes Numériques

précédents, on écrit : x2 = 1.001 × 23 et y2 = 1.001011 × 23 . C’est l’équivalent


de l’écriture scientifique en décimal.

Sous Matlab, le passage de la base décimale à


la base binaire se fait en invoquant la fonction
dec2bin (l’inverse se fait par bin2dec)
% convertir le nombre 56 à la base binaire
» dec2bin(56)
ans =
111000
% passage de la base binaire à la base décimale
» bin2dec(ans)
ans =
56

Comme pour la base 10, un nombre x qui s’écrit dans la base binaire sous la
forme : x = bm bm−1 ...b1 b0 . b−1 b−2 ...b−n vaut :

m
x= ∑ bk 2k , b ∈ {0, 1} (I.3)
k=−n

Il s’en suit qu’en binaire, seuls les nombres fractionnaires de la forme 2Xk ont
une représentation exacte.
3
C’est le cas de x = 0.3 = 10 dont la représentation est exacte dans la base
décimale et qui ne peut être écrit en binaire que de manière approximative :

0.3x2 = 0.6
0.6x2 = 1.2
0.2x2 = 0.4
0.4x2 = 0.8
0.8x2 = 1.6
0.6x2 = 1.2
...
0.3 = 0.01001[1001]
Le calcul Numérique et analyse d’erreur

Remarque: Notons que la représentation de tout


nombre entier X est exacte dans n’importe quelle
base b car un entier peut être transformé en une
fraction dont le dénominateur est une puissance
k
de la base de numérisation X.b
bk
par simple
multiplication du numérateur et du dénominateur.

I.3.1 Les chiffres significatifs et l’arrondi


I.3.1.1 a. Les chiffres significatifs
Considérons un nombre réel dont la valeur exacte est x et notons x∗ sa
valeur approchée représentée dans la base b = 10. Dans cette représentation
obtenue en supprimant les décimales de rang supérieur à n, on appelle chiffre
significatif cs du nombre approché x∗ :
1. Tout chiffre différent de zéro dans sa représentation décimale.
2. Un zéro (des zéros) compris entre deux chiffres significatifs.
3. Un zéro qui constitue un chiffre conservé dans la représentation (posi-
tionné au rang n).
Exemples :
• En approchant x = 0.0158007122 par x∗ = 0.0158007043 avec 8 décimales,
les chiffres conservés sont : x∗ = |{z}
0.0 |{z}
158 |{z}
00 7 |{z}
0 .
1 2 3 4

1. Ces zéros ne sont pas significatifs, ils servent uniquement à donner un


ordre de grandeur.
2. Les chiffres non nuls sont tous significatifs.
3. Deux zéros compris entre deux chiffres significatifs, donc sont aussi
significatifs.
4. Ce dernier zéro est significatif car il est conservé dans l’approximation
(c’est la huitième décimale).
•• Les zéros situés à la fin d’un nombre entier peuvent être significatifs ou
non. C’est sa représentation décimale (écriture scientifique) qui nous renseigne
sur le nombre de zéros significatifs. Pour illustration, prenons x = 1730000
présenté avec les écritures : x1 = 1.73 × 106 et x2 = 1.730000 × 106
Méthodes Numériques

1. Les quatre derniers zéros dans le nombre x1 = 1.73 × 106 ne sont pas
significatifs. x contient 3 cs
2. Tandis que ces mêmes zéros dans le nombre x2 = 1.730000 × 106 sont
significatifs. x contient 5 cs

Remarques:
• Pour un expérimentateur qui relève une
mesure d’une grandeur physique x, écrire
x∗ = 1.730 × 106 µm signifie que l’appareil de
mesure est tout simplement une règle graduée. La
plus petite graduation qu’on peut lire étant le
millimètre, le résultat de la mesure peut être
affiché avec trois chiffres après la virgule. Ce
sont des chiffres significatifs. Si ce résultat
est utilisé dans un calcul numérique, il sera
transformé en x = 1730000. On voit bien que les
trois derniers zéro n’ont pas de sens, ils ne
sont pas significatifs.
Si, pour la même mesure, le résultat est présenté
comme x∗ = 1.730000 × 106 alors on comprends
que l’appareil de mesure utilisé a accès aux
micromètres. Ces trois derniers zéros sont des
’ zéros mesurés ’, ils sont significatifs.
• Notons qu’à ce niveau, on ne parle pas encore
d’erreur de calcul (mesure). Tout chiffre
significatif peut être bien ou mal déterminé.

I.3.1.2 b. Tronquer par l’arrondi :


L’arrondi est la méthode habituelle qui permet de tronquer un nombre pour
n’en conserver qu’un nombre fini n de chiffres significatifs sc. Pour cela, les
règles sont les suivantes :
1. Si le (n + 1)ème sc est strictement plus grand que 5, on augmente le
n-ième chiffre de 1.
Le calcul Numérique et analyse d’erreur

2. Si le (n + 1)ème cs est strictement plus petit que 5, les chiffres retenus


restent inchangés.
3. Enfin, s’il est égale à 5 alors les deux cas sont possibles :
(a) Si tous les chiffres qui viennent après le 5 sont des zéros, on ajoute
1 au nème chiffre s’il est impair et on le garde tel quel s’il est pair.
(b) S’il y a en moins un chiffre non nul après le 5, on ajoute 1 au nème
chiffre.
Exercice 2: Arrondir le nombre x = 0.0158007043 à :
1. Sept chiffres significatifs après la virgule.
2. Trois décimales .
3. Un chiffre significatif
Réponse :
1. 0.01580070
2. 0.016
3. 0.02

I.3.1.3 c. Les chiffres significatifs exacts :


Soit x∗ la valeur calculée (mesurée) pour approcher le nombre exact x. Un
chiffre significatif décimal de x∗ de rang n est dit significatif exact (cse) si
l’erreur absolue ∆x reste inférieure à la moitié de l’unité du rang de ce chiffre :
1
∆(x) ≤ × 10−n . (I.4)
2
Si on raisonne en terme d’erreur relative, ceci correspond à :
1
r(x) ≤ × 10−(n+1) (I.5)
2
La précision du résultat d’un tel calcul peut être estimée par le nombre Cx∗ ,x
de chiffres décimaux significatifs exacts (cse) qu’il fournit. Il est obtenu en
calculant le log des deux cotés de la relation.[3] :
|x − x∗ | |x − x∗ |
Cx∗ ,x ≤ −log10 → Cx∗ ,x = E[−log10 ]−1 (I.6)
|x| |x|
Méthodes Numériques

Le nombre de chiffres décimaux exacts de x∗ noté Cx∗ ,x est souvent défini


comme le nombre de chiffres en commun avec x. Or, nous verrons que le fait
que x∗ possède n chiffres significatifs exacts (cse) ne veut pas dire forcément
que x∗ possède n chiffres en commun avec x mais plutôt n chiffres dont l’erreur
est contrôlable.

Remarque:
• Le résultat d’un arrondi correct est un nombre
qui ne possède que des chiffres significatifs
exacts.
• Si le chiffre significatif de rang n est exact,
alors tous les chiffres significatifs qui se
trouvent à gauche le sont aussi.
• Si les cs d’un nombre approché x∗ coïncident
avec ceux du nombre exact x, alors ils sont cse

Exemples :
• Nous avons vu dans l’exemple précédant que l’erreur absolue commise lors
de l’approximation de x = π = 3.14159265359... par la fraction x∗ = 22/7 =
3.142857142... est : ∆(x) = |x−x∗ | = |π − 227
| = 0.001264... = 0.1264...10−2 .
L’erreur relative correspondante est : r(x) = ∆(x) −3
x = 0.00040... = 0.4...10 .
Le nombre x = 22/7 donne π avec une précision de trois chiffres ou avec
∗|
trois chiffres exacts puisque Cx∗ ,x = E[−log10 |x−x
|x| ] − 1 = 3 − 1 = 2. En effet,
c’est à partir de la quatrième position que les chiffres des deux nombres se
distinguent.
• • Contrairement au premier cas, ici une exception qui confirme la règle !
Entre le nombre exact x = 2.4599976 et son approximation x∗ = 2.4600012,
la différence commence à apparaître à partir du troisième chiffre. Néanmoins,
après calcul, on trouve 4 décimales exactes :
∗|
Cx∗ ,x = E[−log10 |x−x
|x| ] − 1 = 4. Ceci a une explication ! c’est parce que la
différence n’est pas aussi importante. Elle n’est significative qu’à partir du
cinquième chiffre.
Le calcul Numérique et analyse d’erreur

I.4 Codage sur ordinateur


Les nombres binaires sont écrits comme une suite des chiffres 0 et 1, qui
sont représentés physiquement par des bits (binary digit) dans la machine. Du
fait que la mémoire d’un ordinateur est limitée, le codage ne peut se faire que
sur un nombre N fini de bits dépendant des caractéristiques de la machine. Par
conséquent, tout nombre x dont la représentation binaire contient un nombre
de chiffres dépassant la capacité mémoire de la machine est nécessairement
tronqué (arrondis) à N bits.
Notons que les premiers PC (Personnel Computer) avaient un codage en huit
bits (ce qui est rare aujourd’hui) et sont vite passés à 16, 32 , 64 et même 80
bits mais les microprocesseurs 32 bits (en ’simple précision’) et 64 bits (en
’double précision’) restent les plus fréquents.
La répartition des bits utilisés dans la représentation des nombres à virgule
flottante en binaire est gérée par différents systèmes de codage. Le système
IEEE 754 en est un standard, il est caractérisé par trois paramètres :
1. La base binaire (b = 2).
2. Le nombre de bits n dans la mantisse M.
3. Le nombre de bits e dans l’exposant.
Prenons pour exemple les microprocesseurs 32 bits, la mémoire est répartie
selon la norme IEEE 754 comme suit :
• 1 bit de signe (1 si le nombre est négatif et 0 s’il est positif.)
• 8 bits pour l’exposant (8 cases remplies de 0 ou de 1)
• 23 bits pour la mantisse (23 cases remplies de 0 ou de 1 )

Le champ exposant e permet de représenter, sur huit bits, des nombres com-
pris entre deux valeurs limites qui servent à représenter 0 et l’infini (+∞)
respectivement :
e0 = 00000000 = 0 × (27 + 26 + 25 + 24 + 23 + 22 + 21 + 20 ) = 0
eIn f = 11111111 = 1 × (27 + 26 + 25 + 24 + 23 + 22 + 21 + 20 ) = 255
Méthodes Numériques

Comme un exposant p est un nombre entier signé et que le champ exposant


e ne représente que des entiers positifs compris entre e0 et eIn f , le standard
IEEE754 apporte une correction à e appelée biais.Pour obtenir la vraie valeur
de l’exposant p, une constante doit être soustraite de la valeur de e : p =
e − biais.
Typiquement, la valeur du biais est 2k−1 − 1, où k est le nombre de bits du
champ de l’exposant. En 32 bits, le biais est égale à 27 − 1 = 127.

I.4.1 Erreur de représentation et précision machine

Soient xn et xn+1 deux nombres flottants consécutifs dans la base b avec une
mantisse à n chiffres significatifs. Considérons un nombre réel x encadré par
les deux nombres flottants xn et xn+1 , c’est à dire que xn < x < xn+1 . Lorsque
le nombre x est correctement arrondi, alors x∗ = f l(x) prendra la valeur du
plus proche des nombres xn et xn+1 . Il s’en suit que l’erreur absolue sur x∗
sera :

1
∆(x) = | f l(x) − x| ≤ |xn+1 − xn |
2
1
≤ × M1 . M2 M3 ....(Mn + 1) × b p − M1 . M2 M3 ....Mn × b p
2
1 p
≤ × 0.0000...000}1×b
2 | {z
n zéros
1
≤ × b−(n−1) × b p
2
1
≤ × b1−n+p
2

L’écart entre tous les réels x ∈ [xn , xn+1 ] et leur flottants associés est majoré
par la valeur ε = b1−n+p appelée erreur machine. Cette distance est d’autant
plus importante que p est grand, c’est à dire pour des x grands.
Quant à l’erreur relative d’arrondi sur x, elle est donnée par l’expression

εx = | x x−x | = | f l(x)−x
x |. En utilisant le résultat précédent sur l’erreur absolue,
Le calcul Numérique et analyse d’erreur

on peut trouver une borne supérieure à l’erreur relative aussi :


1 f l(x) − x 1 xn+1 − xn
| f l(x) − x| ≤ × |xn+1 − xn | ⇒ εx = | | ≤ ×| |
2 x 2 xn
1 b1−n+p
≤ ×| |
2 bp
1
≤ × b1−n = εr
2
Elle nous renseigne l’ordre de grandeur de la précision optimale εr lors de la
représentation d’un nombre x sur un ordinateur : x∗ = x(1 + εr )

Exercice 3:
1. Représenter, en utilisant le standard
IEEE754, le nombre y = 113.3.
2. Quels sont les plus grands et plus petits
nombres (positifs/négatifs) représentable en
32 bits?
3. Quel est le plus petit nombre machine eps qui
vérifie 1 + eps ≥ 1. Que représente t-il?
Réponse :
1. D’abord, il faut écrire y dans la base
binaire: y = 113.310 = 10000101.01001[1001]2 .
En seconde étape, on normalise l’écriture
binaire : y = 1.000010101001[1001] × 27 .
L’exposant dans ce cas étant p=7, le
calcul de l’exposant biaisé donne e=p+127
= 134. C’est cette valeur qui est codée
dans le champ exposant: e=10000110. Quant
à la mantisse,elle est infinie. Pour
la représenter sur les 23 bits qui lui
sont réservés, il faut la tronquer:
m=00001010100110011001100. Comme y est
positif, le bit de signe est codé à 0.
Finalement, y = 01000011000001010100110011001100
Méthodes Numériques

2. Le plus grand y>0 représentable:


y+
max = +mmax × 2
pmax et m
max = 1.Mmax avec
Mmax = 11...1 = 2−1 + 2−2 + ... + 2−23 .
24
n 1−( 21 )
= ∑23 1
n=1 ( 2 ) = 1− 21
− 1 = (2 − 2−23 ) − 1
mmax = 1 × 20 + Mmax = 2 − 2−23 .
emax = 11111110 = 1 × 27 + ... + 1 × 21 + 0 × 20
8
= ∑7n=1 2n = 1−2
1−2 − 1
emax = 28 − 2 = 254 et pmax = emax − 127 = 127.
On obtient alors:
y+
max = (2 − 2
−23 ) × 2127 ≈ 3, 4028 × 1038 .

• Le plus petit y < 0 représentable:


y−
max = −mmax × 2
pmax

On obtient alors:
y−
max = −(2 − 2
−23 ) × 2127 ≈ −3, 4028 × 1038 .

• Le plus grand (y<0) représentable:


y−
min = −mmin × 2
pmin

mmin = 1.Mmin avec Mmin = 00...00 = 1 × 20 + Mmin = 1.


emin = 00000001 = 1 et pmin = emin − 127 = −126.
On obtient alors: y− min = −2
−126 ≈ −1, 1755 ×
−38
10 .
•Le plus petit (y > 0) représentable:
y+
min = mmin × 2
pmin .

On obtient alors:
y+
min = 2
−126 ≈ 1, 1755 × 10−38 .

3. Le nombre machine le plus proche qui vient


après 1 (le plus petit nombre qui vérifie
1 + eps > 1):
En 32 bits, le nombre 1 est représenté par:
m = 1.M avec M = 00...00 → m = 1 × 20 + M = 1,
e = 12710 = 01111111, car ceci donne: p =
127 − 127 = 0.
Le calcul Numérique et analyse d’erreur

Le minimum qu’on puisse ajouter à cette


représentation est d’affecter 1 au dernier bit de
la mantisse. Il s’en suit que: y = (1 + 2−23 ) × 20 .
D’autre part, la distance séparant le nombre
1 et son plus proche voisin de haut représente
l’erreur relative d’arrondi dans car:
y∗ = y(1 + εr ) = (1 + εr ) ⇒ εr = 2−23 = 1.19 × 10−7 .

I.4.2 Quelques valeurs particulières :


Overflow : Nous venons de calculer les limites de l’intervalle des nombres
machine représentable sur un ordinateur d’architecture 32 bits (y−
max = −3, 4028×
38 + 38
10 , ymax = 3, 4028 × 10 ). Si le résultat d’un calcul numérique est un
nombre machine y qui sort de cet intervalle, on dit qu’il y a overflow. La
valeur de y est alors mise à l’infini INF :

• Infini positif : signe positif s = 0, e = 1...1, M = 0...0.


• Infini négatif : signe négatif s = 1, e = 1...1, M = 0...0.

underflow : Il correspond à un nombre y dans l’intervalle [y− +


min , ymin ]. Le calcul
ne s’arrête pas dans ce cas, la valeur de y est juste mise à zéro :
les deux signes s=0 ou s=1, e=0...0, M=0...0 et m=0.M (y non normalisé).
NaN (not a number) : signe indifférent, e = 1...1, M , 0...0. Il signifie que

-3.4.10^{38} -1.17.10^{-38} 1.17.10^{-38} 3,4.10^{38}

le résultat n’est pas un nombre, il résulte par exemple d’une indétermination


comme la division de 0 par 0.
Méthodes Numériques

Exercice 4:
Calculer la plus grande erreur relative commise
en représentant, sur machine, un nombre
y = signe × 1 . M1 M2 M3 ....Mn × 2 p lorsque 23 termes
uniquement sont considérés (simple précision).

Réponse:
En représentant un nombre y sur 32 bits:
l’exposant E est un nombre entier occupant 8
bits et sa représentation est exacte tant que
sa valeur ne dépasse pas pmax =254-127=127. Par
ailleurs, la mantisse peut être soit infinie
(c’est le cas d’une fraction dont le dénominateur
n’est pas une puissance de 2) ou finie, s’étalant
sur un nombre n de bits. L’espace mémoire réservé
à la mantisse étant 23 bits uniquement, la
mantisse est nécessairement tronquées à 23
chiffres après la virgule. En négligeant les
chiffres de rang supérieur à 23, on commet une
erreur ∆y = 0.00...0M24 M25 ....Mn × 2 p . Cette erreur est
maximale lorsque les termes négligés sont tous
des 1. Dans ce cas, ∆y = 1 × (2−24 + 2−25 + ... + 2−n ) ×
−n 1−2−23
2 p = ( 1−2
1−2 − 1−2 ) ×2
E

∆y = (2−23 − 2−n ) × 2 p ≤ 2−23 × 2 p .


Le rapport entre l’erreur ∆y et la valeur
représentée y définit l’erreur relative (ou
précision):
∆y 2−23 ×2 p −23 ≈ 10−7
y ≤ 1 . M1 M2 M3 ....Mn ×2 p ≤ 2
L’erreur relative maximum inférieure à 10−7
signifie que les 7 premiers chiffres d’un nombre
décimale sont représentés correctement (exacts)
dans un système simple précision. C’est également
la précision machine calculé plus haut.
Le calcul Numérique et analyse d’erreur

I.5 Arithmétique numérique


I.5.1 Les opérations élémentaires sur machine
Nous souhaitons, à partir de deux nombres exacts x1 , x2 représentés dans la
base décimale par leurs valeurs approchées x1 ∗ , x2 ∗ respectivement, effectuer
un calcul sur machine en utilisant les opérations arithmétique élémentaires.
Quelque soit l’opération, le calcul numérique se fait en trois étapes :
1. Convertir les deux nombres en flottants.
2. Faire l’opération entre ces flottants arrondies .
3. Convertir le résultat en notation flottante.
Cela peut se résumer pour les quatre opérations élémentaires par :
x1 + x2 ≈ f l( f l(x1 ) + f l(x2 )) = f l(x1 ∗ + x2 ∗ )
x1 − x2 ≈ f l( f l(x1 ) − f l(x2 )) = f l(x1 ∗ − x2 ∗ )
x1 × x2 ≈ f l( f l(x1 ) × f l(x2 )) = f l(x1 ∗ × x2 ∗ )
x1 ÷ x2 ≈ f l( f l(x1 ) ÷ f l(x2 )) = f l(x1 ∗ ÷ x2 ∗ )
• En première étape, la représentation de l’écriture flottante sur ordinateur
nécessite de tronquer le nombre de chiffres dans la mantisse et l’exposant de
x1 ∗ et x2 ∗ lorsqu’ils dépassent le nombre supporté par la norme de codage. Une
première erreur d’arrondi est donc introduite.
• Dans la deuxième étape, les opérations sur les flottants sont effectuées comme
ceci :
1. Somme et soustraction : Amener l’exposant du plus petit nombre (en
ajoutant des zéros à sa mantisse) à celui du plus grand et additionner les
nouvelles mantisses. Une seconde erreur d’arrondi est donc ajoutée au calcul.
2. Multiplication et division : Faire la somme (différence) des exposants et
le produit (la division) des mantisses.
• A l’affichage du résultat, les nombres subissent le même traitement que la
première étape et une dernière erreur d’arrondi glisse dans le calcul.

I.5.2 Conséquences dangereuses


I.5.2.1 a. Perte de chiffres significatifs :
L’addition de deux nombres de signes opposés et de valeurs absolues très
proches (c’est aussi une soustraction) donne un résultat proche de 0. La somme
Méthodes Numériques

des erreurs absolues peut devenir dans ce cas non négligeable par rapport à la
somme, entraînant une erreur relative très grande et donc une perte de cse. Ce
phénomène peut être illustré par simple représentation en double précision de
deux nombres :
a = x.xxxxxx... et b = x.xxxxxxyy..., approchés par a∗ = x.xxx...xxxa et b∗ =
| {z }
16 décimales
x.xxxxxxy...yyya respectivement, dans la base décimale ainsi que le résultat c∗
| {z }
16 décimales
de leur addition :

x.xxxxxxxxxxxxxxxa xxx...

x.xxxxxxyyyyyyyyya yyy... (I.7)
= − − − − − − − − − −−
0.000000zzzzzzzzza nnnnnnn

La machine affichera donc : c = z.zzzzzzzza nnnnnnn × 10−7 . Notons que


les chiffres xxx... et yyy... sont perdus lors de l’arrondi de a et b dans la
représentation en flottants sur la machine 64 bits. Les chiffres nnnnnnn sont
des décimales non attribuées (nnn..n , xxx..x − yyy..y), elles apparaissent
dans la représentation à 16 décimales du résultat et ne sont pas significatives.
Exemples :
• Soit à résoudre l’équation de second degrés : ax2 + bx + c = 0 , ce qui passe
par le calcul du déterminant δ = b2 − 4ac.
La machine 64 bits représente 16 chiffres uniquement de la mantisse de la base
décimale et arrondit tout résultat de calcul intermédiaire au même nombre de
π2
chiffres. Ainsi, pour un cas a = 1 , b = 355
113 , c = 4 on trouve :

b2 = 9.869606077218265 et 4ac = 9.869604401089358

De ce fait, le calcul de δ donne :δ = 0.000001676128906 > 0. On y voit une


perte de l’information contenue dans les 6 premiers chiffres de la mantisse
en passant de 16cse à uniquement 10. Ce phénomène appelé Cancellation
est responsable de la perte de chiffres significatifs dans les calculs, voir leur
disparition, ce qui peut conduire à des résultats aberrants.
Le calcul Numérique et analyse d’erreur

• L’aberration survient justement avec le même exemple précédent traité par


une machine moins précise. Dans le contexte de système de codage 32bits par
exemple, la représentation des nombres se fait avec 7cs. Toute l’information
étant contenue dans les chiffres de rang n ≤ 7, le calcul de δ ne laissera
qu’un chiffre significatif. Si la précision diminue d’avantage la totalité de
l’information disparaîtra et le résultat change complètement en δ = 0, ce qui
est aberrant !

I.5.2.2 b. Absorption numérique :


Ce problème apparaît souvent lorsqu’on manipule des grandeurs appar-
tenant à des échelles différentes. Comme le calcul numérique se fait sur un
nombre limité de bits mémoire, alors en sommant deux nombres approchés
a∗ = x.xxx...xxxa .10ea et b∗ = x.xxxxxxy...yyya 10eb qui ont des exposants ea
| {z } | {z }
16 décimales 16 décimales
et eb très différents, une partie (voir la totalité) des chiffres de la mantisse du
nombre le plus petit sera perdue lorsqu’on essaye de ramener les deux nombres
au même exposant.

x.xxxxxxxxxxxxxxxa xxxxxxxxxxx.10ea
+
0.0000000000yyyyya yyyyyyyyyyy10ea (I.8)
= − − − − − − − − − −−
x.xxxxxxxxxxzzzzza nnnnnnnnnnn10ea
Le résultat affiché sera c = x.xxxxxxxxxxzzzzza 10ea . Les décimales les moins
significatives de b sont perdues à cause de l’écart entre les deux exposants (ici
11 cs perdus).
Méthodes Numériques

Exemples :
• Considérons deux nombres d’amplitudes très différentes
a = 0.333... × 105 et b = 0.333... et calculons leur somme c sur une machine
32bits :

0.333333333333.105
+
0.000003333333.105 (I.9)
= − − − − − − − − − −−
0.3333366nnnnn105

On constate que cinq décimales sur sept de b sont absorbées dans la somme,
ce qui a un impact sur la suite du calcul :

0.3333366nnnnn105

0.333333333333.105 (I.10)
= − − − − − − − − − −−
0.0000033nnnnn105

La machine 32bits donnera c∗ = 0.0000033nnnnn105 : Ici également les


chiffres en gras des deux opérandes sont perdus lors de l’arrondi en flottants
à 7 cs. Les chiffres nnnnnnn sont des décimales non attribuées , malgré leur
présence dans la représentation à 7 décimales du résultat elles ne sont pas
significatives. On trouve alors : (a + b) − a , b

• Examinons un cas extrême où l’écart entre les ordres de grandeurs des


deux nombres dépasse les 7 décimales de représentation. On peut montrer dans
ces conditions que le nombre a = 0.333....105 absorbe toutes les décimales de
Le calcul Numérique et analyse d’erreur

b = 0.333....10−5 et tout se passe comme si l’opération n’a pas eu lieu !

0.333333333333.105
+
0.00000000003333333.105 (I.11)
= − − − − − − − − − −−
0.3333333nnnnn105

On aboutit donc à a + b = a. Cette erreur devient dangereuse lorsqu’on passe


à la deuxième étape du calcul :

0.3333333nnnnn105

0.333333333333.105 (I.12)
= − − − − − − − − − −−
0.0000000nnnnn105

En arithmétique mathématique, (a + b) − a = b pour tous nombres réels a et b


. Nous avons montré ici que cette égalité n’est plus valable pour les nombres
flottants a∗ et b∗ : (a∗ + b∗ ) − a∗ = 0

I.5.2.3 c. Erreur de dépassement

Les erreurs de dépassement de capacité apparaissent lorsque le nombre réel


à représenter est plus petit ou plus grand que les valeurs limites du format :
• Si la valeur absolue du résultat est supérieure au plus grand flottant repré-
sentable, on parle alors d’overflow. On affecte au résultat la valeur ±∞ et le
programme est généralement interrompu par le système.
• Si cette valeur absolue est plus petite que le plus petit représentable, le
résultat est remplacé par 0. C’est l’underflow.
Méthodes Numériques

I.5.3 Propriétés des opérations sur les flottants


I.5.3.1 a. L’addition n’est plus associative :

Mathématiquement parlant l’addition est associative car (a + b) + c =


a + (b + c) pour tous réels (a, b, c) par contre elle ne l’est pas numériquement.
En effet, les différentes opérations d’arrondi peuvent changer la direction du
calcul en fonction de l’ordre dans lequel les opérations sont effectuées. Dans
l’ensemble des flottants, l’addition perd alors l’associativité qu’elle a dans les
réels. L’exemple suivant met en évidence cette Propriété :
Prenant trois nombres x = 7.66, y = 0.00342 et z = 0.00216, représentés
avec une mantisse à trois chiffres significatifs. D’un point de vue numérique
l’opération (x + y) + z donne 7.66 + 0.00216 ≈ 7.66. Alors que si on écrit
x + (y + z), on trouve 0.01 + 7.66 = 7.67. D’ailleurs les parenthèses jouent un
rôle primordial dans la programmation.

I.5.3.2 c. L’addition n’est plus distributive sur la multiplication

Dans les réels, on peut écrire : a.(b + c) = a.b + a.c. On dit que l’addi-
tion est distributive sur la multiplication. A cause des erreurs d’arrondis, les
nombres flottants ne respectent plus cette relation de distributivité.

I.5.4 Quelques solutions


• Lorsqu’il est question d’additionner une série de nombres positifs d’ordres
de grandeur différents, il faut commencer par les plus petits pour éviter l’er-
reur d’absorption. Nous avons vu que l’ordre dans lequel sont effectuées les
opérations peut avoir une incidence sur le résultat final.

• Si l’opération a + b provoque un dépassement, c’est-à-dire un résultat


infini, alors l’addition de c, comme la multiplication par c, conservera automa-
tiquement cet infini.
Par contre, du fait que l’addition n’est pas distributive sur la multiplication, on
peut éviter le dépassement en développant a × c + b × c si a est petit.
En additionnant b + c d’abord et ensuite a on contourne le dépassement dans
certains cas. C’est ce qui arrive quand b + c est un grand nombre positif tandis
que c est un grand nombre négatif.
Le calcul Numérique et analyse d’erreur

I.6 Evaluer la qualité d’un calcul numérique


Nous avons vu que le calcul numérique fait appel à quatre composantes :
Poser le problème physique, proposer un modèle mathématique (mise en équa-
tion) , résoudre numériquement (méthode de discrétisation débouchant sur
un algorithme numérique) et calculer (à l’aide d’une machine). Les données
et résultats de chacune de ces étapes sont entachés d’erreurs provenant de
différentes sources. Opter pour un bon choix de modèle physique , de modèle
mathématique, de méthode de discrétisation et d’algorithme numérique repré-
sente une condition nécessaire à l’obtention d’une bonne approximation. On
est donc amenés à définir des indicateurs de qualité permettant d’évaluer notre
choix à chaque niveau. La stabilité s’avère l’indicateur le plus évocateur quant
à la description de la sensibilité à l’erreur.
1. Stabilité d’un problème physique : Pour certains systèmes physiques,
appelés chaotiques, une petite variation des données initiales entraîne
une variation importante et totalement imprévisible des résultats rendant
toute prédiction impossible à long terme.
Cette notion de chaos, liée à la physique d’un problème, est indépendante
du modèle mathématique et encore plus de la méthode numérique utilisée
pour résoudre ce problème mathématique. De nombreux problèmes sont
chaotiques, à l’exemple de prévision météo.
2. Stabilité d’un problème mathématique : La sensibilité d’un modèle
mathématique à l’erreur est appelées aussi conditionnement. Un pro-
blème est dit très sensible ou mal conditionné si une petite variation des
données ou des paramètres entraîne une grande variation des résultats.
Cette notion de conditionnement, liée au problème mathématique, est
indépendante de la méthode numérique utilisée pour le résoudre. Pour
modéliser un problème physique qui n’est pas chaotique, on construira
un modèle mathématique qui sera le mieux conditionné possible.
3. Stabilité d’une méthode numérique : Une méthode est dite instable si
elle est sujette à une propagation importante des erreurs numériques de
discrétisation et d’arrondi. Un problème peut être bien conditionné alors
que la méthode numérique choisie pour le résoudre est instable. Dans
ce cas, il est impératif de changer de méthode numérique. Par contre, si
le problème de départ est mal conditionné, aucune méthode numérique
ne pourra y remédier. Il faudra alors essayer de trouver une formulation
Méthodes Numériques

mathématique différente du même problème.

L’instabilité du problème physique ne fait pas l’objet de cet enseignement.


On ne s’intéressera qu’aux instabilités mathématique (conditionnement) et
numérique. Ces deux notions sont associées à l’importance du phénomène de
propagation des erreurs d’arrondi et/ou des données dans un calcul. Nous les
étudierons ici à travers quelques exemples d’application. [4]

I.6.1 Conditionnement d’une fonction


Étudier la sensibilité d’une fonction f (x) au voisinage de x revient à quan-
tifier sa réponse à une perturbation ∆x sur la donnée x. En d’autres mots, on se
donne une entrée perturbée x p = x + ∆x et on mesure la variation de la sortie
y p = f (x p ) = y + ∆y.
Le développement de Taylor de f (x) au voisinage de x p donne :

f (x p ) = f (x + ∆x) = f (x) + f 0 (x)∆x + o(∆x)


y + ∆y = f (x) + f 0 (x)∆x + o(∆x)
(I.13)
∆y = y p − y = f (x) + f 0 (x)∆x + o(∆x) − f (x)
= f 0 (x)∆x + o(∆x)

Si la perturbation ∆x est suffisamment petite, le reste est négligeable et


alors :∆y = f 0 (x)∆x. La dérivée de f en x est donc notre coefficient d’am-
plification de l’erreur absolue.
Raisonnons plutôt en terme d’erreur relative. On obtient, en supposant que
y , 0 et x , 0, l’expression suivante :

∆y f 0 (x)∆x
=
y f (x)
(I.14)
x f 0 (x) ∆x
= ×
f (x) x

On appelle conditionnement au point x , 0 d’une fonction f dérivable en x et


0 (x)
telle que f (x) , 0, le facteur d’amplification relatif C(x) = x ff (x) .
Le calcul Numérique et analyse d’erreur

Exercice 5:
1. Evaluer le conditionnement de la fonction
F(x) = 1 − cos(x) autour de x = 0.
2. Qu’en est-il pour la stabilité?
Réponse :
1.
xF 0 (x) x.sin(x) 2x.sin( 2x )cos( 2x ) x.cos( 2x )
C(x) = = = =
F(x) 1 − cos(x) 2sin2 ( 2x ) sin( 2x )

Autour de x=0, la fonction est bien x


conditionnée limx→0 C(x) = limx→0 2. sin(2 x ) .cos(x) = 2
2
2. Stabilité: On la verra dans la partie qui
suit

I.6.2 Stabilité d’un calcul numérique


Un algorithme numérique est un ensemble fini de règles opératoires établies
par une méthode numérique pour résoudre un problème mathématique de façon
approximative. Dans un algorithme les calculs se font sur plusieurs étapes
établies dans un ordre bien défini.
Pour résoudre un problème x = F(d), utilisons un algorithme dont la tache est
répartie sur n étapes :
x1 = F1 (d), x2 = F2 (x1 ), x3 = F3 (x2 ), ..., x = Fn (xn−1 ).
A la première étape, l’algorithme reçoit en entrée des données d entachées
d’erreurs d’arrondi et de troncature εr :
x1∗ = F1 (d ∗ ) = F1 (d(1 + εr )). Dans la mesure où l’erreur εr sur les données est
très petite, on peut écrire :
x1∗ = F1 (d + d.εr ) ≈ F1 (d) + d.εr F10 (d)
F1 (d)F10 (d)
≈ F1 (d) + d.εr ×
F1 (d)
(I.15)
d.F10 (d)
≈ F1 (d) + F(d).εr ×
F1 (d)
≈ F1 (d)(1 + εr ×C1 ) = x1 (1 + εr ×C1 )
Méthodes Numériques

Selon le conditionnement de la formule utilisée à cette étape, l’erreur


relative sur les données est multipliée par un coefficient C1 . Le résultat de cette
étape est ensuite arrondi avec une erreur ε1 , donc :

x1∗ ≈ x1 (1 + εr ×C1 )(1 + ε1 ) ≈ x1 (1 + ε1 + εr ×C1 )


≈ x1 (1 + ε1 + εr ×C1 ) (I.16)
≈ x1 (1 + εr0 )

A la seconde étape, de conditionnement C2 , on aura :


0
x2∗ = F2 (x1∗ ) ≈ F2 (x1 )(1 + εr ×C2 ) ≈ x2 (1 + ε1 ×C2 + εrC1 ×C2 )
En introduisant l’erreur d’arrondi ε2 sur le résultat :
0
x2∗ ≈ x2 (1 + εr ×C2 )(1 + ε2 ) ≈ x2 (1 + ε1 ×C2 + ε2 + εrC1 ×C2 )
En suivant le même raisonnement pour l’étape 3 :
00
x3∗ ≈ F3 (x2 )(1 + εr ×C3 )(1 + ε3 )
(I.17)
≈ x3 (1 + ε1 ×C2 ×C3 + ε2C3 + ε3 + εrC1 ×C2 ×C3 )
(n)
Par récurrence, à l’étape n : :x∗ ≈ Fn (xn−1 )(1 + εr ×Cn )(1 + εn )

x∗ ≈ Fn (xn−1 )(1 +ε1 ×C2 ×C3 ...Cn 



 
+ε2 ×C3 ×C4 ...Cn 

 

 

 
+ε3 ×C4 ×C5 ...Cn → err d’instabilité 



..  
err totale

+. 


 

+εn−1Cn





+εr ×C1 ×C2 ...Cn−1 ×Cn → err de cond





+εn ) → err d’arrondi 

L’expression fait apparaître les trois composantes de l’erreur totale :


• L’erreur de conditionnement qui ne dépend que de la formulation
mathématique du problème. On peut montrer facilement que le produit
des conditionnements des étapes du calcul donne le conditionnement
de la formule
• L’erreur de stabilité qui est lié à l’algorithme utilisé, c’est à dire les
opérations utilisées et l’ordre dans lequel elles s’enchaînent.
• L’erreur d’arrondi qui consiste à la conversion de tout résultat en
nombre machine.
Le calcul Numérique et analyse d’erreur

On voit clairement que l’erreur d’entrée εr est amplifiée d’avantage à chaque


étape de l’algorithme. Le coefficient d’amplification de chaque étape est le
conditionnement local qui caractérise l’expression utilisée à cette étape. A
la fin du calcul l’amplification est égale au produit des conditionnements lo-
caux, qui n’est rien d’autre que le conditionnement du problème mathématique
C = C1 ×C2 × ... ×Cn .
D’autre part, on constate intuitivement qu’un changement dans l’ordre des
étapes affectera l’erreur de stabilité. En effet, même si on ne peut pas éliminer
les calculs qui présentent un grand conditionnement il existe une règle em-
pirique qui permet de réduire l’erreur de stabilité : elle consiste à les insérer
le plus tôt possible dans l’algorithme. C’est en accord avec l’expression de
l’erreur de stabilité établie précédemment. On remarque que le conditionne-
ment Cn se répète dans l’amplification de toutes les erreurs d’arrondi εi . Plus
l’ordre de l’étape est petit, moins de fois son conditionnement apparaît dans
l’amplification de l’erreur. D’ailleurs, le conditionnement de la première étape
n’intervient qu’une fois au début.

Exercice 6: Intéressons nous au problème simple


d’évaluation de la fonction y=F(x)= 1−cosx
x au voisinage
de l’origine x = 0.
1. Le problème mathématique posé est-il bien ou mal
conditionné?.
2. Etudier la stabilité numérique de ce problème.
3. Conclusion et solution.
Réponse :
1. Analyse de conditionnement: Calcul du coefficient
de conditionnement de la formule:
x.F 0 (x) x.sin(x) − 1 + cos(x) x2
C(x) =| |=| × |
F(x) x2 1 − cos(x)
x.sin(x) − 1 + cos(x)
=| |
1 − cos(x)

Pour évaluer C(x) autour de 0, calculons :


Méthodes Numériques

x.sin(x) 1 − cos(x)
lim C(x) = limx→0 | − |=1
x→0 1 − cos(x) 1 − cos(x)
On constate alors que le problème mathématique est
bien conditionné pour des x proches de 0 .
Analyse de stabilité: Si nous considérons une
donnée x entachée d’erreurs, alors la valeur
manipulée par l’ordinateur est x∗ = x(1 + εr ).
Si également les coefficients C1 ,C2 ,C3 sont les
conditionnements relatifs aux trois étapes de
ce calcul à savoir l’évaluation du cosinus, la
soustraction et la division respectivement, alors
le résultat de l’évaluation f (x∗ ) donne:

[1 − (cos(x)(1 +C1 × εr )(1 + ε1 )](1 +C2 × εr0 )(1 + ε2 )


F(x∗ ) =
x(1 +C3 × εr00 )(1 + ε3 )
d.F10 (d) x1 .F20 (x1 ) x2 .F30 (x2 )
tel que C1 = | F1 (d) |, C2 = | F2 (x1 ) | , C3 = | F3 (x2 ) |
1
et: F1 (x) = cos(x) , F2 (x) = 1 − x, F3 (x) = x
Il est souvent compliqué de développer l’expression
de f (x∗ ) à cause de la difficulté qui se présente
lors du calcul des conditionnements locaux. Nous
pouvons néanmoins nous placer dans un contexte idéal
où l’entrée de chaque étape sera considérée exacte
(n)
(εr = εr0 = .... = εr = 0). Dans ces conditions:

[1 − (cos(x)(1 + ε1 )](1 + ε2 )
F(x∗ ) = × (1 + ε3 )
x
cos(x)
≈F(x)(1 + ε1 × + ε2 + ε3 )
1 − cos(x)
Le calcul Numérique et analyse d’erreur

3. Conclusion: L’évaluation de f (x), qui est


bien une fonction bien conditionnée, passe
par une soustraction dans la seconde étape du
calcul. Nous avons vu que cette soustraction
est mathématiquement bien conditionnée mais
numériquement elle est instable autour de
0. Ceci explique l’amplification infinie
de l’erreur d’arrondi ε1 commise à l’étape
précédente.
Solutions: On peut tenter de se débarrasser
de l’opération mal conditionnée, la
soustraction ici, en transformant
l’algorithme en un autre mathématiquement
équivalent:

1 − cos(x) 2 × sin2 ( 2x )
F(x) = = , cos(2a) = 1 − 2 × sin2 (a)
x x
Avec l’algorithme amélioré, l’évaluation
donne :
2 × (sin( 2x )(1 + ε1 ))2 (1 + ε2 )
F ∗ (x) = (1 + ε3 )
x
2 × sin2 ( 2x )
= (1 + ε1 )2 (1 + ε2 )(1 + ε3 )
x
≈F(x)(1 + 2ε1 + ε2 + ε3 )

Contrairement au premier algorithme, le


deuxième est stable. L’amplification de
l’erreur d’arrondi reste petite.

I.7 Processus itératifs et convergence


Convergence : C’est une notion intimement liée à celle de la stabilité. Le
théorème de Lax s’énonce comme suit : Dans un problème bien posé, et
avec un schéma numérique consistant, la stabilité est une condition néces-
Méthodes Numériques

saire et suffisante pour la convergence.


Il est généralement plus facile de faire une étude de stabilité que de s’intéresser
à la convergence, c’est pour cela qu’une analyse de stabilité est souvent menée
pour étudier la convergence.
Dans les processus itératifs on démarre d’un point ao pour construire une suite
ao , a1 , ..., an qui converge, vers une certaine valeur, après un nombre d’itéra-
tions n. la convergence peut être monotone ou fluctuante. En d’autres termes
on peut avoir des valeurs qui se rapprochent de plus en plus allant de la plus
petite vers la plus grande ou l’inverse comme dans l’exemple : 1.0146, 1.0235,
1.243, 1.244, 1.245, 1.245, où on peut dire que la solution déterminée à trois
cse après la virgule est 1.245.
La solution peut également fluctuer autour de la valeur exacte en se rappro-
chant de celle-ci.
Néanmoins, il est clair que des valeurs extrêmes associées à des changements
de signe doivent laisser penser à l’instabilité de la méthode ou à une instabilité
numérique.
Il faut toujours avoir un moyen pour différencier l’instabilité liée au phéno-
mène de celle liée à la méthode numérique. Généralement, si on change les
paramètres de discrétisation de la méthode (pas, précision,..) et que le résultat
change, alors il s’agit d’une instabilité numérique.
A ce point est associé un autre problème qui peut surgir à tout moment lors
d’un calcul itératif : manipulation des petits nombres (underflow) ou des grands
nombre (overflow). Dans ces deux cas le programme s’arrête. Prenons x ∼ 0

» x=0
x =
0
» 1/x
ans =
Inf
» x/x
ans =
NAN

On peut contourner de tels problèmes en combinant différents paramètre


x
d’ordre de grandeur différents. L’expression T = y.z , par exemple, peut être
calculée par :
Le calcul Numérique et analyse d’erreur

x
(1) On fait d’abord y.z puis (y.z) ;
x
(2) On calcule y le résultat divisé par z.

Une autre façon pour contourner l’indétermination est de normaliser les gran-
deurs utilisées dans les expressions mathématiques. Cela équivaut à un chan-
gement d’échelle.
Exemple :
Pour étudier la vitesse de propagation du son dans différents mi-
lieux, on peut prendre la vitesse de propagation du son dans l’air comme
référence : u = 1230 km/h . Pour une vitesse v on écrit :
v
V=
u
A travers cette opération non seulement on a supprimé l’unité mais aussi réduit
l’échelle. Si la vitesse réelle appartient au domaine [1500, 2000] (km/h), la
vitesse normalisée est dans le domaine [1.2195, 1.6260]. Ainsi, une fonction
des vitesses peut être tracée avec une échelle linéaire.
Méthodes Numériques
Références bibliographiques

[1] F RANç OIS D UBOIS. Une introduction au calcul scientifique. version 1.


Rapport de synthese (1996). 5

[2] K ARIMA MEBARKI. Analyse numerique cours, 2eme annà e


c licence
mathematiques. 11

[3] ROMAIN PICOT. Amelioration de la fiabilità c numerique de codes de


calcul industriels. These de Doctorat (2018). 17

[4] M ARTIN D E W ULF G IANLUCA B ONTEMPI A NA DA S ILVA S OARES.


Syllabus cours de calcul formel et numerique info-f-205. 32
Chapitre II

Résolution de f (x) = 0

C E chapitre traite de la résolution des équations f (x) = 0 où f est une


fonction non-linéaire quelconque (polynomiale de degré supérieur ou
égal à 3 ou une combinaison de fonctions usuelles telles que le cos, le log,
l’exponentielle, ...etc), à une seule variable x.
Méthodes Numériques

II.1 Position du problème


Nous connaissons la solution d’une équation linéaire ax + b = 0 et celle
d’une équation second degré ax2 + bx + c = 0. De même, on peut résoudre
certaines équations polynomiales du troisième degré, en se basant sur les
propriétés des polynômes, la division euclidienne entre autres. Au delà, pour
les équations non linéaires, trouver la ou les racines de f (x) devient compliqué.
En effet, il n’existe pas une méthode universelle qui donnerai la solution exacte,
notée x, de toutes les équations f (x) = 0. L’alternative est de faire appel aux
méthodes numériques dont le principe repose, indépendamment de la méthode
choisie, sur deux étapes :
1. Se donner une valeur initiale xo proche de la solution recherchée .
2. Démarrer à partir de x0 et générer, en utilisant un algorithme adé-
quat, une suite xn convergente vers la solution recherchée x. Le der-
nier terme (itéré) de la suite xn est une valeur approchée x∗ de x avec
une tolérance tol sur l’erreur
Plusieurs méthodes existent dans la littérature, chacune a des avantages et des
inconvénients. Pour toute méthode, les critères de base sont la convergence et
la rapidité de convergence.

II.2 Estimation de la solution approchée


Comme solution initiale xo nous choisissons une valeur qui s’approche le
mieux de la solution recherchée x pour une convergence rapide. Pour l’estimer,
il suffit de tracer le graphe de la fonction f (x), l’intersection de ce graphe
avec l’axe des abscisses nous fournira alors une solution initiale approchée
de l’équation f (x) = 0. Le tracé peut être fait à la main en passant par le
tableau de variations de f ou en faisant appel aux logiciels de calcul numérique
possédant des outils graphiques. Ces derniers sont très nombreux, nous avons
choisi d’utiliser MATLAB (Voir programme détaillé dans la partie II.6.1).
Exemple : Détermination graphique de la racine de f (x) = β e−γx + αx + c
avec MATLAB : Sur le graphe, on peut chercher la solution de plus près en
clinquant sur l’icône zoom et en faisant un agrandissement autour de la racine.
Nous pointons par la suite à l’aide de l’icône Data Cursor pour lire la valeur.
Le résultat obtenu est reporté ci dessous.
Résolution de f (x) = 0

Determination graphique de la racine x0 de la fonction f =β exp(−γ x)+α x + c Determination graphique de la racine x0 de la fonction f =β exp(−γ x)+α x + c
600
m=300, rho=12, h=−1000, g=10 20 m=300, rho=12, h=−1000, g=10

400
15

200 10

0 5
X: 15.61
Y: −0.1082
−200 0

f
f

−5
−400

−10
−600

−15
−800
−20
−1000
0 2 4 6 8 10 12 14 16 18 20 15.45 15.5 15.55 15.6 15.65 15.7 15.75
x x

F IGURE II.1 – Tracé du graphe de F IGURE II.2 – Détermination gra-


la fonction (II.5) phique de xo

Nous possédons a priori une valeur xo = 15.61, proche de la solution


recherchée. L’étape suivante sera de l’améliorer afin d’approcher la solution
exacte avec plus de précision et cela par différentes méthodes numériques.

II.3 Résolution par les méthodes itératives


II.3.1 Convergence d’une méthode itérative
Lors du choix de la méthode itérative à utiliser pour résoudre un problème
donné, on se soucie de : la convergence et la vitesse de convergence.
Une méthode itérative ne donne un résultat correct que si elle converge. Ce
n’est pas toutes les méthodes itératives qui convergent systématiquement, elles
ne sont convergentes que sous certaines conditions en général. Dans la suite,
nous définirons pour chaque méthode sa condition spécifique de convergence.
De plus, une méthode itérative convergente n’est efficace que si son coût (le
temps de calcul ou le nombre d’itérations requis pour atteindre la précision
voulue ) est acceptable. Si nous considérons deux itérés consécutifs xn et xn+1
de la méthode, alors les erreurs relatives d’approximation respectives sont :
εn+1 = | x−xxn+1 | et εn = | x−x
x | . En passant de l’itération n à l’itération (n + 1)
n
Méthodes Numériques

d’une suite convergente l’erreur est réduite, une réduction quantifiée par un
paramètre p qui s’appelle vitesse de convergence donné par la définition :

Définition 1 : Une méthode itérative générant une suite xn convergente vers x


est d’ordre p si et seulement s’il existe un nombre réel strictement positif C tel
que :
εn+1 x − xn+1 ∆(xn+1 )
lim | p
| = lim | p | = lim p =C
n→∞ εn n→∞ (x − xn ) n→∞ ∆(xn )

• Dans le cas p = 1, on doit avoir de plus C < 1. La convergence est dite


dans ce cas linéaire, donc lente.
• La convergence est quadratique (plus rapide) pour p = 2.
• Elle est d’ordre plus élevé et de vitesse plus rapide d’autant que p
augmente.
Cette définition de la convergence est liée au quotient | εεn+1
n
p |, d’où elle tire son
nom de q−convergence. Elle présente l’inconvénient d’être difficile à appliquer
à certaines suites itératives. La définition de la vitesse de convergence est alors
élargi comme suit :

Définition 2 : Une suite xn converge R−linéairement vers x si et seulement


si elle est bornée par une autre suite Xn convergente q−linéairement vers 0,
c’est-à-dire que
Xn+1 − 0
|xn − x| ≤ Xn pour tout n et lim | |=C , C <1
n→∞ Xn − 0

II.3.2 Résolution par la méthode de bissection


II.3.2.1 Théorème des valeurs intermédiaires
Soit f une fonction définie et continue sur l’intervalle [a; b].
1. Si f (a). f (b) < 0 , la fonction possède au moins une racine dans (a ;b).
2. Si la fonction f est monotone sur [a; b], la racine est alors unique .

II.3.2.2 Principe de la méthode de bissection


Son principe est basé sur le théorème des valeurs intermédiaires. Si nous
arrivons à isoler une racine de la fonction f sur un intervalle [ao ; bo ], alors
nous la chercherons en appliquant les opérations suivantes :
Résolution de f (x) = 0

ao +bo
• Evaluer la fonction f au point wo = 2 milieu de l’intervalle [ao ; bo ].
• Si f (ao )∗ f (wo ) < 0, alors la racine se trouve dans [ao ; wo ]. On considère
alors un nouvel intervalle [a1 ; b1 ] = [ao ; w] et on refait les mêmes étapes
• Si f (ao )∗ f (wo ) > 0, alors la racine se trouve dans [wo ; bo ]. On considère
alors un nouvel intervalle [a1 ; b1 ] = [wo ; bo ] et on refait les mêmes étapes
Ainsi, on génère une suite d’intervalles emboîtés [an ; bn ] qui vérifient à chaque
itération f (an ) ∗ f (bn ) < 0. Aux itérations successives n ≥ no de la suite, ce
produit se rapproche de plus en plus de 0 tandis que wn se rapproche de la
racine x. Voici un graphe qui explique la méthode de la bissection appliquée
sur la fonction f = ln(1 + x) − 0.5x + 1 dans l’intervalle [4; 7]

F IGURE II.3 – Illustration graphique de la méthode de la bissection

II.3.2.3 Convergence de la méthode


Convergence : La méthode de la bissection converge à coup sûr à la seule
condition d’isoler la racine au préalable, elle nécessite donc une connaissance
graphique de la fonction. Si plus qu’une racine est présente dans l’intervalle
d’étude, la méthode converge vers une racine et les autres passent inaperçues.
De plus, la fonction doit couper l’axe pour avoir un changement de signe de f .
Ainsi, les racines doubles sont ratées.
Vitesse de convergence : A l’itération n, la distance entre la valeur calculée
xn et la racine recherchée x est inférieure ou égale à la moitié de la longueur
Méthodes Numériques

de l’intervalle [an ; bn ], c’est - à dire que ∆(xn ) = |xn − x| ≤ | bn −a


2 |. Par récur-
n

n+1
rence, on aboutit à ∆(xn ) = |xn − x| ≤ ( 21 ) |bo − ao |, ce qui définit une borne
supérieure à l’erreur commise à chaque itération n. La borne supérieure de
n+1
l’erreur est une suite Xn = ( 12 ) |bo − ao | qui converge q − linairement vers
0 puisque :

εn+1 Xn+1 − 0 1
lim = lim = (II.1)
n→∞ εn n→∞ Xn − 0 2

Il vient de ce fait que xn converge R-linéairement vers x avec une vitesse de


convergence assez lente C = 0.5

Conclusion : Malgré sa convergence sûre, la méthode de la bissection présente


un inconvénient majeur qui est sa vitesse de convergence lente.
Le nombre d’itérations nécessaires pour atteindre une tolérance tol donnée est
à priori connu, il suffit de chercher la valeur de n qui vérifie :

−ao
1 n+1 ln| botol |
∆(xn ) ≤ ( ) |bo − ao | ≤ tol ⇒ n ≥ −1 (II.2)
2 ln(2)

ln| bo −ao |
Il suffit de prendre le plus petit entier n qui vérifie Eq.II.2 : n = E[ ln(2)
tol
] − 1.
Néanmoins, la majoration de l’erreur s’avère assez large pour certains cas et le
nombre calculé d’itérations est surestimé.

II.3.2.4 Exemples

Exemple 1 : Nous cherchons à approcher les racines, si elles existent, de


la fonction f1 (x) = ln(1 + x) − 0.5x + 1.
Localiser ces racines. Que donnent les 4 premiers itérés de l’algorithme de la
méthode de la bissection dans l’intervalle [1; 10] ? Combien d’itérations faut-il
pour déterminer exactement les deux premiers cs de x ?
• La fonction f1 est définie, continue sur ]−1; +∞[ et on peut tracer rapi-
dement son tableau de variations :
Résolution de f (x) = 0

x −1 1. +∞

f 0 (x) + 0 −

α ≈ 1.2
f (x)
−∞ −∞

• Le théorème des valeurs intermédiaires appliqué à la fonction f1 montre


que celle-ci admet bien deux racines distinctes x1 et x2 dans ] − 1; 1] et
[+1; +∞[ respectivement puisqu’elle est monotone et change de signe
dans chacun des deux intervalles.

• L’application de l’algorithme de la méthode de la bissection sur la fonc-


tion f1 dans l’intervalle [a; b] = [1; 10] permet d’approcher la racine
x2 . Les calculs, effectués en arrondissant à 4 décimales tout résultat
intermédiaire, donnent après 4 itérations :
n an bn wn ∆(xn ) = |wn+1 −wn | f (wn ) f (an ) test

0 1 10 5.5000 2.250 0.1218 + +


1 5.5000 10 7.7500 1.1250 -0.7059 + -
2 5.5000 7.7500 6.6250 0.5625 -0.2811 + -
3 5.5000 6.6250 6.0625 0.2812 -0.0764 + -
• On peut penser qu’au bout de la 4eme itération, on a déterminé un cse
qui est le chiffre 6 car il est stable et ∆(x3 ) = 0.28 ≤ 0.5 × 100 . Mais si
on réitère encore l’algorithme on obtient :
n an bn wn f (wn ) ∆(xn )
4 5.5000 6.0625 5.7812 0.0235 0.1406
5 5.7812 6.0625 5.9219 -0.0263 0.0703
6 5.7812 5.9219 5.8516 -0.0013 0.0352
7 5.7812 5.8516 5.8164 0.0111 0.0176
8 5.8164 5.8516 5.8340 0.0049 0.0088
9 5.8340 5.8516 5.8428 0.0018 0.0043
10 5.8428 5.8516 5.8472 0.0003 -
Le chiffres 6 se stabilise pendant deux itérations avant de changer en
5, c’est une convergence apparente. Le nombre d’itérations suffisantes
−ao
ln| botol |
pour calculer x avec une tolérance tol est : n ≈ E[ ln(2) ] − 1. Il est
Méthodes Numériques

indépendant de la fonction étudiée, il n’est lié qu’a la longueur de


l’intervalle d’étude et à la tolérance recherchée.
D’autre part, la solution calculée contient m chiffres décimaux signifi-
catifs exacts si la tolérance sur l’erreur absolue vérifie :
∆(x) ≤ 0.5 × 10−m . Pour avoir 2 cse, dont un décimal, dans la solution
on prends comme tolérance la valeur : tol = 0.5 × 10−1 . On trouve
finalement, n = E[6.49] ≈ 6. Ceci confirme les résultats du tableau
puisque le chiffre 8 est exact à partir de la septième itération (n = 6 ,
∆(x6 ) = 0.035 ≤ 0.5 × 10−1 ).
Exemple 2 : Considérons f2 (x) = 10x − 5 qui admet une solution unique dans
[0; 1], calculer le nombre d’itérations suffisant au calcul d’une solution exacte
à 10 chiffres après la virgule.
−ao
ln| botol |
• Le nombre d’itérations n est n ≈ E[ ln(2) ] − 1 = 33

• La calculatrice donne :
an bn wn f (wn )
0 1 0.5000 0
On voit alors qu’on atteint la racine x sans aucune itération. Le nombre
d’itérations calculé théoriquement est surestimé car la majoration faite
lors du calcul de l’erreur (la borne supérieure) est très large.

II.3.2.5 Application : Chute libre avec frottements linéaires


Nous nous intéressons à une situation pratique débouchant sur la résolu-
tion d’une équation non linéaire f (x) = 0 et montrons, à la fois, l’intérêt et
l’efficacité des méthodes numériques pour y répondre.
Considérons alors l’exemple d’un corps, de masse m, porté à une hauteur h
par rapport au sol et libéré sans vitesse initiale. Dans ces conditions, l’objet
est soumis à l’effet de la pesanteur p = mg et de la résistance de l’air R = ρv
(R ∝ v dans le cas des vitesses faibles v) et son mouvement est décrit par
l’équation suivante :
−t
z(t) = v0t + τv0 e τ + h − v0 τ. (II.3)

qui donne l’altitude z(t) en fonction du temps, mesurée par rapport au sol. Ici,
v0 = mg/ρ est la vitesse limite atteinte quand l’effet de la résistance de l’air
est complètement compensé par le poids du mobile. Le paramètre τ = m/ρ
représente la constante de temps du mouvement et ρ est une constante qui
Résolution de f (x) = 0

dépend de la nature du fluide et des caractéristiques de l’objet (Par exemple,


pour une sphère de rayon r, ρ = 6 π η r où η est la viscosité du fluide).
Nous nous proposons de calculer le temps nécessaire à la chute, ceci revient
bien entendu à résoudre l’équation z(t) = 0, c’est-à-dire :
−t
v0t + τv0 e τ + h − v0 τ = 0. (II.4)

Mathématiquement, la formulation du problème, dans son cas le plus général,


conduit à l’équation non linéaire suivante :

αx + β [e−γx − 1] + h = 0 (II.5)

La racine de l’équation II.5 étant déjà isolée graphiquement dans la partie II.2,
calculons la solution numérique dans l’intervalle :
[ao ; bo ] = [14; 16] en utilisant la méthode de la dichotomie. On reprend les
étapes précédentes dans le programme mtd-dichotomie.m :
% Programme mtd-dichotomie.m
a(1)=14;b(1)=16;m=300;g=10;rho=12;h=-1000;
v0=(m*g)/rho;tau=m/rho;alpha=v0;gamma=1/tau;
beta=alpha/gamma;
% On défini la fonction
f=@ (x) alpha*x+ beta*(exp(-gamma*x)-1) + h ;
% Vérifier que f(a) x f(b) < 0
if f(a(1))*f(b(1)) < 0
for n=1:15
w(n)=(a(n)+b(n))./2;
if f(a(n)).*f(w(n))<0
b(n+1)=w(n);
a(n+1)=a(n);
elseif f(a(n))*f(w(n))>0
a(n+1)=w(n);
b(n+1)=b(n);
else
dispe’solution exacte ici’
end
Méthodes Numériques

end
else
disp ’Pa de solution ou solution exacte’
end
format long;
a=a(1:n);
b=b(1:n);
a, b , w, f(w)

Le résultat est le suivant :


»ans =
15.0000 16.0000 15.5000 -12.8473
15.5000 16.0000 15.7500 16.1988
15.5000 15.7500 15.6250 1.6339
15.5000 15.6250 15.5625 -5.6171
15.5625 15.6250 15.5938 -1.9942
15.5938 15.6250 15.6094 -0.1808
15.6094 15.6250 15.6172 0.7264
15.6094 15.6172 15.6133 0.2728
15.6094 15.6133 15.6113 0.0460
15.6094 15.6113 15.6104 -0.0674
15.6104 15.6113 15.6108 -0.0107
15.6108 15.6113 15.6111 0.0176
15.6108 15.6111 15.6110 0.0034
15.6108 15.6110 15.6109 -0.0036
15.6109 15.6110 15.6109 -0.0001

Le critère d’arrêt dans ce programme est le nombre d’itérations fixé à 15.


D’autres critères d’arrêt peuvent être imposés selon le besoin : on peut exiger
une certaine tolérance sur l’erreur absolue ∆(xn ) ≤ tol ou relative ε(xn ) ≤ tol
ou même sur la fonction f (xn ) ≤ tol. Cependant, il faut rester prudent dans
l’interprétation des résultats :
• Une fonction qui converge vers la racine x = 0 voit son erreur relative
s’accroître au fur et à mesure qu’elle converge (l’erreur relative est un
mauvais indicateur à utiliser dans ce cas)
• La fonction f tends vers 0 au fur et à mesure que la racine recherchée
converge mais peut souvent fluctuer.
Résolution de f (x) = 0

II.3.3 Méthode du point fixe


Cette méthode est l’une des applications du théorème du point fixe. On
rappelle dans ce qui suit, brièvement, ce théorème avant de présenter le principe
de la méthode.

II.3.3.1 Définition du point fixe


Considérons une fonction g(x) définie et continue sur un intervalle I. Si le
point a, a ∈ I, vérifie l’hypothèse suivante : g(a) = a, alors a est dit point fixe
de la fonction g.

II.3.3.2 Théorème du point fixe


Soit I un intervalle fermé non vide et considérons g : I → I, une application
contractante sur I c’est-à-dire que |g(x)0 | ≤ k < 1 pour tout x ∈ I, alors :
1. La fonction g(x) possède un point fixe a(unique dans I.
x0 ∈ I
2. ∀ x0 ∈ I, la suite x : N → R définie par : converge
∀n ∈ N, xn+1 = g(xn )
vers a. De plus,
• si 0 ≤ g0 (x) < 1, ∀x ∈ I la converge est monotone.
• si −1 < g0 (x) ≤ 0, ∀x ∈ I la converge est oscillante.

II.3.3.3 Principe et algorithme de la méthode du point fixe


La méthode du point fixe consiste à :
• Réécrire l’équation f (x) = 0 sous une forme équivalente g(x) = x :
chercher les zéros de la fonction f (x) revient donc à trouver les points
fixes de la fonction g(x).
• Pour déterminer ces points, on fait appel au théorème du point fixe. Si la
fonction g choisie est contractante c’est-à-dire |g0 (x)| < 1 au voisinage
de la solution a, alors la suite itérative xn+1 = g(xn ), x0 donné dans
I, converge vers le point fixe a de la fonction g(x). Ainsi, la solution
de
( l’équation f (x) = 0 se voit déterminée en utilisant l’algorithme :
0
x0 donne
xn+1 = g(xn )
Méthodes Numériques

Remarque 1: Si g(x) n’est pas contractante dans I, on ne peut pas conclure


que la suite xn+1 = g(xn ) ne converge pas. Il s’agit d’une condition suffisante.
Pour mieux comprendre le comportement de la suite xn , nous suivons l’évolu-
tion du calcul itératif graphiquement, étape par étape pour le cas de la fonction
donnée par Eq.II.5

18

16
16

14 14

12
12
10

10
8

8 6

4
6

2
4
0
0 2 4 6 8 10 12 14 16 18 0 5 10 15 20

15.65 15.65

15.6 15.6

15.55 15.55

15.5 15.5
15.5 15.55 15.6 15.65 15.5 15.55 15.6 15.65

F IGURE II.4 – Illustration graphique de la convergence de la méthode du point


fixe appliquée à l’équation II.5.
Résolution de f (x) = 0

II.3.4 Convergence de la méthode et choix de g(x) :


Convergence : Il est bien évidemment possible de trouver une infinité de
fonctions g. En revanche, la convergence n’est pas assurée pour toutes les
fonctions. Ce critère pourtant déterminant dans le choix de la fonction g est
fixé par le théorème du point fixe. Dans ce qui suit nous tenterons de trouver
une fonction g dont la convergence est à la fois certaine et rapide.
Vitesse de convergence : Désignons par εn l’erreur sur la racine approchée

x∗ = xn à l’itération n, celle-ci s’écrit εn = |x−x |x−xn
x | = x |.
D’autre part, en effectuant un développement limité d’ordre 2 de la fonction g
au voisinage de x on aboutit au résultat suivant :

xn+1 = g(xn )
1 00
= g(x) + g0 (x)(xn − x) + g (x)(xn − x)2 + o((xn − x)2 ).
2!
Ceci conduit à
1 00
xn+1 − g(x) = g0 (x)(xn − x) + g (x)(xn − x)2 + o((xn − x)2 ). (II.6)
2!
Comme g(x) = x , alors

1 00
xn+1 − x = g0 (x)(xn − x) + g (x)(xn − x)2 + o((xn − x)2 ). (II.7)
2!
Ceci veut dire que si on s’arrête au premier ordre, ∆(xn+1 ) ≈ g0 (x) ∆(xn ).
On constate que l’erreur sur la racine est multipliée par un facteur constant
k = g0 (x) à chaque itération, ce qui représente une diminution à condition que
k soit inférieur à 1.
La convergence de la méthode du point fixe est donc linéaire avec un coeffi-
cient k = |g0 (x)| < 1. Il est clair que cette convergence et d’autant plus rapide
que ce coefficient se rapproche de 0.
Optimisation : Si en revanche on se place dans le cas limite g0 (x) = 0 et les
dérivées supérieures non nulles, alors le développement précédant au deuxième
ordre donnera :∆(xn+1 ) ≈ 2!1 g00 (x)∆(xn )2 .
On voit que la convergence cette fois ci est quadratique et par conséquent plus
rapide, comparée au premier cas.
Pour déterminer une fonction g, un bon choix serait de prendre une fonction
dont la dérivée g0 soit nulle en (x) (convergence quadratique). Théoriquement,
Méthodes Numériques

il suffit de prendre g comme suit : x = g(x) = x + c f (x).


Dans ce cas, g0 (x) = 1+c× f 0 (x). Il suffit de poser c = −1/ f 0 (x) avec f 0 (x) , 0
pour obtenir g0 (x) = 0.
Néanmoins, on ne connaît pas la valeur exacte de la racine recherchée x, raison
pour laquelle, on se contentera de considérer c = −1/ f 0 (xo) avec f 0 (xo) , 0
qui conduit à une convergence linéaire rapide car le coefficient k = g0 (x) est
très proche de zéro dans ce cas.
x
Exemple : Chercher les racines réelles de la fonction f (x) = e− 2 − x dans
l’intervalle I = [0; 1] par la méthode du point fixe. Prendre xo = 0.5.
Il est clair que la fonction est continue, dérivable sur I. Faisons un choix tri-
x
vial :g(x) = e− 2 et regardons s’il satisfait les conditions de convergence de la
méthode du point fixe :
• ∀ x ∈ I, g(x) ∈ I, donc g(x) est une application de I → I
• |g0 (x)| = | − 1 x | < 1 pour tout x ∈I, donc g est contractante dans I.
2 e2
D’après le théorème du point fixe, la suite xn = g(xn ) converge vers le point
fixe de g qui est la racine de f dans I . De plus, la convergence est oscillante
car : −1 < g0 (x) < 0 ∀x ∈ I. Voici le résultat de calcul de xn :
n xn+1 = g(xn ) ∆(xn ) = |g(xn ) − xn |
0 0.778800783071405 0.278800783071405
1 0.677462965266489 0.101337817804916
2 0.712673788688134 0.035210823421645
3 0.700236674717908 0.012437113970226
4 0.704604703725226 0.004368029007318
Le calcul confirme que la convergence de g vers le point fixe est oscillante,
elle peut être illustrée graphiquement par une évolution spirale comme :

F IGURE II.5 – illustration graphique de la convergence spirale de g(x) = e−x/2


Résolution de f (x) = 0

II.3.5 Applications
II.3.5.1 Chute libre avec frottements linéaires
Reprenons l’équation II.5 et écrivons la sous une forme auxiliaire x = g(x).
Choix de la fonction g(x)
On considère en première tentative l’écriture triviale
β h
x = g(x) = − (e−γx − 1) − (II.8)
α α
Calculons à présent sa dérivée pour vérifier la convergence de la suite xn :
β γ −γx
g0 (x) = e = e−γx (II.9)
α
On obtient 0 < g0 (x) = e−γx < 1 pour tout x > 0, une garantie de convergence
(monotone) de l’algorithme de la méthode du point fixe pour ce choix de la
fonction g.
Calcul itératif de la solution
Voici le programme mtd_point_fixe.m qui calcule les 10 premiers itérés de la
suite xn+1 = g(xn ) à l’aide de l’algorithme de la méthode du point fixe.
%programme mtd-point-fixe.m
xo=15.57;m=300;g=10;h=-1000;rho=12;
v0=(m*g)/rho;tau=m/rho;alpha=v0;gamma=1/tau;
beta=alpha/gamma;
for n=1:10 % début de la boucle des itérations
x(n)=-(beta/alpha)*(exp(-gamma*xo)-1) - h/
alpha;
xo=x(n);
end % fin de la boucle
format long
% résultat donné sous la forme d’un vecteur
colonne
x’

Le résultat renvoyé confirme la convergence de l’algorithme vers la solution


recherchée. On remarque que la suite est bien monotone, ici croissante, et
converge vers x∗ = 15.611.
Au bout de 10 itérations, la solution est approchée avec en moins 3 décimales.
Méthodes Numériques

» mtd-point-fixe
ans =
15.588992501379442
15.599176975453549
15.604635077006797
15.607559288266042
15.609125689691203
15.609964682791080
15.610414041140398
15.610654707867260
15.610783602043101
15.610852633545655

II.3.5.2 Chute libre avec frottements quadratiques


Restons dans la même problématique de départ et supposons que les condi-
tions physiques sont telles que les frottements soient modélisés, non pas par
une loi linéaire, mais par un terme proportionnel au carré de la vitesse du mo-
bile : R = a v2 (c’est le cas lorsque la vitesse est plus importante). La constante
a est donnée par a = 12 η Cx S avec η la viscosité du fluide, S la surface frontale
de l’objet et Cx le coefficient de pénétration dans l’air. L’équation II.5 devient,

αx + H log(β + e−γx ) + h = 0 où (II.10)

2mg v0 2
v2o = , α = v0 , τ = , H = v0 τ, γ = , β = 1
η Cx S g τ
Détermination de xo
La méthode graphique nous donne une valeur approchée xo = 14.15 de la
solution de l’équation II.10. La figure II.6 illustre cette démarche pour le choix
indiqué en légende sur la figure des paramètres de l’équation.
Choix de la fonction g(x)
Un choix trivial de la fonction g(x) = − H −γx ) − h ne nous permet
α log(1 + e α
pas de conclure quant à la convergence de la méthode. En effet,
Hγ e−γx Hγ e−γx Hγ
|g0 (x)| = | −γx
| = | || −γx
|≤
α 1+e α 1+e α
Résolution de f (x) = 0

F IGURE II.6 – Solution graphique de l’équation II.10.

Comme Hγ/α = 2, il vient alors que 0 < g0 (x) ≤ 2. Ceci peut se voir à travers
une vérification rapide avec le programme mtd-point-fixe.m précèdent. Voici
le résultat de ce calcul :
» ans =
14.140001136864901
14.140002273123596
14.140003408777288
14.140004543825967
14.140005678272590
14.140006812114205
14.140007945353764
14.140009077988312
14.140010210020806
14.140011341451244

A première vue, le résultat semble converger vers x0 = 14.14. Remarquons


que les valeurs de xn augmentent, ce résultat est cohérent car g0 > 0 et toute
éventuelle convergence sera par conséquent monotone.Pour confirmer cette
conclusion, calculons quelques itérés d’ordres très élevés. On trouve : x1000 =
14.140881737555542 et x10000 = 14.1421255. La suite xn converge bien vers
x0 = 14.14 mais il s’agit d’une convergence très lente (une évaluation de g0 sur
I donne g0 (x0 ) = 0.9999, très proche de 1).
Méthodes Numériques

Changeons la valeurs initiale et prenons xo = 12 , regardons pour cela le


comportement du programme.
» ans =
12.001053881806088
12.002107287592738
12.003160217530395
12.004212671793111
12.005264650554944
12.006316153989943
12.007367182269213
12.008417735563858
12.009467814050883
12.010517417901388

On voit qu’un mauvais choix de la valeur initiale nécessite plus d’itérations


pour approcher xo . D’ailleurs, x1000 = 14.130849 très loin de la valeur x1000 =
14.140882 calculée précédemment.
Essayons d’améliorer la rapidité de convergence de la suite xn . En utilisant
l’expression ??, nous pouvons construire une fonction g(x) = x + c f (x) avec
c = −1/ f 0 (xo ). Le même programme que pour l’exemple précédant nous
permet d’itérer la relation x = g(x) :
%Programme illustration-graph-poit-fixe.m
m=300; g=10; eta=1.7*10e-5; Cx=0.5; S=0.001;
v0=sqrt((2*m*g)/(eta*Cx*S));
tau=v0/g;H=v0*tau;alpha=v0;
gamma=2/tau; beta=1; h=-1000;
x0=14.27;
fp=alpha-(H*gamma*exp(-gamma*x0))...
/(beta+exp(-gamma*x0));
c=-1/fp;
for n=1:100
f=alpha*x0+H*log((beta+exp(-gamma*x0))/2)+h;
x(n)=x0+c*f;
x0=x(n);
end
format compact
x’
Résolution de f (x) = 0

On voit bien, dans le résultat ci-dessous, que la méthode converge dans ce cas
et ceci dès la première itération

» ans =
14.142708809020339
14.142141082402615
14.142136003156766
14.142135957367278
14.142135956815794
14.142135955517032
14.142135954600068
14.142135957546754
14.142135958016658
14.142135957275906

On atteint dans ce cas une précision de 10−8 au bout de 4 itérations unique-


ment. En prenant une autre valeur x0 = 12 de la solution approchée initiale,
le programme converge vers le même résultat mais met plus de temps. On
n’atteint la précision de 10−7 qu’après 11 itérations.

» ans =
14.333333696346891
14.106481809939998
14.148447659902951
14.141007584514558
14.142337333507916
14.142100006931081
14.142142372821164
14.142134815297059
14.142136161570498
14.142135919981525
14.142135963268625

Comparé aux résultats précédents, la converge a été amélioré d’une manière


spectaculaire !
Méthodes Numériques

II.4 Résolution par la méthode de Newton


II.4.1 Théorème de Taylor
Considérons une fonction f de classe C∞ (continue et toutes ces dérivées
continues) sur un intervalle [a, b]. Pour tout xo ∈ [a; b], la fonction f peut être
écrite sous forme d’un développement de Taylor au voisinage du point xo :
1
f (x) = f (xo ) + f 0 (xo )(x − xo )... + f 00 (xo )(x − xo )2 +
2!
1 (n)
... + f (xo )(x − xo )n + Rn (x) (II.11)
n!

II.4.2 Principe et algorithme de la méthode de Newton


Il découle du théorème précédant, en arrêtant le développement à l’ordre
1, que le graphe de la fonction au voisinage de tout point xo ∈ [a; b] peut être
assimilé à sa tangente en ce point.
La méthode de Newton tire son principe de cette définition. En effet, pour
chercher une racine simple x de la fonction f (x) sur [a; b], on peut confondre
la fonction et sa tangente en un point xo proche de x. La tangente en xo est une
droite d’équation y = f 0 (xo )(x − xo ) + f (xo ) et l’intersection de cette droite
avec l’axe des abscisses, y = 0, nous fournira une première approximation x1
de la racine x ( Regarder fig.II.7). Cette démarche sera reprise autant de fois n
qu’il en faut pour approcher la solution exacte avec la précision voulue, l’algo-
rithme est le suivant : x1 = xo − ff0(xo) f (xn ) 0
(xo ) ou xn+1 = xn − f 0 (xn ) avec f (xn ) , 0

F IGURE II.7 – Illustration graphique de la méthode de Newton.


Résolution de f (x) = 0

II.4.3 Convergence de la méthode de Newton


Démarrons de l’algorithme de la méthode de Newton (II.4.2) et calculons
∆n+1 .

f (xn ) f (xn )
∆(xn+1 ) = xn+1 − x = xn − 0
− x = ∆(xn ) − 0 (II.12)
f (xn ) f (xn )
En appliquant le développement limité (II.11) à la fonction f (xn ) au voisinage
de x et en s’arrêtant à l’ordre 2, alors
f (xn ) f (x) f 0 (x) f 00 (x)
0
= 0
+ 0
∆(xn ) + 0
∆(xn )2 + o(∆(xn )2 )
f (xn ) f (xn ) f (xn ) 2 f (xn )
0 0
avec : f (x) = 0, f (x) ≈ f (xn ).
On obtient
f 00 (x)
∆(xn+1 ) ≈ − ∆(xn )2 (II.13)
2 f 0 (xn )
On constate que lorsque la racine recherchée s’agit d’une racine simple, la
méthode de Newton converge d’une manière quadratique si f 00 (x) , 0.
Toutefois, si la racine x de la fonction f est multiple, de multiplicité p :
f 0 (x) = f 00 (x) = ... = f (p−1) = 0. Il en résulte que
f (xn ) 1 f (p) (x)
≈ ∆(xn ) p (II.14a)
f 0 (xn ) p! f 0 (xn )
1 p!
≈ ∆(xn ) p (II.14b)
p! p(xn − x) p−1
1 (xn − x) p
≈ (II.14c)
p (xn − x) p−1
1 1
≈ (xn − x) = ∆(xn ). (II.14d)
p p
et donc
1 1
∆(xn+1 ) ≈ ∆(xn ) − ∆(xn ) = (1 − )∆(xn ). (II.15a)
p p
∆(xn+1 ) ≈ k∆(xn ) (II.15b)
La convergence de la méthode de Newton se voit ralentit par la multiplicité
de la racine, elle passe de quadratique à linéaire et la vitesse de convergence
k = 1 − 1/p est d’autant plus faible que l’ordre de multiplicité p augmente.
Méthodes Numériques

II.4.4 Applications
II.4.4.1 Chute libre avec frottements linéaires
Dans le programme MATLAB suivant, l’algorithme de Newton permet de
retrouver la solution approchée de l’équation II.5.

% Programme mtd-newton.m
m=300;g=10;rho=12;h=-1000;
v0=(m*g)/rho;
tau=m/rho;
alpha=v0;
gamma=1/tau;
beta=alpha/gamma;
x(1)=15.6;
% la fonction est sa dérivée f=@(x) alpha*x +
beta*exp((-gamma*x)-1) + h ;
fp=@(x) alpha - beta*gamma*exp(-gamma*x);
for n=1:50
x(n+1)=x(n)-(f(x(n))./fp(x(n)));
end
format long; x ’

Le résultat est une suite xn qui converge d’une manière quadratique.


ans =
15.600000000000000
15.610934995789973
15.610932237264340
15.610932237264160
15.610932237264160
15.610932237264160
15.610932237264160
15.610932237264160
15.610932237264160
15.610932237264160
15.610932237264160
Résolution de f (x) = 0

II.4.5 Accélération de la convergence et algorithme de New-


ton pondéré
Il est possible d’accélérer la convergence de l’algorithme de Newton dans
les cas qui présentent des racines multiples au moyen du coefficient de relaxa-
tion. La démarche consiste en la modification de l’algorithme de Newton en
algorithme de Newton pondéré
f (xn )
xn+1 = xn − L (II.16a)
f 0 (xn )
L est appelé coefficient de relaxation. Ainsi, la vitesse locale de convergence
est donnée par k = 1 − L/p. En pratique, on cherche d’abord l’ordre p de
multiplicité de la racine x. Pour cela, on applique l’algorithme de Newton avec
L = 1 pour faire quelques itérations et on calcule la vitesse de convergence
k(x, n) = (xn+2 − xn+1 )/(xn+1 − xn ) = 1 − 1/p. A partir de la valeur de k(x, n)
on peut tirer p et comme valeur de L, on prendra l’entier le plus proche de p.

II.5 Résolution par la méthode de la sécante


II.5.1 Principe de la méthode de la sécante
La méthode de la sécante nécessite uniquement la connaissance préalable
de deux valeurs approximatives (xo , x1 ) de la racine de la fonction f (x).
• Une fois ces deux valeurs déterminées, le graphe de la fonction f (x)
peut être remplacé par la droite qui relie les deux points (xo , f (xo ))et(x1 , f (x1 ))
au voisinage de cet intervalle.
• Le point d’intersection de la droite avec l’axe des abscisses constitue
donc une nouvelle approximation x2 de la solution recherchée. Son
abscisse est donnée par l’équation suivante :
x1 − xo
x2 = x1 − f (x1 ) (II.17)
f (x1 ) − f (xo)
Ce processus sera par la suite répété pour calculer les termes x3 , x4 , ...xn qui au
bout d’un nombre n d’itérations converge vers la solution recherchée. L’algo-
rithme de la méthode
( 0
de la sécante est le suivant
x0 , x1 donnes
−xo
x2 = x1 − f (x1 ) f (xx1)− f (xo)
1
Méthodes Numériques

F IGURE II.8 – Principe de la méthode de la sécante (II.17)

II.5.2 Applications

II.5.2.1 Chute libre avec frottements linéaires

Le programme MATLAB suivant calcule les itérés de la suite xn données par


la relation II.17. Il affiche en sortie les valeurs trouvées de xn et de f (xn ).

% Programme mtd-secante.m
m=300;g=10;rho=12;h=-1000;
v0=(m*g)/rho;
tau=m/rho;
alpha=v0;
gamma=1/tau;
beta=alpha/gamma;
x(1)=15.75;
x(2)=15.8; f=@(x) alpha*x+ beta*(exp(-gamma*x)-1)
+ h;
Résolution de f (x) = 0

for n=1:8
x(n+2)=x(n+1)-f(x(n+1))*(x(n+1)-x(n))
/(f(x(n+1))-f(x(n)));
end
format long;
y=f(x);[ x , y ]

On voit bien que le processus converge vers la solution approchée.


» ans =
15.750000000000000 16.198756293107181
15.800000000000001 22.048011741986556
15.611531468110092 0.069577249001668
15.610934832258868 0.000301303094602
15.610932237300027 0.000000004163667
15.610932237264167 0
15.610932237264167 0
NaN NaN

On atteint la solution recherchée à 14 chiffres près après la virgule en 5 itéra-


tions uniquement. A la 6eme , on dépasse la précision de calcul dans MATLAB qui
affiche une erreur commise nulle. Le résultat NaN veut dire "Not A Number",
il apparaît car l’expression de l’algorithme de la sécante n’est pas définie à la
8 itération (dénominateur et numérateur nuls).
Si on cherche à déterminer la solution avec une précision ε, il suffit d’insérer
un test d’arrêt dans le même programme en utilisant la boucle While.
% Programme mtd-secante.m
m=300;g=10;rho=12;h=-1000;
v0=(m*g)/rho;
tau=m/rho;
alpha=v0;
gamma=1/tau;
beta=alpha/gamma;
x(1)=15.75;
x(2)=15.8; f=@(x) alpha*x+ beta*(exp(-gamma*x)-1)
+ h;
Méthodes Numériques

% Déterminer x avec une précision epsilon =


1.e-10
n=1;
While abs(x(n+1)+x(n))>1.e-10
x(n+2)=x(n+1)-f(x(n+1))*(x(n+1)-x(n))
/(f(x(n+1))-f(x(n)));
n=n+1;
end
format long;
y=f(x);[ x , y ]

Le programme s’arrêtera dans ce cas lorsque la précision atteint la valeur


voulue ε = 1.e − 10

II.6 Résolution des équations polynomiales


Un polynôme, relatif à la variable x, est la somme qui s’écrit :

Pn (x) = ao xn + a1 xn−1 + ... + an (II.18)

Les constantes ai , (i = 0, n) sont les coefficients du polynôme. Si ao , 0, alors


le polynôme est dit de degré n. Les polynômes jouent un rôle très important vu
leurs propriétés remarquables. D’autant plus que toute fonction, quel que soit
son expression, peut être approchée par un polynôme. La façon la plus simple
est de faire appel au développement en série de Taylor au voisinage d’un point
xo :
(x − xo )2 00
f (x) ≈ f (xo ) + (x − xo ) f 0 (xo ) + f (xo ) + ...
2!
(x − xo )n n
+ f (xo ) (II.19)
n!

II.6.1 Rappels de quelques propriétés des polynômes


Pour un polynôme de coefficients réels :
1. Un polynôme de degré n admet n racines réelles ou complexes.
Résolution de f (x) = 0

2. Les racines complexes se présentent sous forme de paires : x + iy et son


complexe conjugué x − iy
3. Si xo est une racine du polynôme pn alors il peut être factorisé :
Pn = (x − xo )Pn−1 , Pn−1 est un polynôme de degré n − 1.
4. Pour un polynôme de degré n, le nombre de racines réelles positive est
égales au plus au nombre de changements de signe de ces coefficients
(pour les racines négatives on remplace x par −x, règle de Descartes).

Exemple :

P4 (x) = x4 − 2x3 + 3x2 + 2x − 4 a au maximum 3 racines positives et


quand on remplace x par −x on obtient p4 (−x) = x4 + 2x3 + 3x2 − 2x − 4
ce qui donne 1 racine réelle négative (résultat prévisible puisque p4 (x) =
0 a, au plus, quatre racines réelles).

II.6.2 Schéma de Horner


C’est un algorithme pour calculer la valeur d’un polynôme et de ses déri-
vées en un point donné en faisant uniquement appel à des opérations arithmé-
tiques simples ( addition, soustraction, produit). Il permet de gagner beaucoup
de temps pour les machines de calcul. Le schéma de Horner peut être établi en
écrivant Pn (x) sous la forme suivante :

Pn (x) = [[[ao ]x + a1 ] x] + a2 .........] x + an (II.20)

Alors, on peut écrire :


po = ao
p1 = a1 + ao x = a1 + po x
p2 = a2 + p1 x
............................ (2.24)
pn−2 = an−1 + pn−2 x
pn = an + pn−1 x

Exemple :
la valeur de P4 (x) = x4 + 2x3 + 3x2 − 2x − 4 pour xo = 1. Le
programme horner.m ci-dessous utilise l’algorithme II.20 pour évaluer p4 au
point x = 1.
Méthodes Numériques

% Programme horner.m
function horner(N,x0)
an=input(’entrer les coefficients du polynome:
’);
pn(1)=an(1);
for n=1:N-1
pn(n+1)=an(n+1)+pn(n)*x0
end

Pour faire tourner ce programme, il faut lui communiquer les paramètres N


et x0 en tapant en lignes de commande : horner(4,1). Suite à cela, une
phrase s’affiche dans la fenêtre command window nous demandant d’entrer
les coefficients du polynôme. Nous introduisons alors par le clavier le vecteur
an : [−4 − 2 3 2 1]. Le résultat est le suivant :
pn =
-6 -8
pn =
-6 -8 -5
pn =
-6 -8 -5 -3

La commande MATLAB polyval sert à évaluer un polynôme de degré n dont


les coefficients sont rangés dans un vecteur p en un point x donné. La syntaxe
est la suivante : y = polyval(p,x).

II.6.3 Méthode de Bairstow


La méthode de Bairstow est une variante de la méthode de Newton adaptée
pour les polynôme et qui fait appel au schéma de Horner, avec un polynôme
de degré 2. Cette méthode permet non seulement de trouver les racines réelles
d’un polynôme à coefficients réels, mais elle donne également ses racines
complexes. D’ailleurs ces dernières apparaissent sous forme de paires de
solutions de l’équation quadratique : a x2 + b x + c = 0. Elle possède les
propriétés suivantes :
• La convergence est quadratique, sauf pour les racines multiples.
• Converge plus rapidement que la méthode de Newton.
Résolution de f (x) = 0

Partant du polynôme :
n
Pn (x) = ∑ ai xn−i = ao xn + a1 xn−1 + ... + an (II.21)
i=0

qu’on peut écrire sous la forme :


m
Pn (x) = ao ∏ (x2 + sk x + pk ) n(pair) = 2m (II.22)
k=1

m
Pn (x) = ao (x − α) ∏ (x2 + sk x + pk ) n(impair) = 2m + 1 (II.23)
k=1

Où s = (x1 + x2 ) = b/a et p = x1 .x2 = c/a et x1 , x2 sont les racines de a x2 +


b x + c = 0.
En utilisant la division euclidienne de Pn (x) par x2 + sx + p, ce qui est la
généralisation du schéma de Horner, Pn (x) s’écrit en fonction d’un polynôme
Q(x) de degré n − 2,

Pn (x) = Qn−2 (x)(x2 + s x + p) + x α(s, p) + β (s, p) (II.24)

Tel que Qn−2 (x) = bo xn−2 + b1 xn−3 + · · · + bn−3 x + bn−2 .


Si x1 et x2 sont des racines de Pn (x) = 0, la factorisation (II.22 ou II.23) n’est
possible que si :
(
α(s, p) = 0
(II.25)
β (s, p) = 0

La recherche des racines x1 , x2 est ramenée à la recherche de s et p qui vérifient


le système II.25 . En utilisant l’algorithme de la méthode de Newton pour les
systèmes (voir chapitre système), on trouve
" #−1
∂α ∂α
s(k+1) s(k) α(s(k) , p(k) )
     
∂s ∂p
= − × (II.26)
p(k+1) p(k) ∂β
∂s
∂β
∂p
β (s(k) , p(k) )
s(k) , p(k)

Pour le calcul des coefficients de cette dernière relation on fait appel à la


division de Pn (x) par x2 + s x + p, qui donne : bo xn−2 + b1 xn−1 + · · · + bn−2 et
Méthodes Numériques

le reste : bn−1 (x + s) + bn = bn−1 x + (bn + s bn−1 ). Par identification entre


ces dernières relations et l’équation (II.24) on obtient,

bo = ao
b1 = a1 − s bo
...................
bk = ak − s bk−1 − p bk−2 , k = 2 . . . n
................................................
bn−1 = an−1 − s bn−2 − p bn−3
bn = an − s bn−1 − p bn−2
α(s, p) = bn−1
β (s, p) = bn + s bn−1

et en dérivant par rapport à s et p on trouve

∂α ∂β
∂s = −cn−2 ∂s = −cn−1 − p cn−2

∂α ∂β
∂p = −cn−3 ∂p = −cn−2 − s cn−3

avec

co = bo
c1 = b1 − sco
ck = bk − s ck−1 − p bk−2 , k = 2 . . . n − 1
...............................................
cn = bn − s cn−1 − p bn−2

L’équation II.26 devient


 
β ∂pα −α ∂pβ
s(k+1) s(k)
   
∂α ∂β ∂α ∂β
 − 
= − ∂s ∂ p ∂ p ∂s  (II.27)
p(k+1) p(k)  α ∂sβ −β ∂sα 
∂α ∂β ∂α ∂β

∂s ∂ p ∂ p ∂s

Ceci implique que


−bn cn−3 +bn−1 cn−2
" #
s(k+1) s(k)
   
−cn−1 cn−3 +cn−2 cn−2
= − −cn−1 bn−1 +cn−2 bn (II.28)
p(k+1) p(k) −cn−1 cn−3 +cn−2 cn−2
Résolution de f (x) = 0

Ainsi, en se donnant des valeurs initiales (so ; po ) et en résolvant l’équation


II.28 on obtient (s1 , p1 ). A partir des valeurs de (s1 , p1 ), on remonte aux deux
racines x1 et x2 . Pour le reste des racines on répète les mêmes opérations avec
le polynôme Qn−2 (x) et ainsi de suite.
Exemple :
Appliquons la méthode de Bairstow pour calculer les racines de
l’équation

P4 (x) = x4 + 2x3 − 13x2 − 14x + 24 = 0

On se donne des valeurs de départ pour la somme et le produit (n est (le degré
du polynôme) + 1) :
» s=1;p=1;n=5;

Les coefficients du polynôme représente les éléments du vecteur a :


» a=[1,2,-13,-14,24];

Calculons les éléments des vecteurs b et c


» b(1)=a(1);b(2)=a(2)-s*b(1);for k=3:n;
b(k)=a(k)-s*b(k-1)-p*b(k-2);end
» c(1)=b(1);c(2)=b(2)-s*c(1);for k=3:n-1;
c(k)=b(k)-s*c(k-1)-p*c(k-2);end

La matrice des dérivées partielles de l’équation (II.26) :


» M=[-c(n-2), -c(n-3);-c(n-1)-p*c(n-2),-c(n-2)-s*c(n-3)]

Le vecteur V = (α, β )0 = (vecteur colonne) :


» V=[b(n-1);b(n)+s*b(n-1)] ’

Nous avons posé s = 1, p = 1 pour n = 5 (itération initiale) :


» Sn=[s;p]- inv(M)*V
» Sn =
1.0000
-1.4375
Méthodes Numériques

Calculons à présent l’itération suivante, les nouvelles valeurs de s, p sont


considérées comme point de départ (on a évité de donner un tableau à s, p pour
économiser la mémoire) :
»s=Sn(1);p=Sn(2);
» Sn=[s;p]- inv(M)*V
» Sn =
1.0000
-1.9716

On refait la même opération jusqu’à atteindre la précision souhaité (critère


d’arrêt). Ainsi, après 7 itérations on trouve s = 1 et p = −6, ce qui correspond
a x1 = 1 et x2 = −2. Pour le reste des racines on divise P4 (x) par (x2 + x − 6)
et on fait la même opération pour le polynôme résultant (dans ce cas ce n’est
pas nécessaire puisque le polynôme est de degré 2).

II.6.4 Applications
II.6.4.1 a. Oscillateur anharmonique
Un système mécanique masse-ressort horizontal dans lequel la masse
effectue des oscillations périodiques de forme sinusoïdale ou harmonique
est appelé oscillateur harmonique (OH). Son énergie potentielle est donnée par

1
EOH = Kx2 (II.29)
2
Où k est la constante de raideur du ressort et x le déplacement de la masse par
rapport à sa position d’équilibre xo .
Lorsque un système physique évolue de façon périodique quelconque, des
termes supplémentaires sont ajoutés à l’énergie de l’OH. On parle dans ce cas
d’un oscillateur anharmonique dont l’énergie est donnée par :
1
EOA = Kx2 +Cx3 + Dx4 (II.30)
2
A un moment donné l’énergie de OA vaut Eo , on cherche la position xo
correspondante. Pour cela on doit résoudre l’équation :
Kx2 +Cx3 + Dx4 = Eo (II.31)
Résolution de f (x) = 0

Nous allons nous donner un ensemble de paramètre : K, C, D et Eo pour


calculer xo . La comparaison avec la valeur de xo dans le cas de l’OH permettrait
de comprendre le sens des termes anharmoniques.
L’algorithme de la méthode de Bairstow fait l’objet du programme
mtd-bairstow.m suivant
Méthodes Numériques

% Programme mtd-bairstow.m
% C’est une fonction qui fait appel à une autre
fonction.
function[zeros]=bairstow(a,n,Delta)
% n: (le degré du polynôme) +1.
% a: vecteur ligne qui contient les coefs a_i du
poly.
% Delta: l’erreur sur le calcul de la racine
% zeros: vecteur de deux colonnes qui contient
les parties réelle et imaginaire des racines.
% Valeurs initiales
while n>3
s=1; p=1; err=1.e-10;
while Delta>err % test d’arret
%calculer bn et cn
b(1)=a(1); b(2)=a(2)-b(1)*s;
for k=3:n
b(k)=a(k)-b(k-1)*s-b(k-2)*p;
end;
c(1)=b(1); c(2)=b(2)-c(1)*s;
for k=3:n-1
c(k)=b(k)-c(k-1)*s-c(k-2)*p;
end;
%calculer delta s et delta p
N1=-b(n)*c(n-3)+b(n-1)*c(n-2);
N2=-c(n-1)*b(n-1)+c(n-2)*b(n);
D=-c(n-1)*c(n-3)+c(n-2)*c(n-2);
ds=N1/D;
dp=N2/D;
%calculer s et p
s=s+ds;
p=p+dp;
st=norm([ds dp]);
end;
Résolution de f (x) = 0

% calculer les racines x


r1,r2,im1,im2
=solution(s,p,n);
zeros(n-1,1:2)=[r1 im1]; zeros(n-2,1:2)=[r2 im2];
%refaire le meme travail sur le polynome p_n-2
n=n-2;
a(1:n)=b(1:n);
end;
% résoudre la dernière équation
if n==3
s=a(2)/a(1); p=a(3)/a(1);
r1,r2,im1,im2
=solution(s,p,n);
zeros(2,1:2)=[r1 im1];
zeros(1,1:2)=[r2 im2];
end;
if n==2
r0=-a(2)/a(1);
zeros(1,1:2)=[r0 0];
end
% Resoudre l’equation xˆ2 + sx + p = 0 par la
fonction solution
function [r1,r2,im1,im2]=solution(s,p,n)
delta=s*s-4*p;
if delta<0
delta=-delta;
im1=sqrt(delta)/2; r1=-s/2; r2=r1; im2=-im1;
elseif delta>0
r1=(-s+sqrt(delta))/2; im1=0;
r2=(-s-sqrt(delta))/2; im2=0;
else
r1=-s/2; im1=0; r2=-s/2; im2=0;
end;
Méthodes Numériques

Le programme mtd-bairstow adapté à l’exemple de l’oscillateur har-


monique avec les coefficients (K,C, D, −E0 ) = (1, 2, −13, −14, 24) donne, en
tapant :
» bairstow([1 2 -13 -14 -24],5,1.e-10)

le résultat est le suivant


ans =
-4 0
3 0
-2 0
1 0

qui sont les quatre racines du polynôme de degrés 4 de l’exemple précédant.


On voit que l’oscillateur possède 4 racines réelles donc quatre positions d’équi-
libre xo .
Le même programme, appliqué au cas d’un oscillateur de coefficients K,C, D, −E0 ) =
(1, 2, 14, −24) donne
ans =
.25 1.3092 0
-1.6546 -3.9490
-1.6546 -2 3.9490
Résolution de f (x) = 0

II.6.5 Bilan comparatif


Ci-dessous, on résume dans un tableau le coût de chacune des méthodes
précédentes, leurs avantages ainsi que leurs inconvénients, à titre comparatif.

comparaison des méthodes numériques


Méth. Coût Avantages Inconvénients
Dico 1 addition *convergence assurée *contrainte de départ
1 division *nombre d’itérations xo encadré sur [a b]
1 évaluation connu pour avec f(a)f(b)<0
1 test de signe atteindre une *convergence linéaire
1 assignation précision ε de vitesse k = 0.5
Séca 2 assignations *Peu de contraintes lenteur et manque
3 soustractions de départ de précision
1 produit
1 division
2 évaluations
Pnt fix 1 assignation *algorithme simple *convergence lente
1 évaluation *convergence rapide
pour certaines g
Newt 1 assignation *convergence *nécéssite le calcul
1 soustraction quadratique de la dérivée
1 division pour racine simple *lente pour les
2 évaluations *peu de contraintes racines multiples
initiales

II.7 Résolution avec la librairie de Matlab


Pour terminer ce chapitre, notons que la résolution des équations non-
linéaires peut se faire sous MATLAB en une ligne de commande en utilisant
fzero .
Considérons une fonction f de la variable x et soit x0 le paramètre qui annule
la fonction f dans l’intervalle [a b].
La commande fzero fait appel à une librairie Matlab qui utilise une combi-
naison des méthodes de bissection et de la sécante pour rechercher la valeur
de x0 . Si celle-ci n’est pas unique dans cet intervalle, il faudrait le subdiviser
en sous-intervalles afin d’isoler les racines car fzero ne peut donner qu’une
Méthodes Numériques

seule racine à la fois. La syntaxe de la commande est la suivante :


x = fzero(fun,x0,options)
Elle tente de trouver des zeros de la fonction f un autour du point x0 .

II.7.1 Applications
Nous donnons dans le programme solution_graphique.m suivant les
lignes de commandes qui ont permis de visualiser la solution approchée initiale
xo de l’équation II.5 dans l’intervalle [0 , 20] et ceci pour un choix donné des
paramètres α, β , γ et c.
% Programme solution_graphique.m
% Les constantes de l’équation(dans le système
SI)
m=300;g=10; ρ=12; h=-1000;
v0=(m*g)/ρ;tau=m/ρ; alpha=v0;gamma=1/tau;
beta=alpha/gamma;
x = 0:0.01:20;% définir l’intervalle d’etude
% Définir et tracer la fonction f
f = beta*[exp(-gamma*x)-1]+alpha*x + h;
plot(x,f,’Linewidth’,2) % épaisseur de trait=2
grid on;box on; % ajouter grille et cadre à la
figure
xlabel(’x’);ylabel(’f’); % nommer les axes
% les accolades {} veulent dire qu’on est en
% mode Latex, accepté par MATLAB .
% ajouter un titre de la fonction {f =\alpha x +
\beta %(e∧{-\ gamma x}-1)+ h.
title(’Determination graphique de la racine xo’);

legend(’m=300, ρ=12, h=-1000, g=10’);%ajouter


légende
set(legend, ’Box’, ’on’); %encadrer la légende

Pour trouver les zeros de la fonction f = αx + β [e−γx − 1] + h, nous pouvons


écrire un petit programme dans lequel on définit d’abord la fonction f . Ensuite
Résolution de f (x) = 0

on fait appel à la commande fzero qui nous retournera les racines trouvées.
Nous pouvons simplement le faire en lignes de commande dans le workspace.

» f=inline(’alpha*x + beta*(exp(-gamma x)-1) +


h’,’x’,’alpha’,’beta’,’gamma’,’h’)
f =
Inline function:
f(x,alpha,beta,gamma,h) = alpha*x +
beta*(exp(-gamma x)-1) + h
» m=300;g=10; rho=12; v0=(m*g)/rho; tau=m/rho;
h=-1000; alpha=v0; gamma=1/tau; beta=alpha/gamma;
» x0=15.57;

» options = optimset(’Display’,’iter’);
» [x fval exitflag output]=fzero(@(x)fun(x,alpha
,beta,gamma,h),x0,options);
» ans =
15.610932237264159

Nous avons choisi ici de fixer le paramètre option pour afficher les itérations
ainsi que des informations sur le processus itératif utilisé, d’autres options
existent.

II.7.2 Limitations :
La commande fzero ne considère comme racine que les valeurs pour les-
quelles la fonction coupe l’axe des abscisses. Lorsqu’il s’agit d’une fonction
qui touche uniquement l’axe des abscisses, comme dans le cas de la fonction
f (x) = x.2 qui passe par le point (0, 0), sans changer de signe, alors ces racines
ne sont pas considérées comme tel. Dans ce cas, fzero exécute son algorithme
d’itération jusqu’à afficher Inf, NAN, ou une valeur complexe. La commande
f zero reste pratique mais à utiliser avec prudence, on est souvent amenés à
élaborer des programmes faisant appel aux différentes méthodes numériques.
Chapitre III

Interpolation et approximation
Polynômiales

C HERCHER des expressions analytiques pour les lois de comportement est


un objectif que souhaite atteindre toute personne voulant interpréter ou
exploiter des phénomènes naturels, sociaux, économiques ou autres. Ainsi, en
se donnant des lois simples, on peut prédire un comportement futur.
Néanmoins, la réalité est beaucoup plus compliquée. Parfois, on ne peux pas
déterminer des expressions analytiques et dans d’autres cas celles-ci ne sont
pas simples. Dans ce contexte, approcher une fonction consiste à la remplacer
par une autre fonction plus simple et dont le comportement est similaire, c’est
l’approximation.
Une autre situation, très fréquente en sciences expérimentales d’ailleurs, se
présente lorsqu’une fonction est déterminé en quelques points particuliers
uniquement. On cherche alors à déduire les autres valeurs de f à travers une
autre fonction continue qui passe par les mêmes points, on parle dans ce cas
d’interpolation. Ainsi, l’interpolation va nous permettre d’avoir quelques
données manquantes dans un intervalle fini.
Dans certaines situations, on peut approcher les lois comportementales par la
somme des puissances d’un paramètre donné x, on parle d’interpolation et
d’approximation polynomiales.
Méthodes Numériques

III.1 Position du problème de l’interpolation


Pour étudier un phénomène donné, on relève un ensemble de points :
(x0 , f (x0 ), (x1 , f (x1 ), ..., (xn , f (xn ) provenant de mesures physiques. Comme
tout phénomène physique est continu, on sait que la courbe de la fonction
inconnue f (x) doit être lisse, la solution est de faire une Interpolation. Le
problème de l’interpolation se résume à la recherche de la valeur approchée
d’une fonction continue f (x) en tout point x lorsqu’on la connaît seulement
sous la forme d’une distribution yk = f (xk ) , k = 0 : n.
D’une manière simple, pour tirer une loi de comportement qui englobe un
ensemble de points qui représentent une certaine fonction f (x), on fait appel
à l’interpolation par polynômes où les points (xk , yk ) sont les racines d’un
polynôme de degré n : Pn (x) = ao + a1 x1 + ... + an xn .

Le polynôme Pn est défini si les coefficients (ai ) sont connus, ce qui revient à
résoudre le système suivant :
     
1 x0 ... xn0 a0 y0
 1 x1 ... xn1   a1   y1 
. .. .. . .. = .. .
     
 1 ..

. .   .   . 
1 xn ... xnn an yn
| {z }
Matrice de Vandermonde

C’est un système de (n+1) équations à (n+1) inconnues dont la résolution


constitue une tache lourde, en particulier lorsque le nombre de points d’inter-
polation est grand.
Interpolation et approximation Polynômiales

III.2 Interpolation de Lagrange


Dans la méthode directe, le polynôme Pn (x) est écrit dans la base canonique
{1, x, x2 , ..., xn } de l’ensemble des polynômes à coefficients réels Pn comme :
Pn (x) = a0 + a1 x + ... + an xn . Les coordonnées du polynôme Pn (x) dans cette
base sont les coefficients recherchés ai .
A travers la méthode de Lagrange, on cherche une autre base {L0 , L1 , ..., Ln } de
Pn dans laquelle les coordonnées du polynôme Pn (x) sont les valeurs connues
de f aux points d’interpolation : y0 , y1 , ..., yn . Dans une telle base, le polynôme
d’interpolation s’écrit : Pn (x) = y0 L0 (x) + y1 L1 (x) + ... + yn Ln (x) et la déter-
mination de Pn (x) nécessite le calcul des polynômes de la base de Lagrange
Lk , k = 0, .., n.
Soit f (x) une fonction définie en deux points (x0 , f (x0 )) et (x1 , f (x1 )). Le
polynôme de Lagrange qui passe par ces deux points est de degré n = 1 et
vérifie : P1 (x0 ) = f (x0 ) et P1 (x1 ) = f (x1 ). L’idée de Lagrange est alors d’écrire
son polynôme comme :

(x − x1 ) (x − x0 )
P1 (x) = y0 L0 (x) + y1 L1 (x) = f (x0 ) + f (x1 ) (III.1)
(x0 − x1 ) (x1 − x0 )

De là, on peut par récurrence construire le polynôme qui passe par (n+1)
points : (xo , f (xo )), (x1 , f (x1 )), ..., (xn , f (xn )). Il est de degré n et s’écrit :

(x − x1 )(x − x2 )...(x − xn ) (x − xo )(x − x2 )...(x − xn )


Pn (x) = f (xo ) + × f (x1 )
(xo − x1 )(xo − x2 )...(xo − xn ) (x1 − x0 )(x1 − x2 )...(x1 − xn )
(x − xo )(x − x1 )...(x − xn−1 )
+ ... + f (xn )
(xn − x0 )(xn − x1 )...(xn − xn−1 )
(III.2)

Avec :
 n
 Pn (x) = ∑k=0 Ln,k (x) × f (xk )

(III.3)
(x−xm ) (x−x0 )(x−x1 )...(x−xk−1 )(x−xk+1 )...(x−xn )
 Ln,k (x) = ∏nm=0

(xk −xm ) = (xk −x0 )(xk −x1 )...(xk −xk−1 )(xk −xk+1 )...(xk −xn )
m,k

L’écriture (V.4.2) est en réalité un développement de la fonction f (x) sur la


base des polynômes de Lagrange Lk (x).
Méthodes Numériques

Exemple : Déterminer le polynôme d’interpolation de Lagrange d’ordre 2 qui


passe par les points : (0, 1), (0.1, 1.10), (0.2, 1.22).
1. Les polynômes de Lagrange Ln,k (x) sont :

(x − 0.1)(x − 0.2)
L2,0 (x) = = 5.102 (10x2 − 3x + 0.1)
(0 − 0.1)(0 − 0.2)

(x − 0)(x − 0.2)
L2,1 (x) = = −102 (x2 − 0.2x)
(0.1 − 0)(0.1 − 0.2)
(x − 0)(x − 0.1)
L2,2 (x) = 5.102 (x2 − 0.1x)
(0.2 − 0)(0.2 − 0.1)
2. Le polynôme d’interpolation de Lagrange Pn (x) est :

P2 (x) = 1 × L2,0 (x) + 1.10 × L2,1 (x) + 1.22 × L2,2 (x)

P2 (x) = x2 + 0.9x + 1

III.2.1 L’erreur d’interpolation de Lagrange


Si la fonction f est (n + 1) fois dérivable sur l’intervalle I = [a; b], alors
pour tout x ∈ [a; b] il existe ξ ∈ [a; b] tel que l’erreur d’assimiler f (x) à Pn (x)
est égale à

f (n+1) (ξ ) n
En (x) = f (x) − Pn (x) = ∏ (x − xk ) (III.4)
(n + 1)! k=0

Notons que l’erreur aux noeuds d’interpolation est nulle En (xk ) = 0, puisque
la fonction et le polynôme se confondent pour x = xk (k = 0 : n).
Si les points sont régulièrement espacés d’un pas h : xk = x0 + k × h , on peut
écrire
Max| f (n+1) (x)|
x∈I
Max|En (x)| ≤ hn+1 (III.5)
x∈I 4(n + 1)

Remarque 1: Lorsque le nombre de points augmente, le degré du polynôme


augmente aussi. Malheureusement ceci ne donne pas des résultats plus précis,
au contraire les fluctuations du polynôme deviennent plus importantes. Nous
Interpolation et approximation Polynômiales

savons très bien qu’un polynôme de degré n possède n racines réelles ou com-
plexes. Si le nombre de racines réelles augmente (voir figure III.1) alors dans
un domaine précis la méthode de Lagrange donne un résultat complètement
aberrant (comparer l’écart entre le polynôme et la fonction au voisinage des
crêtes).

F IGURE III.1 – Tracé (trait plein) du polynôme P4 (x) = 2x4 − 13x3 + 28x2 + 6
possédant 4 racines dans le domaine [0, 4] et de la fonction f (x) = e(x/4) . Les
deux courbes sont proches uniquement dans le domaine [1, 2].

Remarque 2: On aurait pu penser que le développement en série de Taylor


peut constituer une meilleure interpolation polynômiale pour toute fonction
analytique, ce n’est pas le cas car la série de Taylor est calculée au voisinage
d’un point xo . L’erreur augmente considérablement loin de xo .

Exercice 1 : On se donne la fonction f de la variable réelle x qui passe


par les points : (0, 1), (1, 2), (2, 9) et (3, 28). On cherche une expression po-
lynomiale approchant la fonction f (x) en utilisant le polynôme d’interpolation
de Lagrange.
1. Montrer que les polynômes de Lagrange satisfont les (n + 1) équations :

n
∑ Ln,k (x) × x j m = xm pour m = 0, 1, ..., n (III.6)
k=0

2. Si les points d’interpolation xk sont équidistants et rangés dans l’ordre


croissant en posant xk = x0 + k × h avec k = 0, 1, ..., n et x = x0 + t × h ,
Méthodes Numériques

t ∈ R. Etablir l’expression des coefficients de Lagrange suivante :


n−k
Ln,k (t) = (−1)
n! Cn ×
k t(t−1)...(t−n)
t−k ; k = 0, 1, ..., n
3. Trouver l’expression du polynôme d’interpolation de Largrange de la
fonction f (x)
4. On ajoute à l’ensemble des points de f (x) le point (5, 54). Peut-on dé-
duire directement le polynôme d’interpolation de Largrange qui englobe
ce point en utilisant le résultat de la question (3) ?

Corrigé :
1. Le polynôme d’interpolation de Lagrange de f (x) = xm est :
n
Pn (x) = ∑ Ln,k (x) × xkm
k=0

Mais : f (x) = Pn (x) + En (x) où :

f (n+1) (ξ ) n
En = ∏ (x − xk ) = 0 car f (n+1)(x) = 0
(n + 1)! k=o

Finalement, on trouve : f (x) = xm = Pn (x) = ∑nk=0 Ln,k (x) × xk m .


2. Points équidistants :
n n
(x − xm ) (t − m)
Ln,k (x) = ∏ (xk − xm) = Ln,k (t) = ∏ (k − m)
m=0 m=0
m,k m,k
n n
1 1
= ∏ (t − m) × ∏
(t − k) m=0 m=0 (k − m)
m,k
n
1 1
= ∏ (t − m).
(t − k) m=0 k(k − 1)...(1)(−1)(−2)...(k − n)
n
1 (−1)n−k
Ln,k (t) = ∏ (t − m) ×
(t − k) m=0 k!(n − k)!
t(t − 1)...(t − k)...(t − n) (−1)n−k
= × ×Cnk
t −k n!
n!
où Cnk =
k!(n − k)!
Interpolation et approximation Polynômiales

III.3 Interpolation de Newton


Le changement du polynôme de Lagrange (de ces coefficients) au moindre
changement de la valeur d’un point d’interpolation constitue un inconvénient
majeur de cette méthode. De plus, le degré augmente lorsque le nombre
de points augmente. Ce qui nécessite un calcul complètement nouveau de
tous les coefficients du polynôme à chaque fois qu’un point est ajouté. Pour
remédier à ces inconvénients, on se donne (n+1) points (xk , f (xk ))k=1:n et nous
construisons un polynôme de degré n de la forme récurrente suivante :
Pn (x) = ao
+ a1 (x − xo )
+ a2 (x − xo )(x − x1 ) (III.7)
..............................
+ an (x − xo )(x − x1 ) . . . (x − xn−1 )
qu’on présentera avec l’écriture compacte suivante :
n i−1
Pn (x) = ∑ ai wi (x) avec : wi (x) = ∏ (x − xk ) et wo = 1 (III.8)
i=0 k=0

Si on impose à Pn de passer par deux points x0 et x1 , on obtient un polynôme


de degrés n = 1 : P1 (x) = a0 + a1 (x − xo ) tel que :
(
P1 (x0 ) = a0 = f (x0 )
(III.9)
P1 (x1 ) = a0 + a1 (x1 − x0 ) = f (x1 ) ⇒ a1 = f (x(x1 )− f (xo )
−xo )
1

L’expression de a1 est exprimée par ce qu’on appelle : Différence Divisée


d’ordre 1 de x1 et x2 , qu’on note dans le cas général de xk et xk+1 :
f (xk+1 ) − f (xk )
f [xk , xk+1 ] = (III.10)
(xk+1 − xk )
De la même façon, on montre que le passage du polynôme par trois points x0 ,
x1 et x2 donne : P2 (x) = a0 + a1 (x − xo ) + a2 (x − xo )(x − x1 ) tel que :

P2 (x2 ) = a0 + a1 (x2 − x0 ) + a2 (x2 − xo )(x2 − x1 )


f (x2 ) − a0 − a1 (x2 − x0 ) (III.11)
P2 (x2 ) = f (x2 ) ⇒ a2 =
(x2 − x0 )(x1 − x0 )
Méthodes Numériques

f (x2 )− f (x0 ) f (x1 )− f (x0 ) (x2 −x0 ) f (x2 )− f (x1 ) f (x1 )− f (x0 )
(x2 −x1 ) − (x1 −x0 ) (x2 −x1 ) (x2 −x1 ) + (x1 −x0 )
III.11 ⇒ a2 = =
(x2 − x0 ) (x2 − x0 )
f [x2 , x1 ] − f [x1 , x0 ]
=
(x2 − x0 )
= f [x0 , x1 , x2 ]

En imposant à Pn (x) de passer par tous les (n + 1) points on peut écrire


l’expression du coefficient an :

f [x1 , x2 , ..., xn ] − f [x0 , x1 , ..., xn−1 ]


an = f [x0 , x1 , ..., xn ] = (III.12)
xn − x0
Les différences divisées peuvent être calculées par un processus récursif en les
disposant dans une table. On le montre pour un polynôme d’ordre 3 :

TABLE III.1 – Différences Divisées d’ordre 3


xk ordre 0 1er ordre 2ndr ordre 3ème ordre

a
z }|0 {
xo f [x0 ] = f (x0 )
a
z }|1 {
f [x1 ] − f [x0 ]
f [xo , x1 ] =
(x1 − x0 )
a
z }|2 {
f [x1 , x2 ] − f [x0 , x1 ]
x1 f [x1 ] = f (x1 ) f [x0 , x1 , x2 ] =
(x2 − x0 )
a3
z }| {
f [x2 ]− f [x1 ] f [x1 , x2 , x3 ] − f [x0 , x1 , x2 ]
f [x1 , x2 ] = (x2 −x1 ) f [x0 , .., x3 ] =
(x3 − x0 )
f [x2 ,x3 ]− f [x1 ,x3 ]
x2 f [x2 ] = f (x2 ) f [x1 , x2 , x3 ] = (x3 −x1 )
f [x3 ]− f [x2 ]
f [x2 , x3 ] = (x3 −x2 )
x3 f [x3 ] = f (x3 )

Les coefficients de la formule de Newton sont donnés par les premiers éléments
de chaque colonne (diagonale principale). A partir de (III.8) on peut construire
le polynôme d’interpolation
n
Pn (x) = f [xo ] + ∑ f [xo , x1 , . . . xk ](x − xo )(x − x1 ) . . . (x − xk−1 ) (III.13)
k=1
Interpolation et approximation Polynômiales

Cette expression est dite formule de Newton des différences divisées. Son
avantage par rapport à la formule de Lagrange est que les différences divisées
sont invariantes par permutation des noeuds.
Avec les mêmes données (xi , f (xi )) et en inversant l’ordre des points nous
pouvons définir les Différences Divisées f [xn , xn−1 , . . . x0 ] qui seront données
par la deuxième diagonale de la table précédente. Le polynôme d’interpolation
de Newton sera alors exprimé par :

n
Pn (x) = f [xn ] + ∑ f [xn , xn−1 , . . . , xn−k ](x − xn )(x − xn−1 ) . . . (x − xn−k )
k=1
(III.14)

Notons aussi l’existence d’une relation de récurrence entre les polynômes


d’interpolation à n points Pn et (n − 1) points Pn−1 :
en fonction des différences divisées progressives :

Pn (x) = Pn−1 (x) + f [x0 , x1 , . . . xn ](x − x0 )(x − x1 ) . . . (x − xn−1 ) (III.15)

et en fonction des différences divisées régressives :

Pn (x) = Pn−1 (x) + f [xn , xn−1 , . . . x0 ](x − xn−1 )(x − xn−2 ) . . . (x − x0 ) (III.16)

Par conséquent, pour rajouter un nouveau noeud xn , on n’a qu’ à rajouter au


polynôme Pn−1 un terme supplémentaire. D’un point de vue numérique, la
formule de Newton réduit considérablement le coût de calcul.

Exercice 2 : On considère la fonction f définie par le tableau :

xk −1/2 0 1/2 1
f (xk ) 45/8 7 59/8 9

1. Déterminer le polynôme d’interpolation de Newton de cette fonction par


la méthode des différences divisées.

Corrigé
1. Les différences divisées correspondent à :
Méthodes Numériques

−1/2 45/8
11/4
0 7 −2
3/4 3
1/2 59/8 5/2
13/4
1 9

Le polynôme d’interpolation de Newton pour f est :

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


+ f [x0 , x1 , x2 , x3 ](x − x0 )(x − x1 )(x − x2 )
45 11 1 1 1 1
= + (x + ) − 2(x + )(x − 0) + 3(x + )(x − 0)(x − )
8 4 2 2 2 2
= 3x3 − 2x2 + x + 7

L’utilisation de la formule régressive mène au même résultat :

−1/2 45/8
11/4
0 7 −2
3/4 3
1/2 59/8 5/2
13/4
1 9

Le polynôme d’interpolation de Newton pour f est :

P3 (x) = f (x3 ) + f [x3 , x2 ](x − x3 ) + f [x3 , x2 , x1 ](x − x3 )(x − x2 )


+ f [x3 , x2 , x1 , x0 ](x − x3 )(x − x2 )(x − x1 )
13 5 1 1
= 9 + (x − 1) + (x − 1)(x − ) + 3(x − 1)(x − )(x − 0)
4 2 2 2
= 3x3 − 2x2 + x + 7

La fonction MATLAB qui calcule les différences divisées d’une fonction f (x)
connue en n points (l’ordre des point n’est pas important) est donnée par le
programme suivant
Interpolation et approximation Polynômiales

function D=difdiv(X,Y)
% Cette fonction MATLAB pour calculer la table
des
% différences divisées d’une fonction f
% n: est le nombre de points
% X: vecteur des abscisses; vecteur colonne
% y: vecteur de coordonnées y=f(x)
n=length(X);
D=zeros(n,n);
D(1:n,1)=Y;

for k=2:n
for h=1:(n-k+1)
D(h,k)=(D(h+1,k-1)-D(h,k-1))/(X(h+k-1)-X(h));
end
end

On applique cette fonction pour :


» X=[0 0.2 0.4 0.6]’;Y=[1.0000 1.2214 1.4918
1.8221]
» D=difdiv(x,y)
D =
1.0000 1.1070 0.6127 0.2261
1.2214 1.3521 0.7484 0
1.4918 1.6515 0 0
1.8221 0 0 0

Pour retrouver la table standard on doit ajouter X comme première colonne et


décaler les colonnes de 2 − 4 verticalement vers le bas.
0 1.0000
1.1070
0.2 1.2214 0.6127
1.3521 0.2261
0.4 1.4918 0.7484
1.6515
0.6 1.8221
Méthodes Numériques

Evaluons la valeur de f (0.5) de l’exemple précédent en utilisant (III.14)


% Interpolation par la formule de Newton des
% différences divisées progressives
clc;clear all
X=input(’donner le vecteur ligne X=’)
Y=input(’donner le vecteur ligne Y=’)
% Appel de la fonction difdiv. Les vecteurs X,Y
sont
% transformés en vecteurs colonnes

D=difdiv(X’,Y’);
m=length(X);
Pr=zeros(m-1,1);% vecteur colonne de longueur
m-1.
Pr(1)=(x-X(1)); % initialisation du produit Pr
for s=2:m-1
Pr(s)=Pr(s-1)*(x-X(s));
end
% Calcul de la valeur du polynôme d’interpolation
Pn=0;
for h=1:m-1
Pn=Pn+D(1,h+1)*Pr(h);
end
Pn=D(1,1)+Pn

On trouve P3 (0.5) = 1.6488

III.3.1 Cas particulier de points équidistants


Une situation intéressante se présente lorsque les points sont régulièrement
espacés : xk = x0 + k × h, h étant le pas d’interpolation constant. Dans ce cas,
au lieu d’exprimer le polynôme d’interpolation de Newton en utilisant les
différences divisées, on préfère les différences finies définies à l’ordre 1 par :
Interpolation et approximation Polynômiales

• DFs Progressives : ∆ f (xk ) = ∆ fk = f (xk+1 ) − f (xk )


• DFs Régressives : ∇ f (xk+1 ) = ∇ fk+1 = f (xk+1 ) − f (xk )
• DFs Centrées : δ f (xk+ 1 ) = δ fk+ 1 = f (xk+1 ) − f (xk )
2 2

Les différences finies jouent un rôle primordiale dans le calcul numérique,


elles sont utilisées par exemple pour approcher la dérivée d’une fonction f (x)
en un point xk :
f (xk+1 ) − f (xk )
f 0 (xk ) = lim (III.17)
∆x→0 ∆x
Pour un ∆x = xk+1 − xk = h suffisamment petit, on peut écrire pour les diffé-
rences finies progressives :
f (xk+1 ) − f (xk ) ∆ f (xk )
f 0 (xk ) = + O(h) ≈ (III.18)
h h
et pour les différences finies régressives,
f (xk ) − f (xk−1 ) ∇ f (xk )
f 0 (xk ) = + O(h) ≈ (III.19)
h h
L’avantage des différences divisées centrées est qu’elles donnent une meilleure
précision :
f (xk+1 ) − f (xk−1 ) δ f (xk )
f 0 (xk ) = + O(h2 ) ≈ (III.20)
h h
Il est clair que l’approximation de la dérivée par les DFs est d’autant meilleure
que le pas h est petit, mais cela dépend aussi de l’expression de la fonction f .

III.3.1.1 Les Différences Finies (DFs) progressives :


f (xk+1 )− f (xk ) ∆ f (xk )
• f [xk , xk+1 ] = (xk+1 −xk ) = h
∆ f (xk+1 ) ∆ f (xk )
f [xk+1 ,xk+2 ]− f [xk ,xk+1 ] − h ∆2 f (xk )
• f [xk , xk+1 , xk+2 ] = (xk+2 −xk ) = h
2h = 2h2
∆2 f (xk+1 ) ∆2 f (xk )
f [xk+1 ,...,xk+3 ]− f [xk ,...,xk+2 ] − ∆3 f (xk )
2h2 2h2
• f [xk , ..., xk+3 ] = (xk+3 −xk ) = 3h = 2×3h3
f [xk+1 ,...,xk+n ]− f [xk ,xk−n+1 ] ∆n f (xk )
• f [xk , ..., xk+n ] = (xk+n −xk ) = n!hn
Méthodes Numériques

De façon générale la relation entre les différences divisées et les différences


finies progressives est la suivante :

∆n f (x0 )
f [xo , x1 , . . . , xn ] = (III.21)
n!hn
Le polynôme d’interpolation de Newton s’écrit en un point x = xo + p × h où
p est un réel positif :
x − x0 (x − xo )(x − x1 ) 2
Pn (x) = f (x0 ) + ∆ f (x0 ) + ∆ f (x0 ) + . . .
1!h 2!h2
(x − xo )(x − x1 ) . . . (x − xn−1 ) n
+ ∆ f (x0 ) (III.22)
n!hn
p(p − 1) 2
Pn (x) = f (x0 ) + p∆ f (x0 ) + ∆ f (x0 ) + . . .
2!
p(p − 1)(p − 2) . . . (p − (n − 1)) n
+ ∆ f (x0 ) (III.23)
n!
Exemple : Construire la table des différences finies progressives de la fonction
définie par le tableau suivant :

x 0.1 0.2 0.3 0.4 0.5


f(x) 1.11 1.25 1.43 1.65 1.94

On suit la même démarche récursive utilisée pour la table des différences


divisées sauf qu’on ne divise pas la différence.

k xk ∆o f ∆1 f ∆2 f ∆3 f ∆4 f
0 0.1 1.11
0.14
1 0.2 1.25 0.04
0.18 0
2 0.3 1.43 0.04 0.01
0.22 0.01
3 0.4 1.65 0.05
0.29
4 0.5 1.94

Ainsi : ∆o f (x0 ) = 1.11, ∆1 f (x0 ) = 0.14, ∆2 f (x0 ) = 0.04, ∆3 f (x0 ) = 0 et


∆4 f (x0 ) = 0.01
Interpolation et approximation Polynômiales

III.3.1.2 Les Différences Finies (DFs) régressives :


f (xk+n−1 )− f (xk+n ) f (xk+n )− f (xk+n−1 ) ∇ f (xk+n )
• f [xk+n , xk+n−1 ] = (xk+n−1 −xk+n ) =− −h = h
∇ f (xk+n−1 ) ∇ f (xk+n )
f [xk+n−1 , xk+n−2 ]− f [xk+n , xk+n−1 ] −
• f [xk+n , ..., xk+n−2 ] = (xk+n −xk+n−2 ) = h
−2h
h
=
∇2 f (xk+n )
2h2
∇2 f (xk+n+1 ) ∇2 f (xk+n )
f [xk+n+1 ,...,xk+n−3 ]− f [xk+n ,...,xk+n−2 ] −
2h2 2h2
• f [xk+n , ..., xk+n−3 ] = (xk+n−3 −xk+n ) = −3h =
∇3 f (xk+n )
2×3h3
f [xk+n−1 ,...,xk ]− f [xk+n ,xk−1 ] ∇n f (xk+n )
• f [xk+n , ..., xk ] = (xk −xk+n ) = n!hn

De façon générale la relation entre les différences divisées et les différences


finies régressives est la suivante :

∇n f (xn )
f [xn , xn−1 , . . . , x0 ] = (III.24)
n!hn

En un point x = xn + p × h, le polynôme d’interpolation de Newton s’écrit :

x − xn (x − xn )(x − xn−1 ) 2
Pn (x) = f (xn ) + ∇ f (xn ) + ∇ f (xn ) + . . .
1!h 2!h2
(x − xn )(x − xn−1 ) . . . (x − x1 ) n
+ ∇ f (xn ) (III.25)
n!hn
p(p + 1) 2
Pn (x) = f (xn ) + p∇ f (xn ) + ∇ f (xn ) + . . .
2!
p(p + 1)(p + 2) . . . (p + (n − 1)) n
+ ∇ f (xn ) (III.26)
n!
Exemple : La table ci-dessous représente les termes consécutifs d’une série
Sn donnés par les valeurs :

n 3 4 5 6 7 8 9
Sn 4.8 8.4 14.5 23.6 36.2 52.8 73.9

Déterminer les Différences finies régressives au septième point. La table des


DF régressive est la suivante
Méthodes Numériques

k xk ∇o f ∇1 f ∇2 f ∇3 f ∇4 f ∇5 f ∇6 f
6 9 73.9
21.1
5 8 52.8 4.5
16.6 0.5
4 7 36.2 4 0
12.6 0.5 0
3 6 23.6 3.5 0 0
9.1 0.5 0
2 5 14.5 3 0
6.1 0.5
1 4 8.4 2.5
3.6
0 3 4.8

Ainsi :
∇o f (x6 ) = 73.9, ∇1 f (x6 ) = 21.1, ∇2 f (x6 ) = 4.5, ∇3 f (x6 ) = 0.5 et
∇4 f (x6 ) = 0,∇5 f (x6 ) = 0,∇6 f (x6 ) = 0.
En remarquant que : f [xk+n , xk+n−1 ] = f [xk+n−1 , xk+n ] et d’une manière
générale f [xn , xn−1 , . . . , x0 ] = f [x0 , x1 , . . . , xn ] on déduit que :
∇n f (xn ) ∆n f (x0 )
n!hn = n!hn . Ce qui offre la possibilité de calculer les différences finies
régressives à partir de la table des différences finies progressives :

k xk ∆o f ∆1 f ∆2 f ∆3 f ∆4 f ∆5 f ∆6 f
0 3 4.8
3.6
1 4 8.4 2.5
6.1 0.5
2 5 14.5 3 0
9.1 0.5 0
3 6 23.6 3.5 0 0
12.6 0.5 0
4 7 36.2 4 0
16.6 0.5
5 8 52.8 4.5
21.1
6 9 73.9
Interpolation et approximation Polynômiales

III.3.1.3 Les Différences Finies Centrées :


Utilisées lorsqu’on dispose d’un nombre impaire (2n+1) points centrés au-
tour de x0 et distants d’un pas régulier h :x−n , x−n+1 , ..., x−1 , x0 , x1 , ..., xn−1 , xn :
δ f (x−n+ 1 )
f (x−n+1 )− f (x−n ) ∆ f (x−n )
• f [x−n , x−n+1 ] = (x−n+1 −x−n ) = h
2
= h
δ f (x ) δ f (x )
−n+ 32 −n+ 21
f [x−n+1 ,x−n+2 ]− f [x−n ,x−n+1 ] −
• f [x−n , x−n+1 , x−n+2 ] = (x−n+2 −x−n ) = h
2h
h
=
δ 2 f (x−n+1 ) ∆2 f (x−n )
2h2
= 2h2
δ 2 f (x−n+2 ) δ 2 f (x−n+1 )
f [x−n+1 ,...,x−n+3 ]− f [x−n ,...,x−n+2 ] −
2h2 2h2
• f [x−n , ..., x−n+3 ] = (x−n+3 −x−n ) = 3h =
δ 3 f (x−n+ 3 )
∆3 f (x−n )
2×3h3
2
= 3!h3
δ n f (x−n+ n ) δ n f (x −n ) n f (x )
f [x−n+1 ,...,x0 ]− f [x−n ,...,x−1 ]
• f [x−n , ..., x0 ] = (x0 −x−n ) = n!hn
2
= n!hn
2
=∆ n!hn
−n

δ n+1 f (x (n+1) )
f [x−n+1 ,...,x1 ]− f [x−n ,...,x0 ] −n+ 2
• f [x−n , ..., x0 , x1 ] = (x1 −x−n ) = (n+1)!hn+1
f [x−n+1 ,xn ]− f [x−n ,...,xn−1 ] 2n
f (x0 ) ∆ f (x−n ) 2n
• f [x−n , x−n+1 , ..., x0 , ..., xn−1 xn ] = (xn −x−n ) = δ2n!h 2n = 2n!h2n

Dans la table suivante nous montrons les différences finies progressives et


centrées sur un ensemble de (2n + 1 = 7) points (xk , f (xk )) :

k xk ∆o f ∆1 f ∆2 f ∆3 f ∆4 f ∆5 f ∆6 f
-3 3 f (x−3 )
∆ f (x−3 ) = δ f (x −5 )
2
-2 4 f (x−2 ) ∆2 f (x−3 ) = δ 2 f (x−2 )
∆ f (x−2 ) = δ f (x −3 ) ∆3 f (x−3 ) = δ 3 f (x −3 )
2 2
-1 5 f (x−1 ) ∆2 f (x−2 ) = δ 2 f (x−1 ) ∆4 f (x−3 ) = δ 3 f (x−1 )
∆ f (x−1 ) = δ f (x −1 ) ∆3 f (x−2 ) = δ 3 f (x −1 ) .
2 2
0 6 f (x0 ) ∆2 f (x−1 ) = δ 2 f (x0 ) ∆4 f (x−2 ) = δ 4 f (x0 ) .
∆ f (x0 ) = δ f (x 1 ) ∆3 f (x−1 ) = δ 3 f (x 1 ) .
2 2
1+ 7 f (x1 ) ∆2 f (x0 ) = δ 2 f (x1 ) ∆4 f (x−1 ) = δ 3 f (x1 )
∆ f (x1 ) = δ f (x 3 ) ∆3 f (x0 ) = δ 3 f (x 3 )
2 2
2+ 8 f (x2 ) ∆2 f (x1 ) = δ 2 f (x2 )
∆ f (x2 ) = δ f (x 5 )
2
3+ 9 f (x3 )

En un point x = x0 + p × h, le polynôme d’interpolation de Newton s’écrit en


fonction des DFs progressives :

p(p − 1) 2 p(p − 1)(p − 2) 3


Pn (x) = f (x0 ) + p∆ f (x0 ) + ∆ f (x0 ) + ∆ f (x0 ) + . . .
2! 3!
Méthodes Numériques

D’après la table :
∆ f (x0 ) − ∆ f (x−1 ) = ∆2 f (x−1 ) ⇒ ∆ f (x0 ) = ∆ f (x−1 ) − ∆2 f (x−1 )
De même : ∆2 f (x0 ) = ∆2 f (x−1 ) − ∆3 f (x−1 )
et ∆3 f (x0 ) = ∆3 f (x−1 ) − ∆4 f (x−1 )
D’autre part :
∆3 f (x−1 ) − ∆3 f (x−2 ) = ∆4 f (x−2 ) ⇒ ∆3 f (x−1 ) = ∆3 f (x−2 ) − ∆4 f (x−2 )
De même : ∆4 f (x−1 ) = ∆4 f (x−2 ) + ∆5 f (x−2 )
et ∆3 f (x0 ) = ∆3 f (x−1 ) − ∆4 f (x−1 )
En remplaçant dans le polynôme d’interpolation de Newton, on obtient :

Pn (x) = f (x0 ) + p[∆ f (x−1 ) + ∆2 f (x−1 )]


p(p − 1) 2
+ [∆ f (x−1 ) + ∆3 f (x−1 )]
2!
p(p − 1)(p − 2) 4
+ [∆ f (x−1 ) + ∆5 f (x−1 )] + . . .
3!
Ce qui donne après simplification :

p(p + 1) 2
Pn (x) = f (x0 ) + p∆ f (x−1 ) + ∆ f (x−1 )
2!
(p + 1)p(p − 1) 3 (p + 2)(p + 1)p(p − 1) 4
+ ∆ f (x−2 ) + ∆ f (x−2 ) . . .
3! 3!
C’est la formule de Gauss régressive. En fonction des DFs centrées, elle
s’écrit :
(p + 1)p 2 (p + 1)p(p − 1) 3
Pn (x) = f (x0 ) + pδ f (x −1 ) + δ f (x0 ) + δ f (x −1 )
2 2! 3! 2

(p + 2)(p + 1)p(p − 1) 4 (p + 2)(p + 1)p(p − 1)(p − 2) 5


+ δ f (x0 ) δ f (x− 1 ) + . .
4! 5! 2

En écrivant le polynôme d’interpolation de Newton en fonction des DFs


progressives en un point x = x0 + p × h et en suivant les mêmes étapes, on écrit
la formule de Gauss progressive :

p(p − 1) 2 (p + 1)p(p − 1) 3
Pn (x) = f (x0 ) + pδ f (x 1 ) + δ f (x0 ) + δ f (x 1 )
2 2! 3! 2

(p + 1)p(p − 1)(p − 2) 4 (p + 2)(p + 1)p(p − 1)(p − 2) 5


+ δ f (x0 ) + δ f (x 1 ) . . .
4! 5! 2
Interpolation et approximation Polynômiales

Remarque : La relation entre p et x étant :

x − x0
x = x0 + p × h ⇒ p =
h
x − x0 x − x0 + h x − (x0 − h) x − x−1
⇒ p+1 = +1 = = =
h h h h
x − x0 x − x0 − h x − (x0 + h) x − x1
⇒ p−1 = −1 = = =
h h h h
x − x0 x − x0 + 2h x − (x0 − 2h) x − x−2
⇒ p+2 = +2 = = =
h h h h
x − x0 x − x0 − 2h x − (x0 + 2h) x − x2
⇒ p−2 = −2 = = =
h h h h
on peut exprimer les deux formules de Gauss progressive et régressive en
fonction de x et des abscisses xk :

• Gauss progressive :

(x − x0 (x − x0 )(x − x1 ) 2
Pn (x) = f (x0 ) + )δ f (x −1 ) + δ f (x0 )
h 2 2h2 !
(x − x0 )(x − x1 )(x − x−1 ) 3
+ δ f (x −1 )
3!h3 2

(x − x0 )(x − x1 )(x − x−1 )(x − x2 ) 4


+ δ f (x0 )
4!h4
(x − x0 )(x − x1 )(x − x−1 )(x − x2 )(x − x−2 ) 5
+ δ f (x− 1 ) + . . .
5!h5 2

• Gauss régressive :

(x − x0 ) (x − x0 )(x − x−1 ) 2
Pn (x) = f (x0 ) + δ f (x 1 ) + δ f (x0 )
h 2 2h2 !
(x − x0 )(x − x−1 )(x − x1 ) 3
+ δ f (x 1 )
3!h3 2

(x − x0 )(x − x−1 )(x − x1 )(x − x−2 ) 4


+ δ f (x0 )
4!h4
(x − x0 )(x − x−1 )(x − x1 )(x − x−2 )(x − x2 ) 5
+ δ f (x− 1 ) + . . .
5!h5 2
Méthodes Numériques

Exemple : évaluer la fonction définie par le tableau suivant en x = 0.35 :


x 0.1 0.2 0.3 0.4 0.5
f(x) 1.11 1.25 1.43 1.65 1.94
La table des DFs centrées autour de x0 = 0.3 de la fonction est la suivante :

k xk ∆o f ∆1 f ∆2 f ∆3 f ∆4 f
-2 0.1 1.11
0.14
-1 0.2 1.25 0.04
δ f (x− 1 ) = 0.18 δ 3 f (x− 1 ) = 0
2 2
0 0.3 1.43 δ 2 f (x0 ) = 0.04 δ 4 f (x0 ) = 0.03
δ f (x 1 ) = 0.22 δ 3 f (x 1 ) = 0.03
2 2
+1 0.4 1.65 0.07
0.29
+2 0.5 1.94

Nous avons : x = x0 + p × h ⇒ p = x−x


h =
0 0.35−0.30
0.1 = 0.5
Par la formule de Gauss progressive :

p(p − 1) 2
Pn (x) = f (x0 ) + pδ f (x 1 ) + δ f (x0 )
2 2!
p(p − 1)(p + 1) 3 (p − 2)(p − 1)p(p + 1) 4
+ δ f (x 1 ) + δ f (x0 ) . . .
3! 2 4!
Les coefficients des DFs Centrées sont respectivement : 0.22, 0.04, 0.03, 0.03
A.N : Pn (0.35) = f (0.3) + 0.5 × 0.22 + 0.5×(0.5−1)
2 × 0.04 + 0.5(0.5−1)(0.5+1)
6 ×
0.5(0.5−1)(0.5+1)(0.5−2)
0.03 + 24 × 0.03 = 1.53
Par la formule de Gauss régressive :

(p + 1)p 2
Pn (x) = f (x0 ) + pδ f (x −1 ) + δ f (x0 )
2 2!
(p + 1)p(p − 1) 3 (p + 2)(p + 1)p(p − 1) 4
+ δ f (x −1 ) + δ f (x0 ) . . .
3! 2 4!
Les coefficients des DFs Centrées sont respectivement :0.18, 0.04, 0, 0.03 A.N :
Pn (0.35) = f (0.3) + 0.5 × 0.18 + 0.5×(0.5+1)
2 × 0.04 + 0.5(0.5+1)(0.5−1)
6 ×0+
0.5(0.5+1)(0.5−1)(0.5+2)
24 × 0.03 = 1.53
Interpolation et approximation Polynômiales

III.4 Position du problème de l’approximation

Lors d’une expérience de Physique, on relève les données d’un paramètre y


en fonction d’une variable x. Dans cet exemple, la variation de la différence de
potentiel V entre les bornes d’une résistance en fonction du courant électrique
I qui la traverse est tracée. La loi de comportement d’une résistance est bien
connue (V = RI) en Physique, c’est la loi d’Ohm. Toutefois, l’expérience donne
un ensemble de points qui n’appartiennent pas tous à la même droite à cause
des erreurs de mesure et des conditions réelles (non idéales) de l’expérience
comme le montre la figure Fig.III.2 suivante.

F IGURE III.2 – Mesure de V=f(I) aux bornes d’une résistance.

Maintenant, on cherche à trouver une valeur Vr correspondant à un point Ir


appartenant au domaine [Vi , V f ] (les indices i et f se réfèrent aux valeurs initiale
et finale) mais l’expérience n’est plus à portée de main. L’approximation
polynomiale nous permettra de représenter le comportement de la résistance
par une droite (polynôme de degrés n=1) qui passe aussi prés que possible
de l’ensemble des points relevés (Vk , Ik = f (Vk )), k = 0, ..., n. Par ”aussi prés
que possible” on entends un critère assurant une bonne approximation.
Méthodes Numériques

III.5 Approximation au sens des moindres carrées


III.5.1 Régression linéaire
Etant donné que chaque deux points sont suffisants pour définir une droite
(polynôme d’ordre n=1) et que l’ensemble des points de mesure n’appar-
tiennent pas tous à la même droite, la question de savoir qu’elle est la droite
qui peut représenter un ensemble de points (xk , yk = f (xk ))k=1:n et qui consti-
tue la meilleure approximation de la fonction recherchée Y = f (x) se pose.
L’erreur e en chaque point de la droite d’approximation des points de mesure
yk = f (xk )k=1:n , est donnée par l’écart : ek = Yk − yk k = 1 : n.
Compte tenu de la forme vectorielle de l’équation : e = Y − y , nous utiliserons
une norme (au lieu de l’erreur) pour décrire cet écart. Nous choisissons la
norme 2 euclidienne :
s
n
kEk2 = ∑ e2k (III.27)
k=1
Minimiser cette norme représente une approximation au sens des moindres
carrées. Ça revient à faire ce qu’on appelle un fit de l’ensemble des points
(xk , yk )k=1:n . Pour le cas linéaire, l’approximation au sens des moindres car-
rées est aussi connue sous le nom de régression linéaire.
Cherchons à présent la droite Y = a + b x qui représente la meilleure approxi-
mation linéaire. L’erreur dans ce cas se calcule comme : ek = yk − axk − b,
avec k = 1 : n et le carré de la norme 2 est :
n
E(a, b) = kEk22 = ∑ [yk − axk − b]2 (III.28)
k=1
Comme a et b sont quelconques, la meilleure approximation est celle qui
minimise E par rapport à a et b. On obtient le système,
∂ E(a, b)
= 0 =⇒ ∑nk=1 2(yk − a − bxk )(−xk ) = 0 (III.29)
∂a
∂ E(a, b)
= 0 =⇒ ∑nk=1 2(yk − a − bxk )(−1) = 0
∂b
qui peut s’écrire sous la forme :
 n    n
∑k=1 xk ∑nk=1 x2

a ∑k=1 xk yk
   =   (III.30)
n n
n ∑k=1 xk b ∑k=1 yk
Interpolation et approximation Polynômiales

La résolution du système (III.31) permet de trouver a et b.


Exemple : Cherchons la meilleure droite qui passe par les points :

x 0.00 +0.1 +0.2 +0.3 +0.4 +0.5 +0.6 +0.7


y = f (x) −1.1 −0.91 −0.8 −0.73 −0.61 −0.5 −0.44 −0.31

En appliquant le critère de minimisation au sens des moindres carrées, on écrit


sous forme matricielle :
 n    n
∑k=1 xk ∑nk=1 x2

a ∑k=1 xk yk
   =   (III.31)
n n
n ∑k=1 xk b ∑k=1 yk
Le calcul de chaque terme donne :
n n n n
∑ xk = 2.80 , ∑ x2 = 1.40 , ∑ yk = −5.40 , ∑ xk yk = −1.44. (III.32)
k=1 k=1 k=1 k=1

On obtient donc un système de deux équations à deux inconnues qui donne


après résolution :

2.80a + 1.40b = −1.44 ⇒ a =
(III.33)
8a + 2.80b = −5.40 ⇒b=
Ce qui permet d’écrire l’équation de la droite : y = 1.0595x − 1.0458.
Sous Matlab, le code suivant permet de faire ce calcul :
»% Introduisons le vecteur x,Y
» x=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7];
» Y=[-1.1 -0.91 -0.8 -0.73 -0.61 -0.5 -0.44
-0.31];
»% Les élements de la matrice
» M=[length(x) sum(x);sum(x) sum(x.∧ 2)]
M =
8.0000 2.8000
2.8000 1.4000
»
» T=[sum(Y) sum(x.*Y)]’
T =
-5.4000
-1.4450
Méthodes Numériques

» A=inv(M)*T
A =
-1.0458
1.0595

III.5.2 Cas continu


La méthode des moindres carrées peut être appliquée pour approcher une
fonction dont l’expression analytique est connue au préalable, les coefficients
du polynôme d’approximation peuvent être calculés en écrivant la condition
de minimisation de E(a, b) par rapport aux coefficients (a, b).
Z b
E(a, b) = [ f (x) − a − bx]2 dx (III.34)
a

Après minimisation

∂ E(a, b) b Z
= −2x[ f (x) − a − ax]dx = 0
∂a a
Z b
∂ E(a, b)
= −2[ f (x) − a − bx]dx = 0 (III.35)
∂b a

Déterminer a et b revient donc à résoudre le système des équations normales


Rb Rb 2 !  Rb !
xdx a x dx a x f (x)dx
Rab Rb = Rab (III.36)
a dx a xdx
b a f (x)dx

L’équation (III.34) aurait pu être obtenue à partir de l’équation


R
(III.31) en
utilisant la définition de l’intégrale au sens de Riemann : ∑ → .
Exemple : On veut approximer la fonction f (x) = ex par une droite dans
l’intervalle [0, 1].
Réponse : Le système à résoudre :
 R1 R1 2    R 1 x 
xdx x dx a xe dx
R01 0
R1 = R01 x
0 dx 0 xdx b 0 e dx
Interpolation et approximation Polynômiales

qui aboutit à :
    
1 1/2 a e−1
=
1/2 1/3 b 1

On trouve alors a = 0.8731 et b = 1.6903 ce qui donne y = 0.8731x + 1.6903.

III.5.3 Généralisation
D’une manière plus générale, une fonction f , connue uniquement en n
valeurs discrètes, peut être approximée par un polynôme de degré m ≤ n dans
la base canonique 1, x, x2 , ..., xn de l’ensemble des polynômes à coefficients
réels Pn : Pm (x) = a0 + a1 x + a2 x2 + ... + am xm .
Pour un ensemble de points (xi , yi = f (xi ))i=1:n , le polynôme Pm (x) qui réalise
la meilleure approximation au sens des moindres carrés des valeurs yi aux
points xi est celle qui minimise la somme des carrés des écarts entre les
yi = f (xi ) et les yi = Pm (xi ) soit :
n
E(a0 , a1 , ..., am ) = ∑ [yk − a0 − a1xk − ... − amxkm]2 (III.37)
k=1

L’écriture de la condition de minimisation au SDC par rapport à tous les


coefficients ai , i = 0 : n conduit au système de n équations à n inconnues ai
suivant :
m n n
(i+ j)
∑ (ai . ∑ xk )= ∑ f (xk ) . xkj , j = 0, 1, ..., m
i=0 k=1 k=1

Sous forme matricielle, on écrit :


 n
∑nk=1 xm+1 . . . ∑nk=1 x2m ∑nk=1 xkm yk
   
∑k=1 xkm a0
 ∑n xm−1 ∑n xm . . . ∑nk=1 x2m−1  a1   ∑nk=1 xkm−1 yk 
 k=1 k k=1
..
   
 .. .. .. .. ..
=
   
 .
 n . . .  .   n . 
n
 ∑k=1 xk2 3
∑nk=1 xm+1
 
∑k=1 x . . .   am−1   ∑k=1 xk yk 
n ∑nk=1 xk . . . ∑nk=1 xm am ∑nk=1 yk
Chapitre IV

Intégration Numériques

P OUR traiter un phénomène à grande échelle, ce qui représente une situation


complexe, souvent on passe par la situation la plus simple possible qui fera
intervenir une variable élémentaire (longueur élémentaire dl, surface élémen-
taire ds, volume élémentaire dv, masse élémentaire dm , charge élémentaire dq,
...etc). Les expressions ainsi obtenues sont par la suite intégrées par rapport à
la variable infinitésimale, d’où l’importance que revêt le calcul intégral comme
outil scientifique. En pratique, les fonctions à intégrer sont trop compliquées
ou pas assez connues pour leur trouver une primitive. Dans d’autres situations,
la primitive n’existe pas car la fonction à intégrer n’est connue qu’en quelques
points.
En alternative, les méthodes numériques d’intégration permettent de calculer
de façon approchée ces intégrales. Toutes ces méthodes ont en commun l’uti-
lisation des résultats de l’interpolation (approximation) polynomiale : elles
consistent à remplacer la fonction à intégrer par un polynôme d’interpolation
(approximation) d’un certain degré.
Méthodes Numériques

IV.1 Position du problème


• Dans l’objectif d’analyser les différentes phases de la course menée par
le détenteur du record du monde du 100 mètres, nous disposons d’un
tableau qui donne les valeurs de la vitesse vk du coureur à différents
instants tk et nous cherchons sa position aux instants tk . Ceci revient à
calculer l’intégrale de la vitesse par rapport au temps.

t(s) 0.00 0,95 2,39 3,33 4,21 5,06 5,88 6,70


v(m/s) 0,00 5,29 10,10 11,11 11,63 12,05 12,20 12,35
• En thermodynamique statistique, le calcul de la capacité calorifique d’un
solide par le modèle de Debye fait apparaître une intégrale analytique-
3
ment inaccessible : I = 0x exx−1 dx . On fait alors appel à l’intégration
R

x3
numérique de la fonction f (x) = ex −1 dans le domaine [a, b] ≡ [0, x].
L’idée de base est de :
1. discrétiser le domaine [a, b] en un nombre (n + 1) de points xk , k = 0 : n
avec x0 = a et xn = b.
2. Remplacer la fonction f par un polynôme d’ordre m (fonction plus
simple à intégrer) sur un sous intervalle Sk de [a, b] contenant (m +
1) points d’interpolation, m ≤ n
3. L’intégrale ∆Ik de la nouvelle fonction dans le keme sous intervalle consi-
déré constitue une valeur approchée de l’intégrale de f dans cet inter-
valle.
4. Appliquer les étapes précédentes sur tous les M sous intervalles Sk , k =
0 : M constituant [a, b]. La somme ∑M k=1 ∆Ik , k = 1 : M est une approxi-
mation de I.
L’étape 2 fait appel aux méthodes d’interpolation et d’approximation dé-
veloppées au chapitre précédent.

IV.2 Méthode directe


La fonction à intégrer est approchée par un polynôme d’interpolation
(approximation) d’ordre m issu de la méthode d’interpolation directe :
f (x) ≈ Pm (x) = a0 + a1 x + ... + an xm , m ≤ n (IV.1)
Intégration Numériques

Le polynôme Pm (x) est en suite intégré pour donner une valeur approchée de
l’intégrale recherchée :
Z xk+m Z xk+m Z xk+m
∆Ii = f (x)dx ≈ Pm (x)dx ≈ (a0 + a1 x + ... + am xm )dx
xk xk xk
x
≈ [a0 x + a1 x2 + ... + am xm+1 ]xk+m
k

Les coefficients ai sont déterminé par l’une des méthodes suivantes :


• En se donnant un ensemble de (m + 1) valeurs (xk , f (xk )), k = 0 : m, on
cherche le polynôme d’ordre m qui passe par tout les points. Ceci passe
par la résolution du système de Vandermonde.
• En se donnant un ensemble de (m + 1) valeurs (xk , f (xk )), k = 0 : m, on
détermine le polynôme de meilleure approximation au sens des moindres
carrés d’ordre m.
• Connaissant la fonction à intégrer, évaluer celle-ci en (m + 1) points et
déterminer le polynôme d’interpolation(approximation) d’ordre m par la
première(deuxième méthode).
Exemple : Calculer l’intégrale donnée par la fonction er f (x) en x = 1 :
2
I(x) = erf(x) = 0x e−t dt.
R

Réponse :
Il s’agit d’intégrer une fonction continue dont la primitive ne peut pas être
2
déterminée analytiquement. Calcul numérique de l’intégrale I(1) = 01 e−t dt :
R

1. discrétisation de l’intervalle [0, 1] en M sous intervalles Sk : choisir


M = 2 par exemple (S1 et S2 ).
2. Remplacer f par un polynôme d’ordre m sur chaque sous inter-
valles : choisir m = 2 par exemple. (P2 (x) = a0 + a1 x + a2 x2 )
3. Evaluer, sur chaque sous intervalle, la fonction en m + 1 = 3 points
xk , k = 0 : m :
k 0 1 2 3 4
x 0 0.2 0.4 0.7 1
f(x) 1 0.96 0.85 0.61 0.37
4. Calculer ∆Ii , i = 1 : M = 2 : Nous sommes amenés à calculer ∆I1 sur
S1 = [0, 0.4] et ∆I2 sur S2 = [0.4, 1].
x
∆Ii ≈ [a0 x + a1 x2 + ... + am xm+1 ]xk+m
k ⇒ ∆I1 ≈ [a0 x + a1 x2 + a2 x3 ]xx20
Méthodes Numériques

Déterminer les coefficients ai du polynôme d’interpolation par la mé-


thode directe :

a0 + a1 x0 + a2 x02 = f (x0 ) ⇒ a0 + a1 .0 + a2 .0 = 1
a0 + a1 x1 + a2 x12 = f (x1 ) ⇒ a0 + a1 (0.2) + a2 (0.2)2 = 0.96
a0 + a1 x2 + a2 x22 = f (x2 ) ⇒ a0 + a1 (0.4) + a2 (0.4)2 = 0.85

On trouve après calcul : (a0 , a1 , a2 ) = (1, −0.08, −0.58).


Il vient que : ∆I1 ≈ [a0 x + a1 x2 + a2 x3 ]xx20 ≈ [a0 x + a1 x2 + a2 x3 ]0.4
0 ≈ 0.35
x
∆Ii ≈ [a0 x + a1 x2 + ... + am xm+1 ]xk+m
k ⇒ ∆I2 ≈ [a0 x + a1 x2 + a2 x3 ]xx42

On refait le même calcul pour l’intervalle S2 = [0.4, 1] :


on trouve ∆I2 ≈ [a0 x + a1 x2 + a2 x3 ]10.4 ≈ 0.47
Finalement : I(1) = ∆I1 + ∆I2 ≈ 0.82

IV.3 Méthodes de Newton-Cotes


La méthode directe nécessite beaucoup d’efforts pour calculer les coef-
ficients du polynôme d’interpolation ai . Lorsque les points d’interpolation
sont régulièrement espacés, on lui préfère la méthode de Newton basée sur les
différences finies progressives qui sont plus simple à calculer. Les formules
d’intégration qui en résultent s’appellent les méthodes de Newton-Cotes. Ce
qui différencie une méthode d’une autre est le degré du polynôme de Newton
choisi pour l’interpolation de f .
En faisant recours à l’interpolation par la méthode de Newton basée sur les
différences finies progressives, le polynôme d’interpolation d’ordre n à pour
expression :
(x − xo ) (x − xo )(x − x1 ) 2
Pn (x) = f (x0 ) + ∆( f ) + ∆ ( f )+...
h 2!h2
(x − xo )(x − x1 )(x − x2 ) . . . (x − xn−1 ) n
+ ∆ (f) (IV.2)
n!hn
En un point x = x0 + p × h , p est un réel quelconque et h est le pas de
discrétisation, on peut écrire :

Pn (p) = fo + p∆ f + p(p−1) 2
2 ∆ f + ... +
p(p−1)...(p−n) n
n! ∆ f (IV.3)
Intégration Numériques


x =x0 ⇒p =0
Il s’en suit qu’en intégrant entre xk = x0 et xk+m = x, on a :
x=x ⇒p=p
Comme :dx=h
Z xk +mdp, alors : Z xk +m Z p
∆Ik (x) = f (x)dx ≈ Pn (x)dx ≈ h Pn (p)d p
xk xk 0

IV.3.1 Formule des trapèzes


La formule des trapèzes s’obtient en utilisant un polynôme d’ordre 1 (une
droite) pour approcher la courbe de la fonction à interpoler, ce qui définit n
sous intervalles contenant deux noeuds xk et xk+1 chacun. La borne supérieure
x −x
de l’intégrale IV.4 correspond donc à x0 = xk , x = xk+1 → p = k+1h k = 1.
L’intégrale ∆Ik de f sur un sous intervalle Sk = [xk+1 , xk ] est donc :
Z 1 Z 1
∆Ik (x) ≈ h P1 (p)d p ≈ h ( fo + p∆( f )) d p
0 0
1
≈ h[ fo .p + p2 ∆( f )]10 avec ∆( f ) = f (xk + 1) − f (xk )
2
1
≈ h[ f (xk ) + ( f (xk + 1) − f (xk ))]
2
h
≈ [ f (xk ) + f (xk + 1)] : Formule des trapèzes
2
Sur l’intervalle [a, b] l’intégrale est
Z b
I = f (x)dx
a
= ∆I1 + ∆I2 + ..........∆Ik + ......∆In

h h h
I = ( f (a) + f (x1 )) + ( f (x1 ) + f (x2 )) + . . . ( f (xk+1 ) + f (xk ))
2 2 2
h
+ . . . ( f (xn−1 ) + f (b))
2
( )
n−1
h
I= f (a) + f (b) + 2 ∑ f (xk ) (IV.4)
2 k=1

C’est la formule des trapèzes généralisée.


Méthodes Numériques

IV.3.1.1 Interprétation géométrique :


2
Raisonnons sur la fonction f (x) = e−x dans le domaine [a, b] = [−1, 1].
Son intégrale s’obtient graphiquement en calculant l’aire sous la courbe de
f (x) (Fig.IV.1). Pour rendre le calcul d’aire possible, divisons l’intervalle [a, b]
en un ensemble de petits intervalles [xk , xk+1 ] de longueur h et remplaçons
la corde reliant les points (xk , f (xk )) et (xk+1 , f (xk+1 ) par une droite. Alors,
l’aire hachurée correspond à un trapèze dont la surface est :(le rectangle + la
moitié du triangle)
R xk+1 (xk+1 − xk )( f (xk+1 ) − f (xk ))
I= xk f (x)dx = (xk+1 − xk ) f (xk ) +
2
h
≈ [ f (xk+1 ) + f (xk )] (IV.5)
2
Il est clair que le résultat est d’autant plus précis que h est petit.
1
f(xk+1)
1
f(x)
0.9
0.9
P1(x)

f(x)=exp(−x2) 0.8
0.8

0.7 f(x )
h k

0.6
0.7
f(x)

0.5
f(x)

0.6 0.4

0.3

0.5
0.2

0.1
0.4

0
xk
xk+1

−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1 −0.6 −0.5 −0.4 −0.3 −0.2 −0.1 0
x x

2
F IGURE IV.1 – Calcul de l’intégrale de la fonction f (x) = e−x par la méthode
des trapèzes (le domaine hachuré est de largeur h = xk+1 − xk ) .

Exemple : Dans le domaine [−0.2, 0] l’intégrale de la fonction f (x) = ex vaut


Z 0
Iexact = ex dx = 0.1813 : valeur exacte
−0.2

Que donne la méthode de Newton-Cotes avec la formule des trapèzes ?


Réponse :
La formule des trapèzes généralisées pour un ensemble de (n + 1) points
Intégration Numériques

(xk , f (xk )) distants d’un pas régulier h appartenant à l’intervalle [a b] :


( )
n−1
h
I= f (a) + f (b) + 2 ∑ f (xk ) (IV.6)
2 k=1

Ici : f (x) = ex , a = −0.2 , b = 0. Si nous divisons l’intervalle [a, b] en


(n + 1) points distants de h, alors le nombre de sous intervalles formés est n.
La relation entre n et h est : n = b−a
h . Calculons I pour deux choix du pas de
discrétisation h :
0.2
• h=0.2 ⇒ n = b−a h = 0.2 = 1 :
h 0.2
I≈ { f (a) + f (b)} ≈ { f (−0.2) + f (0)} ≈ 0.1819 (IV.7)
2 2
On remarque que ∆ = I− Ie = 0.0006 > 0, l’intégrale est surestimée.
0.2
• h=0.05 ⇒ n = b−a h = 0.05 = 4 :
( )
3
h
I≈ f (a) + f (b) + 2 ∑ f (xk )
2 k=1
h
≈ { f (a) + f (b) + 2( f (x1 ) + f (x2 ) + f (x3 ))}
2
Avec : xk = a + k × h, on obtient :
I ≈ 0.05
2 { f (−0.2) + f (0) + 2( f (−0.15) + f (−0.1) + f (−0.05))} ≈ 0.1813
On remarque que ∆ = I− Ie = 0, l’intégrale est exacte à 4cs.

IV.3.2 Formules de Simpson


La méthode consiste à remplacer la fonction f (x) par un polynôme de
degré 2. Il s’agit tout simplement de considérer les 3 points : xk , xk+1 , xk+2 et
de faire une interpolation polynomiale sur l’intervalle [xk , xk+2 ] en utilisant la
méthode de Newton basée sur les DFs progressives. L’intégrale de f (x) sur le
sous intervalle [xk , xk+2 ] peut être approchée numériquement par l’expression
suivante, appelée Simpson 1/3
R h i
∆I1/3 = xxkk+2 f (x)dx ≈ xxkk+2 P2 (x)dx ≈ h 02 fo + p∆ f + p(p−1) (2) f d p
R R
2 ∆
h 3 2
i
≈ h p f (xk ) + 12 p2 ( f (xk+1 ) − f (xk )) + ( 12 p3 − p4 )( f (xk+2 ) − 2 f (xk+1 ) + f (xk ))
h
≈ 3 [ f (xk ) + 4 f (xk+1 ) + f (xk+2 )]
Méthodes Numériques

On peut généraliser la méthode de Simpson sur l’intervalle [a, b] en le divisant


en un nombre impair (2n + 1) points , c’est-à-dire un nombre paire 2n de sous
intervalles :x0 , x1 , ..., x2n .
−xo
Posons xo = a, xn = b, alors h = x2n2n puis appliquons Simpson sur chaque
sous intervalle composé de de trois points [xk , xk+2 ]. On trouve alors l’expres-
sion de la formule de Simpson 1/3 généralisée :
h
I1/3 = [( f (a) + 4 f 1 + f 2) + ( f 2 + 4 f 3 + f 5) + ... + ( f (2n − 2) + 4 f2n−1 + f (b))]
3" #
n−1 n−1
h
I1/3 = f (a) + 4 ∑ f (x2k+1 ) + 2 ∑ f (x2k ) + f (b)
3 k=0 k=1

IV.3.2.1 Variantes de Simpson :


Il existe plusieurs variantes de la méthode de Simpson dites Simpson 3/8
, Simpson 14/45, Simpson 95/288,...etc, obtenues en prenant dans le sous
domaine un polynôme d’interpolation d’ordre 3, 4, 5, ... etc.
En fonction du degré n du polynôme d’interpolation, n points xk , xk+1 , ..., xk+n
sont nécessaires pour appliquer la méthode.
Simpson 3/8 :
En suivant la même démarche, on divise l’intervalle [a, b] en sous intervalles
de 4 points et on on fait une interpolation avec un polynôme d’ordre 3. On
obtient la variante Simpson 3/8
3h
∆I3/8 = [ f (xk ) + 3 f (xk+1 ) + 3 f (xk+2 ) + f (xk+3 )] (IV.8)
8
qui donne après sommation sur (3n + 1) points (c’est-à-dire (3n) sous inter-
valles) la formule Simpson 3/8 généralisée
3h
I3/8 = [( f (x0 ) + 3 f (x1 ) + 3 f (x2 ) + f (x3 ))
8
+ ( f (x3 ) + 3 f (x4 ) + 3 f (x5 ) + f (x6 ))
+ ( f (x6 ) + 3 f (x7 ) + 3 f (x8 ) + f (x9 )) + ...
+ ( f (x3n−3 ) + 3 f (x3n−2 ) + 3 f (x3n−1 ) + f (x3n ))]
" #
n−1 n−1 n−1
3h
I3/8 = f (a) + 3 ∑ f (x3k+1 ) + 3 ∑ f (x3k+2 ) + 2 ∑ f (x3k ) + f (b)
8 k=0 k=0 k=1
Intégration Numériques

Remarque 1: La méthode de Simpson 1/3 ne peut s’appliquer que si le


nombre total des points est (2n + 1) : 3, 5, 7, .... Par contre, pour appliquer la
méthode de Simpson 3/8 on doit avoir un nombre de points 3n + 1 : 4, 7, 10, ....
Si ces deux conditions ne sont pas vérifiées, on peut faire une combinaison de
Simpson 1/3 et 3/8.
Exemple : Calculer avec la méthode de Simpson appropriée l’intégrale :
1
I = 12 (x − e x )dx pour h = 0.5 et h = 0.2.
R

Réponse :
• Pour h = 0.5, le nombre de sous intervalles de discrétisation est :
1
n = b−a
h = 0.5 = 2 auquel correspond un nombre de points n + 1 = 3. La
variante de Simpson a utiliser est donc : Simpson 1/3.
Pour un ensemble de (2n + 1) points, la formule Simpson 1/3 s’écrit :
" #
n−1 n−1
h
I1/3 = f (a) + 4 ∑ f (x2k+1 ) + 2 ∑ f (x2k ) + f (b)
3 k=0 k=1

Ici : 2n + 1 = 3 ⇒ n = 1 et la formule se réduit à :

h 0.5 h 1 1 1
i
I1/3 = [ f (x0 ) + 4 f (x1 ) + f (x2 )] = (1 − e ) + 4(1.5 − e ) + (2 − e )
1 1.5 2
3 3
= −0.526

• Pour h = 0.2, le nombre de sous intervalles de discrétisation est :


1
n = b−a
h = 0.2 = 5 auquel correspond un nombre de points n + 1 = 6.
Les variantes 1/3 et 3/8 ne s’appliquent pas individuellement, il faut
combiner les deux. On subdivise l’intervalle en deux sous intervalles
contenant 3points et 4points respectivement : [x0 , x2 ] et [x2 , x5 ] et on y
applique Simpson 1/3 et Simpson 3/8 respectivement (ou l’inverse).
La formule de Simpson 3/8 appliquée sur un ensemble de 3n + 1 points :

" #
n−1 n−1 n−1
3h
I3/8 = f (a) + 3 ∑ f (x3k+1 ) + 3 ∑ f (x3k+2 ) + 2 ∑ f (x3k ) + f (b)
8 k=0 k=0 k=1
(IV.9)
Méthodes Numériques

Ici : 3n + 1 = 4 ⇒ n = 1
Z x2 Z x5
I= f (x)dx + f (x)dx ≈ I1/3 + I3/8
x0 x2
h
≈ ( f (x0 ) + 4 f (x1 ) + f (x2 ))
3
3h
+ ( f (x2 ) + 3 f (x3 ) + 3 f (x4 ) + f (x5 ))
8
Avec : x0 = 1, x1 = 1.2, x2 = 1.4, x3 = 1.6, x4 = 1.8, x5 = 2 ⇒ I ≈ −0.520

IV.4 Quadratures de Gauss


Les méthodes dites de Newton-Cotes, évaluent l’intégrale I à partir des
valeurs que prends la fonction à intégrer f en un nombre finis de points xk
équidistants. Leurs formules se mettent sous une forme générale :
Z b n
I= f (x)dx = ∑ Ck f (xk ) + Erreur (IV.10)
a k=1
En passant de la formule des Trapèzes à celle de Simpson 1/3, à celle de
Simpson3/8, ...etc, les coefficients Ck appelés coefficients de pondération aux
abscisses xk changent. Ce changement affecte la valeur de l’intégrale calculée.
Un bon choix des coefficients Ck peut donc réduire l’erreur et améliorer la
qualité d’une méthode de Newton-Cotes.
Dans le même objectif, les quadratures de Gauss sont basées sur l’optimisa-
tion du calcul de l’intégrale en utilisant un nombre fini de paramètres (Ck , xk )
prédéfinis (fixés au préalable dans des tables). Les xk ne sont pas nécessaire-
ment régulièrement espacés.
Avec n points xk utilisés et n coefficients de pondération Ck associés, nous pos-
sédons 2n paramètres qui peuvent servir à définir un polynôme d’interpolation
de degré 2n − 1.
En partant de l’écriture IV.10, Gauss choisit les paramètres Ck , xk de sorte
que la méthode donne un résultat exact lorsque la fonction à interpoler est un
polynôme de degré ≤ 2n − 1.
Soit l’intégrale d’une fonction F(t) calculée entre les points : t1 = −1 et t2 = 1 :

Z 1 n
I= F(t)dt = ∑ Ck F(tk ) (IV.11)
−1 k=1
Intégration Numériques

En premier lieu, fixons le nombre de sous intervalles de discrétisation n et


choisissons une approximation de la fonction F(t) tel que son intégrale soit
exacte : prenons par exemple n = 2. Cette condition est bien vérifiée lorsque
F(t) est un polynôme de degré ≤ 2n − 1 = 3.
Pour n = 2, quatre inconnues C1 , C2 et x1 , x2 sont à déterminer et quatre
relations sont donc nécessaires.
En prenant 4 monômes de degré n ≤ 3 : {1,t,t 2 ,t 3 }, on trouve :
Z +1
I[F(t) = 1] = 1 dt = t|+1
−1 = C1 × 1 +C2 × 1
−1

Z +1
1
I[F(t) = t] = t dt = t 2 |+1 = C1 × t1 +C2 × t2
−1 2 −1
Z +1
1
I[F(t) = t 2 ] = t 2 dt = t 3 |+1 = C1 × t12 +C2 × t22
−1 3 −1
Z +1
1
I[F(t) = t 3 ] = t 3 dt = t 4 |+1 3 3
−1 = C1 × t1 +C2 × t2
−1 4
La résolution de ce système aboutit à

1 1
C1 = C2 = 1 et t1 = − √ , t2 = √
3 3
1R
En conclusion, l’intégrale I = −1 f (t)dt , quelle que soit la fonction f (t), peut
n
être approchée par la somme ∑k=1 Ck f (tk ) dont les coefficients Ck et les points
xk sont bien connus.
Bien évidemment l’intégrale n’est exacte que si la fonction f (t) est un poly-
nôme de degré ≤ 2n − 1, pour une fonction quelconque une E erreur d’intégra-
tion est introduite.
Dans ce qui précède, nous avons établi la formule de quadrature de Gauss à
l’ordre 2, mais des tables donnant les poids Ck ainsi que les points de Gauss xk
existent à des ordres très supérieurs.
A présent on peut calculer l’intégrale de n’importe quelle fonction f (x) définie
sur l’intervalle [a, b]. Pour ce faire, on doit d’abord ramener l’intervalle [a, b]
à l’intervalle [−1, 1] moyennant le changement de variable x = mt + p tel que

x=a pour t = −1 et x = b pour t = 1


Méthodes Numériques

ce qui donne

(b − a) (b + a)
m= et p=
2 2
Alors,
Rb Rb
I= a f (x)dx = m a f (mt + p)dt
(b−a) R +1 (b−a) (b+a)
= 2 −1 f ( 2 t + 2 )dt
 
(b−a) 2 (b−a) (b+a)
= 2 ∑ C
k=1 k f 2 k t + 2 (IV.12)
Intégration Numériques

R0 x
Exemple : Calculer .
−0.2 e dx
Z 0   
x (0 + 0.2) (0 + 0.2) −1 (0 − 0.2)
e dx = 1 × exp √ + +
−0.2 2 2 3 2
 
(0 + 0.2) 1 (0 − 0.2)
1 × exp √ +
2 3 2
I = 0.1813
On note que I = Iexacte à quatre chiffres près après la virgule. La précision
peut être améliorée en réduisant les sous intervalles. Par ailleurs cette méthode
n’exige pas des points régulièrement espacés. Il est clair que la quadrature de
Gauss s’applique particulièrement à des fonctions qui présentent des singulari-
tés (comme 1/x au point x = 0), les coordonnées tk sont des constantes et ne
dépendant pas explicitement des singularités.

IV.4.1 Généralisation
Les quadratures de Gauss s’écrivent comme suit :
Z β n
I= w(x) f (t)dt = ∑ ck f (tk ) tk ∈ [α, β ] (IV.13)
α k=1

où w(x) est une fonction poids et les ck sont des coefficients tabulé. Les tk
dépendent de la forme de la fonction poids est des bornes d’intégration. Par
exemple pour le cas précédent 1, t, t 2 , t 3 , √
la fonction poids correspond à
w(x) = 1, α = −1 et β = 1, les tk=1,2 = ±1/ 3 ne sont autres que les racines
des polynômes de Legendre :
Lo (x) = 1, L1 (x) = 1
qu’on construit à l’aide de la relation de récurrence :
(n + 1)Ln+1 (x) = (2n + 1)xLn (x) − nLn−1 (x) (IV.14)

Ainsi, L2 (x) = (3x2 − 1)/2 on trouve bien que L2 (x) = 0, pour x1,2 = ±1/ 3.
Si on prend n points, l’erreur associée à cette méthode est :
2n+1 (n!)4
∆= f 2n (ξ ) (IV.15)
(2n + 1)((2n)!)3
ξ ∈ [−1, 1] étant une valeur qui majore la fonction f (x). Les quadratures les
plus communes sont :
Méthodes Numériques

— Gauss-Legendre :

w(x) = 1, domaine : [−1, 1]

Relation de récurrence :

(n+1)Ln+1 (x) = (2n+1)xLn (x)−nLn−1 (x) (Lo (x) = 1, L1 (x) = 1)

— Gauss-Chebyshev :
p
w(x) = 1/ 1 − x2 , domaine : [−1, 1]

Relation de récurrence :

Tn+1 (x) = 2xTn (x) + Tn−1 (x) (To (x) = 1, T1 (x) = x)

— Gauss-Hermite :
2
w(x) = e−x , domaine :] − ∞, +∞[

Relation de récurrence :

Hn+1 (x) = 2xHn (x) − 2nHn−1 (x) (Ho (x) = 1, H1 (x) = x)

— Gauss-Laguerre :

w(x) = xk e−x , domaine : [0, +∞[

Relation de récurrence :

(n + 1)Rkn+1 (x) = (−x + 2n + k + 1)Rkn (x) − (1 + k)Rkn−1 (x)

(Ro (x) = 1, R1 (x) = 1 − x)


Les racines est coefficients associés à ces polynômes sont tabulés.
Chapitre V

Equations différentielles
ordinaires

S OUVENT , la formulation mathématique de l’évolution d’un phénomène


dynamique débouche sur une équation différentielle. En d’autres termes,
une relation entre la fonction y(x) de la variable réelle x et de ses dérivées :
n
f (x, y, y0 , y(2) , .....yn ) = 0 telle que : y = y(x), y0 = dy(x)
dx , · · · yn = d y(x) .
dxn
Dans le cas où la nème dérivée (yn ) existe, l’équation différentielle est dite
d’ordre n. L’objectif est de tabuler la fonction y(x) pour x ∈ [a, b] en faisant
appel à des méthodes numériques.
Les équations différentielles faisant intervenir une seule variables sont dites
ordinaires, on les note ODE (Ordinary Differential Equation). Résoudre
une ODE sous sa forme la plus simple

dy(x)
y0 = x avec : y0 = (V.1)
dx
revient à intégrer les deux membres de l’équation, on aboutit alors à

x2
Z Z
dy(x) = xdx ⇒ y(x) = +C
2
2
Toutes les fonctions y(x) = x2 +C, C étant la constante d’intégration, sont des
solutions possibles de l’équation V.1.
Si de plus la solution dont nous cherchons à connaître l’évolution en fonction de
la variable x vaut y(x = 0) = yo (condition initiale), la constante d’intégration
Méthodes Numériques

sera définie et la solution y(x) devient unique.


En sciences physiques, avec la panoplie d’applications mises au point dans
les domaines scientifique et technique, la fonction étudiée est une grandeur
physique qui peut être l’oscillation d’un atome, la charge d’un condensateur,
...etc, quant à la variable, c’est fréquemment le temps t ou la position.
Dans ces situations pratiques, les ODE sont d’une complexité qui ne permet
pas de leur trouver une solution analytique. C’est là l’intérêt de développer des
méthodes numériques de résolution des équations différentielles en général.
Dans ce chapitre, quelques méthodes itératives basées sur l’idée d’un point de
départ (condition initiale) seront présentées.
Equations différentielles ordinaires

V.1 Rappels
• Une équation différentielle d’ordre n de la variable y(x) admet une
solution unique si n conditions initiales sont données :

yo = y(x = xo ), y0o = y0 (x = xo ), · · · yn−1


o = yn−1 (x = xo )

• Pour le cas n = 1, on parle d’une équation différentielle de 1er ordre

dy
y0 = = f (x, y), y(x = xo ) = yo (V.2)
dx
La résolution de l’Eq.(V.2) consiste à trouver, dans le domaine considéré,
la valeur de y pour tout x. Numériquement, cela revient à trouver des
valeurs approchées y∗ de y en des points xk , espacés d’un pas h (régulier
ou non), en utilisant un algorithme choisi.
• Considérons l’exemple de l’équation linéaire suivante :

y0 + αy = f (x) , α est un coefficient constant. (V.3)

(a) Le cas où le second membre de V.3 est nul ( f (x) = 0) correspond


à une équation différentielle homogène.

(b) Nous allons nous intéresser uniquement aux équations différen-


tielles de premier ordre. Quel que soit l’ordre de l’équation dif-
férentielle, celle-ci peut être ramenée à un système d’équations
différentielles du premier ordre.
Exemple : Prenons l’équation différentielle de second ordre suivante :

d2y
= f (x, y, y0 )
dx2
On peut passer d’une équation de second ordre à un système de deux
équations du premier ordre en posant z = y0 , :
dy dz
= z⇒ dx = f (x, z, y)
dx
Méthodes Numériques

V.2 Méthode d’Euler


Soit l’équation différentielle de premier ordre y0 = f (x, y(x)) à résoudre sur
[a, b]. La solution analytique y(x) étant inconnue, la résolution numérique par la
méthode d’Euler consiste à échantillonner l’intervalle [a, b] avec un pas régulier
h, c’est à dire constituer une suite de points d’abscisses xo , x1 , ...xk , ..., xn avec
xk = xo + k h. La solution sera alors recherchée aux bornes de chaque sous
intervalle [xk , xk+1 ]. En écrivant le développement en série de Taylor à l’ordre
1 de y(x) autour de xk on peut écrire :
yk+1 − yk
y(xk+1 ) = y(xk ) + y0k ∆x ⇒ y0k = , ∆x = xk+1 − xk = h. (V.4)
∆x
On en déduit que

yk+1 = yk + h f (xk , yk ) avec y(x = xo ) = yo (V.5)

L’équation (V.5), est la relation itérative qui permet, en démarrant d’une valeur
initiale yo , de trouver (tabuler) une approximation de la solution y(x) en tout
point xk pour k = 0, 1, ..., n.

V.2.1 Interprétation géométrique :


L’interprétation géométrique de la méthode est illustrée par la Fig.V.1. En
effet, la fonction supposée inconnue y(x) est assimilée sur l’intervalle [xo , x1 ] à
la droite tangente à sa courbe au point xo , cette approximation est d’autant plus
précise que le pas h est petit. L’image du point xo par l’équation de la droite
tangente est y1 tandis que la fonction inconnue y vaut y(x1 ), la différence entre
les deux valeurs ∆ = y(x1 ) − y1 représente l’erreur d’approximation au point
x1 (voir Fig.V.1 à droite.). Cette différence est à l’origine de l’erreur introduite
par la méthode.
A l’itération suivante l’algorithme d’Euler utilise la valeur approchée précé-
dente y1 (entachée d’erreur) pour calculer la solution y2 au point x2 . Cette
procédure se répète jusqu’au dernier point xn , la Fig.V.1 montre la solution
analytique (en pointillé) comparée à la solution numérique trouvée par l’algo-
rithme d’Euler. La suite de tangentes est tracée aux points xk .
Remarque : Remarquons que les erreurs s’accumulent au fur et à mesure
que les itérations se suivent.
Equations différentielles ordinaires

F IGURE V.1 – Principe de la méthode d’Euler

Exemple : Trouver , en utilisant la méthode d’Euler avec un pas de 0.5,


la solution de l’équation suivante en x = 2 :
1
y0 = = f (x, y) avec y(x = 1) = yo = 0
x
• La solution exacte est y = f (x) = ln(x) ⇒ y(2) = ln(2) = 0.6931 à 4 cs.
• Calculons y(x = 2) par la méthode d’Euler et comparons le résultat du
calcul à la valeur exacte :
2−1
Pour un pas h = 0.5 (n = b−a
h = 0.5 = 2 itérations), la méthode d’Euler donne :

yk+1 = yk + h f (xk , yk ) avec yo = y(x = 1) = 0


1
k = 0 : y1 = y0 + h f (x0 , y0 ) = 0 + h. f (1, 0) = 0 + 0.5( ) = 0.5
1
1
k = 1 : y2 = y1 + h f (x1 , y1 ) = 0.5 + h. f (1.5, 0.5) = 0.5 + 0.5( ) = 0.8333
1.5
k 0 1 2
xk 1 1.5 2
yk 0,0000 0.500 0.8333
Méthodes Numériques

Il faut bien noter que yk+1 = 0.8333 a été obtenue en utilisant h = 0.5 (n = 2).
D’autre part, un pas h = 0.1 (10 itérations) donne y(2) = 0.709 qui est beau-
coup plus proche de la valeur exacte.

k 0 1 2 3 4 5 6 7 8 9 10
xk 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2
yk 0 0.1 0.191 0.274 0.341 0.412 0.479 0.542 0.601 0.656 0.709
Le choix du pas joue un rôle déterminant pour la convergence et la précision de
la solution. Malheureusement, réduire le pas implique un nombre d’itérations
plus important, ce qui se traduit par un temps de calcul plus important et pas
forcement une meilleure précision a cause des arrondis (à chaque itération le
nombre de décimal est fini).

V.2.2 Estimation de l’erreur


La méthode d’Euler correspond à une approximation linéaire de la solution
y(x) :
h2 (2) hn
yk+1 = yk + h y0n + yk + ... + yn (n) avec h = xk+1 − xk (V.6)
2 n!
Il existe toujours un nombre réel c qui maximise la fonction y(2) tel que :
h2 (2)
yk+1 = yk + h y0k + y (c) (V.7)
2
L’algorithme d’Euler est obtenu en négligeant les termes d’ordre supérieur ou
égal à 2 dans le développement en série de Taylor (Eq.V.6), l’erreur commise
à chaque itération est donc
h2 (2)
δk = y (c) (V.8)
2
A la fin du calcul, l’erreur ∆n commise au point xn = b est la somme de toutes
les erreurs δk aux points xk , k = 0, 1, .., n.
n
n h2 (2) (b − a) h2 (2)
∆n = ∑ δk = y (c) = y (c) (V.9)
k=1 2 2h
(b − a) h (2)
= y (c) (V.10)
2
Equations différentielles ordinaires

On rappelle que c est un paramètre qui maximise la fonction y(2) .


Pour l’exemple précédent y0 = 1x on trouve :

(b − a) h (2) h (−1) h (−1) −h


∆n = y (c) = = =
2 2 c2 2 12 2
On a alors :
• Pour h = 0.5, n = 2 : |∆2 | = 0.25
• Pour h = 0.1, n = 10 : |∆10 | = 0.05
Lorsque la fonction f (2) (x, y) est connue, on peut calculer le nombre d’itéra-
tions nécessaire pour atteindre la précision requise. D’un point de vue numé-
rique la méthode d’Euler a l’avantage de converger vers la solution dans la
plupart des cas, c’est une méthode très stable (dans le sens où on n’a pas des
fluctuations lors des différentes itérations). Une précision importante nécessite
un temps de calcul très grand.

V.2.3 Méthode d’Euler Implicite


Écrivons le développement limité de yk en série de Taylor régressive :

1 (2)
yk = yk+1 + y0k+1 (−∆x) + yk+1 (−∆x)2 + · · ·
2
Ce qui permet d’écrire à l’ordre 1 :

yk+1 = yk + h y0k+1 (V.11)

L’expression itérative (V.11) permet de trouver yk+1 qui dépend , non pas de
y0k , mais de y0k+1 = f (xk+1 , yk+1 ). On doit donc d’abord déterminer y0n+1 avant
de calculer les itérations. Cet algorithme, appelé algorithme d’Euler implicite,
permet d’accélérer la convergence.
Exemple : On se donne l’équation différentielle :

y0 + y = 0, y(xo = 0) = yo = 1

dont la solution exacte est y(x) = e−x . Pour x = 1, y = 0.3679.


Regardons ce que donne la méthode d’Euler explicite en x = 1 pour un choix
du pas ∆x = h = 0.1 :
Méthodes Numériques

Dans le cas de la méthode d’Euler implicite on doit, en premier lieu, écrire


l’algorithme explicite :

yk+1 = yk + h y0n+1
yk
= yk + h(−yk+1 ) ⇒ yk+1 =
1+h

k 0 1 2 3 4 5 6 7 8 9 10
xk 0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 10
yk 0.91 0.82 0.75 1.09 0.68 0.62 0.56 0.51 0.47 0.42 0.38

Pour ce qui est de l’erreur, on trouve en affichant 4 cs dans les calculs :

|∆yexplicite | =|yexacte − yexplicite | = 0.0192


(V.12)
|∆yimplicite | =|yexacte − yimplicite | = 0.0176.

Remarquons que |∆yexplicite | > |∆yimplicite |. Il est également à noter que la


méthode d’Euler explicite est plus stable que la méthode implicite.

V.3 Méthode de Runge-Kutta


Bien que la méthode d’Euler soit très stable, la précision dépend du choix
du pas qui doit être très petit. Ce choix augmente le nombre d’itérations et
donc le coût. La méthode de Taylor peut apporter une amélioration, néanmoins,
son algorithme fait appel aux dérivée d’ordres élevés de la fonction à deux
variables f (x, y) dont le calcul se complique vite au u delà de la seconde
dérivée. La méthode de Runge-Kutta est conçue pour remédier aux difficultés
qui se manifestent dans les deux cas précédents.
Ainsi, considérons deux points successifs : [xk , xk+1 ] , en intégrant l’équation
différentielle entre xk et xk+1 on a la relation :
Z xk+1 Z xk+1 Z xk+1
0
y = f (x, y)dx ⇒ y(xk+1 ) − y(xk ) = f (x, y(x))dx (V.13)
xk xk xk

L’idée consiste à calculer l’intégral xxkk+1 f (x, y(x))dx numériquement en fai-


R

sant appel aux résultats du chapitre intégration numérique.


Equations différentielles ordinaires

V.3.1 Méthode de Rung-Kutta 22 :


Dans cette méthode, l’intégrale est estimée par la méthode des trapèzes qui
consiste en l’approximation suivante :
Z xk+1
h
f (x, y(x))dx = y(xk+1 ) − y(xk ) ≈ [ f (xk , y(xk )) + f (xk+1 , y(xk+1 ))]
xk 2
(V.14)
On remarque que cette intégrale dépend des valeurs de yk et yk+1 ce qui donne
lieu à une méthode implicite. On utilise alors la méthode d’Euler (explicite)
afin d’estimer la valeur yk+1 qui intervient dans f (xk+1 , y(xk+1 )) et d’obtenir
un schéma itératif explicite : 
 K1 = f (xk , yk )
yk+1 = yk + h( 12 K1 + 12 K2 ) Avec :
K2 = f (xk + h, yk + hK1 )

Ce schéma numérique présente deux erreurs de troncature :
• Tout d’abord, l’approximation de l’intégrale par l’aire d’un trapèze
produit une première erreur .
• Ensuite, on commet une deuxième erreur lorsque l’on estime yk+1 par
yk + h f (xk , yk ) dans le calcul de f (xk+1 , y(xk+1 )).

V.3.2 Méthode de Rung-Kutta 44 :


La méthode de Runge-Kutta d’ordre 4 raffine le calcul de l’intégrale fait
avec RK22. Au lieu d’utiliser la méthode des trapèzes, on utilise la méthode
de Simpson 1/3. Celle-ci consiste à remplacer la fonction intégrée par une
parabole passant par les points extrêmes et le point milieu. On a
Z xk+1
h
f (x, y(x))dx ≈ [ f (xk , y(xk )) + 4 f (xk+ 1 , y(xk+ 1 ) + f (xk+1 , y(xk+1 ))]
xk 6 2 2

(V.15)
qui donne
h
yk+1 = yk + [ f (xk , y(xk )) + 4 f (xk+ 1 , y(xk+ 1 ) + f (xk+1 , y(xk+1 ))] (V.16)
6 2 2

Ici également la présence des termes yk+1 et yk+ 1 fait que la méthode est impli-
2
cite. Pour rendre le schéma explicite, il faut exprimer les termes 4 f (xk+ 1 , y(xk+ 1 ))
2 2
et f (xk+1 , y(xk+1 )) en fonction de yk , xk et h :
Méthodes Numériques

• On décompose le terme 4 f (xk+ 1 , y(xk+ 1 )) en deux termes identiques


2 2
2 f (xk+ 1 , y(xk+ 1 )). Dans le premier on remplace y(xk+ 1 ) par sa valeur
2 2 2
déduite de la méthode d’Euler explicite ; à savoir :
ya (xk+ 1 ) = yk + h2 (xk , yk ).
2
Dans le deuxième terme, on remplace y(xk+ 1 ) par sa valeur déduite
2
de la méthode d’Euler implicite :y(xk+ 1 ) que l’on va approcher par
2
yk + h2 (xk , yk ). Les méthodes d’Euler implicite et explicite produisant
des erreurs quasi opposées, on a ainsi l’espoir de minimiser l’erreur sur
le calcul de 4 f (xk+ 1 , y(xk+ 1 ). Pour résumer, on écrira :
2 2 

 K1 = f (xk , yk )



4 f (xk+ 1 , yk+ 1 ) = 2K2 + 2K3 Avec : K2 = f (xk + 12 h, yk + 12 hk1 )
2 2 



K3 = f (xk + 12 h, yk + 12 hk2 )

• Le terme f (xk+1 , y(xk+1 )) , est approché en estimant y(xk+1 ) par la


méthode du point milieu, c’est-à-dire en appliquant :
y(xk+1 ) ≈ yk + h f (xk+ 1 , yk+ 1 ) ≈ yk + h f (xk+ 1 , yak+ 1 )
2 2 2 2

Finalement : 
 K1 = h f (xk , xk )
h f (xk + h2 , xk + K21 )

K2 =

yk+1 = yk + 16 [K1 + 2K2 + 2K3 + K4 ] Avec :
K = h f (xk + h2 , xk + K22 )
 3


K4 = h f (xk + h, xk + K3 )

Exemple : Soit l’équation différentielle :

y0 = 1 − x + 6y = f (x, y), y(0) = 1

On veut calculer y(0.4) avec un pas égal à h = 0.2 par les méthodes de Runge-
Kutta R22 et R44 :
Réponse :

b−a 0.4−0
• Nombre de noeuds : n = h = 0.2 = 2 ⇒ n + 1 = 3 points.
• Le tableau de valeurs à remplir :
Equations différentielles ordinaires

k 0 1 2
xk 0 0.2 0.4
yk 1

 K1 = f (xk , yk )
• R22 : yk+1 = yk + h( 12 K1 + 12 K2 ) Avec :
K2 = f (xk + h, yk + hk1 )

• k=0 :
K1 = f (x0 , y0 ) = 7
K2 = f (x0 + h, y0 + hK1 ) = f (0.2, 0.2x7 + 1) = f (0.2, 2.4) = 15.2
y1 = y0 + h( 12 K1 + 12 K2 ) = 3.22
• k=1 :
K1 = f (x1 , y1 ) = 20.12
K2 = f (x1 +h, y1 +hK1 ) = f (0.4, 0.2x20.12+3.22) = f (0.4, 7.24) =
44.04
y2 = y1 + h( 21 K1 + 12 K2 ) = 9.63

 K1 = h f (xk , yk )
K2 = h f (xk + 2h , yk + K21 )


• R44 : yk+1 = yk + 61 [K1 + 2K2 + 2K3 + K4 ] Avec :
K = h f (xk + h2 , yk + K22 )
 3


K4 = h f (xk + h, xk + K3 )

• k=0 :
K1 = h f (x0 , y0 ) = 1.4
K2 = h f (x0 + h2 , y0 + K21 )
K3 = h f (x0 + 2h , y0 + K22 )
K4 = h f (x0 + h, y0 + K3 )
y1 = y0 + 16 [K1 + 2K2 + 2K3 + K4 ]
• k=1 :
K1 = h f (x1 , y1 ) = 4.02
K2 = h f (x1 + 2h , y1 + K21 )
K3 = h f (x1 + 2h , y1 + K22 )
K4 = h f (x1 + h, y1 + K3 )
y2 = y1 + 16 [K1 + 2K2 + 2K3 + K4 ]

Vous aimerez peut-être aussi