Cours Analnum
Thèmes abordés
Cours Analnum
Thèmes abordés
ANALYSE NUMÉRIQUE
T. Dudok de Wit
Université d’Orléans
Janvier 2013
Table des matières
1 Introduction 4
p
1.1 Un exemple : le calcul de x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Interpolation et extrapolation 5
2.1 L’interpolation polynomiale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Autres fonctions d’interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Extrapolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Interpolation en plusieurs dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3 Différentiation numérique 13
3.1 Estimation de la dérivée première . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Estimation de la dérivée seconde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3 Dériver dans la pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3.1 Si f (x) est donnée par un tableau de valeurs . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3.2 Si f (x) est donnée par son expression analytique . . . . . . . . . . . . . . . . . . . . . 16
3.3.3 Impact du bruit sur la dérivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4 Intégration numérique 19
4.1 Méthodes simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2 Méthodes composées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.3 Autres méthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.4 L’intégration dans la pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2
Ce fascicule est un support au cours d’analyse numérique Il aborde : l’interpo-
lation, la dérivation et l’intégration numériques, la recherche de racines d’une
fonction et l’intégration d’équations différentielles. Deux autres chapitres de
l’analyse numérique (algèbre linéaire et optimisation) seront abordés dans le
cours de Nathalie Brun-Huret.
Les applications se feront avec le logiciel Scilab (un clone gratuit de matlab),
dont la documentation et les sources peuvent être téléchargées à l’adresse
http://www.scilab.org
Quelques références utiles disponibles à la BU sont :
• J.-Ph. Grivet, Méthodes numériques appliquées, EDP Sciences, 2009
(très proche du programme du cours, mais avec un contenu plus riche) :
http://www.edition-sciences.com/methodes-numeriques-appliquees.htm
• A. Fortin, Analyse numérique, Presses Internationales Polytechniques,
Montreal, 4ème édition, 2011 (bonne introduction, proche des applica-
tions) : http://giref.ulaval.ca/afortin.html
• C. Guilpin, Manuel de calcul numérique appliqué, EDP Sciences, 1999
(plus complet et plus théorique que le précédent).
• W. Press et al., Numerical Recipes in C, Cambridge University Press,
3ème édition, 2007 (LA référence sur les outils numériques) :
http://www.nr.com
3
1 Introduction
L’ordinateur est aujourd’hui un outil incontournable pour simuler et modéliser les sys-
tèmes, mais il faut encore savoir exprimer nos problèmes en langage formalisé des
mathématiques pures. Nous sommes habitués à résoudre les problèmes de façon ana-
lytique, alors que l’ordinateur ne travaille que sur des suites de nombres. On verra dès
lors qu’il existe souvent plusieurs approches pour résoudre un même problème, ce qui
conduit à des algorithmes 1 différents. Un des objectifs de ce cours est de fournir des
bases rigoureuses pour développer quelques algorithmes utiles dans la résolution de
problèmes en physique.
Un algorithme, pour être utile, doit satisfaire un certain nombre de conditions. Il doit
être :
• rapide : le nombre d’opérations de calcul pour arriver au résultat escompté doit
être aussi réduit que possible.
• précis : l’algorithme doit savoir contenir les effets des erreurs qui sont inhé-
rentes à tout calcul numérique. Ces erreurs peuvent être dues à la modélisation,
à la représentation sur ordinateur ou encore à la troncature.
• souple : l’algorithme doit être facilement transposable à des problèmes diffé-
rents.
p
1.1 Un exemple : le calcul de x
Sur ordinateur, l’addition de deux entiers peut se faire de façon exacte mais non le
calcul d’une racine carrée. On procède alors par approximations successives jusqu’à
converger vers la solution souhaitée. Il existe pour cela divers algorithmes. Le suivant
est connu depuis l’antiquité (mais ce n’est pas celui que les ordinateurs utilisent).
Soit x un nombre réel positif dont on cherche la racine carrée. Désignons par a 0 la
première estimation de cette racine, et par ǫ0 l’erreur associée.
p
x = a 0 + ǫ0
x = (a 0 + ǫ0 )2 = a 02 + 2a 0 ǫ0 + ǫ20
Supposons que l’erreur soit petite face à a 0 , ce qui permet de négliger le terme en ǫ20
x ≈ a 02 + 2a 0 ǫ0
Remplaçons l’erreur ǫ0 par un ǫ′0 , qui en est une approximation, de telle sorte que
x = a 02 + 2a 0 ǫ′0
1. Le mot algorithme vient du mathématicien arabe Al-Khwarizmi (VIIIè siècle) qui fut l’un des premiers à
utiliser une séquence de calculs simples pour résoudre certaines équations quadratiques. Il est un des pionniers
de l’al-jabr (algèbre).
4
On en déduit que
ǫ′0 = (x/a 0 − a 0 )/2
Le terme
1 x
µ ¶
a 1 = a 0 + ǫ′0 = + a0
2 a0
constitue une meilleure approximation de la racine que a 0 , sous réserve que le dé-
veloppement soit convergent. Dans ce dernier cas, rien ne nous empêche de recom-
mencer les calculs avec a 1 , puis a 2 , etc., jusqu’à ce que la précision de la machine ne
permette plus de distinguer le résultat final de la véritable solution. On peut donc dé-
finir une suite, qui à partir d’une estimation initiale a 0 devrait en principe converger
vers la solution recherchée. Cette suite est :
1 x
µ ¶
a k+1 = + ak , a0 > 0
2 ak
L’algorithme du calcul de la racine carrée devient donc
p
1. Démarrer avec une première approximation a 0 > 0 de x
2. A chaque itération k, calculer la nouvelle approximation a k+1 = (x/a k + a k )/2
3. Calculer l’erreur associée ǫ′k+1 = (x/a k+1 − a k+1 )/2
4. Tant que l’erreur est supérieure à un seuil fixé, recommencer en 2.
Le tableau ci-dessous illustre quelques itérations de cet algorithme pour le cas où x = 4.
i ai ǫ′i
0 4 -1.5
1 2.5 -0.45
2 2.05 -0.0494
3 2.00061 -0.000610
4 2.00000009 -0.000000093
etc
Nous voyons que l’algorithme converge très rapidement, et permet donc d’estimer la
racine carrée d’un nombre moyennant un nombre limité d’opérations élémentaires
(additions, soustractions, divisions, multiplications). Il reste encore à savoir si cet al-
gorithme converge toujours et à déterminer la rapidité de sa convergence. L’analyse
numérique est une discipline proche des mathématiques appliquées, qui a pour ob-
jectif de répondre à ces questions de façon rigoureuse.
2 Interpolation et extrapolation
5
Dans toutes les expériences où on est amené à évaluer une fonction f (x) pour dif-
férentes valeurs de x (par exemple la pression p(T ) en fonction de la température T
dans une machine thermique) il est fastidieux voire impossible d’évaluer une fonction
f (x) pour un grand nombre de valeurs de x. L’interpolation devient nécessaire chaque
fois que l’on veut estimer f (x) pour une valeur de x autre que celles dont on dispose.
Comme nous le verrons plus bas, l’interpolation se trouve aussi à la base de nombreux
algorithmes.
1
0
−1
gain [dB]
−2
−3 ?
−4
−5
−6
0 2000 4000 6000 8000 10000
frequence [Hz]
F IGURE 1 – Les trois mesures ainsi que l’emplacement approximatif de la fréquence de coupure du filtre,
pour un gain de -3 dB
6
Si on possède un modèle analytique exact de la fonction de transfert, il vaut mieux utili-
ser celui-ci pour faire un ajustement aux données et en déduire des valeurs interpolées.
En l’absence de modèle analytique, le plus simple consiste à ajuster des polynômes.
Les polynômes ont en effet l’avantage de se calculer aisément et de posséder des pro-
priétés mathématiques intéressantes (dont celle d’être aisément différentiables). Nous
avons deux options :
1. Soit on ajuste un seul polynôme à l’ensemble des points de colocation. Ce poly-
nôme ne pourra pas forcément passer par tous les points. Ce cas est illustré dans
la figure 2(a) ci-dessous. Le polynôme de degré 1 (une droite) ne passe pas par
tous les points et approxime relativement mal les mesures. Le polynôme de de-
gré 2 (une parabole) ne passe lui non plus par tous les points mais donne des
résultats visuellement meilleurs. Le polynôme de degré 3 passe exactement par
tous les points.
2. Soit on ajuste des polynômes différents aux différents intervalles, de façon à pas-
ser par tous les points. Le plus simple consiste à relier les mesures par des poly-
nômes de degré 1 (= des segments de droite). L’interpolation spline, qui est cou-
ramment utilisée dans la pratique, consiste à relier les points par des bouts de
polynôme de degré 3. On obtient ainsi une fréquence de coupure de f c = 7196
Hz.
(a) (b)
10 10
mesures mesures
8 droite 8 ordre 1
parabole spline
frequence [kHz]
frequence [kHz]
cubique
6 6
4 4
2 2
0 0
−6 −4 −2 0 −6 −4 −2 0
gain [dB] gain [dB]
F IGURE 2 – A gauche : interpolation des données par un polynôme unique. A droite : interpolation en
utilisant des polynômes différents pour chaque intervalle.
Sans perte de généralité, trions les valeurs des abscisses xi de telle sorte que x0 ≤ x1 ≤
. . . ≤ xn . Si la valeur de x qui nous intéresse se situe dans l’intervalle [x1 , xn ], on parlera
d’interpolation. Sinon, c’est d’extrapolation qu’il s’agira. L’extrapolation d’une fonc-
tion est un tache généralement beaucoup plus délicate que l’interpolation.
7
Il n’est pas nécessaire que les pivots xi soient équidistants, même si cela permet d’avoir
des algorithmes plus rapides.
Solution ¡: une des¢ solutions les plus simples consiste à faire passer par les points de
colocation xi , f (xi ) un polynôme de degré k
p k (x) = a 0 + a 1 x + a 2 x 2 + . . . + a k x k
tel que
p k (xi ) = f (xi ) ∀i = 1, . . .n
puis à évaluer ensuite ce polynôme en x. Si ce polynôme approxime bien la fonction
f , on peut espérer que f (x) ≈ p k (x). Un théorème important dit ici que
¡ ¢
Théorème : Par n + 1 points de colocation xi , f (xi ) , d’abscisses différentes (xi 6=
x j ∀i 6= j ), on ne peut faire passer qu’un et un seul polynôme de degré n.
4
mesures
3 p4(x)
2 spline
log(x)
f(x)
−1
−2
0 1 2 3 4 5
x
F IGURE 3 – Exemple d’ajustement d’une fonction f (x) = log(x) par un polynôme de degré quatre p 4 (x)
et par une fonction spline cubique s(x). La fonction f (x) n’est connue que par cinq points de colocation.
L’interpolation est satisfaisante, quelle que soit la fonction choisie. En revanche, l’extrapolation s’écarte
très vite de la valeur exacte, et ce pour tous les polynômes.
Par deux points ne passe donc qu’une seule droite. Par trois points une seule parabole,
etc. Il existe différentes approches pour construire ces polynômes. Toutes donnent for-
mellement le même résultat, mais leur utilité pratique varie considérablement (temps
de calcul, sensibilité aux erreurs d’arrondi, . . . ). La méthode de Lagrange est un mé-
thode simple et systématique pour construire des polynômes de degré quelconque.
8
Elle n’est cependant guère utilisée aujourd’hui en raison de son coût en temps de cal-
cul.
• Pour une fonction définie par deux points de colocation uniquement (n = 2), le
polynôme de Lagrange est de degré 1 et s’écrit
x − x1 x − x0
p 1 (x) = f (x0 ) + f (x1 )
x0 − x1 x1 − x0
On vérifie que ce polynôme passe bien par les deux points de colocation puisque
p(x = x0 ) = f (x0 ) et p(x = x1 ) = f (x1 ).
• Pour une fonction définie par trois points de colocation, le polynôme de La-
grange est une parabole d’équation
(x − x1 )(x − x2 ) (x − x0 )(x − x2 ) (x − x0 )(x − x1 )
p 2 (x) = f (x0 ) + f (x1 ) + f (x2 )
(x0 − x1 )(x0 − x2 ) (x1 − x0 )(x1 − x2 ) (x2 − x0 )(x2 − x1 )
9
Tout le problème consiste à estimer l’erreur sans disposer de la valeur de f (x) en tout
x. On supposera dans ce qui suit que les valeurs des points de colocation sont connues
exactement, ce qui n’est pas toujours vrai dans la pratique. Le théorème suivant est
alors utile
¡ ¢
¡Théorème
¢ ¡: Soit ¢ un ensemble de n + 1 points de colocation { x0 , f (x0 ) ,
x1 , f (x1 ) , . . ., xn , f (xn ) }. On suppose que la fonction f (x) est définie dans l’intervalle
[x0 , xn ] et qu’elle est (n + 1)-fois dérivable dans l’intervalle ]x0 , xn [. Il existe alors une
abscisse ξ ∈ [x0 , xn ] telle que
f (n+1) (ξ)
ǫn (x) = (x − x0 )(x − x1 ) · · ·(x − xn )
(n + 1)!
où l’expression f (n+1) (ξ) désigne la dérivée (n + 1)-ième de f (x), évaluée en une abs-
cisse ξ inconnue.
Ce théorème nous apprend que
• l’erreur ǫn (x) est d’autant plus petite que la fonction f (x) est "lisse" (ses dérivées
supérieures restent petites).
• l’erreur ǫn (x) diminue quand x est proche d’un des points de colocation. Elle est
naturellement nulle aux points de colocation : ǫn (xi ) = 0, i = 0, . . ., n
• pour un degré n élevé, le polynôme dans l’expression de l’erreur tend à osciller,
ce qui peut affecter l’interpolation.
15 mesures
p10(x)
10
f(x)
0 2 4 6
x
F IGURE 4 – Exemple d’interpolation avec un polynôme de degré 10. Plus le degré est élevé, plus le poly-
nôme a tendance à osciller.
La figure 4 illustre ce qui se passe quand on interpole avec des polynômes de degré
élevé. Non seulement le calcul de ces polynômes de degré élevé présente des instabili-
tés numériques, mais en plus on voit apparaître des oscillations indésirables. Augmen-
ter le degré du polynôme ne fait qu’amplifier ces oscillations. D’où la règle générale
10
L’interpolation polynomiale est d’autant plus risquée que le degré du po-
lynôme est élevé. En pratique, on ne dépasse rarement le degré trois.
L’interpolation est d’autant meilleure que la fonction à ajuster est régu-
lière (continûment dérivable).
La figure 5 illustre l’interpolation d’une fonction qui n’est pas continûment dérivable.
La discontinuité augmente considérablement l’erreur d’interpolation.
12
10
8
6
f(x)
4
mesures
2 p5(x)
0 spline
sol. exacte
−2
2 4 6 8
x
F IGURE 5 – Exemple d’ajustement d’une fonction discontinue par un polynôme de degré quatre p 5 (x) et
par une fonction spline cubique s(x). La fonction f (x) n’est connue que par six points de colocation.
11
(x0 , x1 ), (x1 , x2 ), . . ., (xn−1 , xn ). Le problème est a priori sous-déterminé, car il existe une
infinité de cubiques pouvant passer par deux points. Toutefois, si on impose en chaque
xi la continuité de f (x) ainsi que la continuité de la dérivée première f ′ (x), la solution
devient unique. Le résultat est souvent plus satisfaisant qu’avec un polynôme de La-
grange, comme le montrent les figures 3 et 4. Il existe en outre des algorithmes rapides
pour le calcul des coefficients des splines.
2.3 Extrapolation
L’extrapolation est une tâche encore bien plus délicate que l’interpolation, car la rapide
divergence des fonctions polynômiales tend rapidement à donner des valeurs qui sont
totalement dénuées de sens. Contrairement à l’interpolation, il est indispensable de
disposer d’un modèle analytique de la fonction à étudier si on veut extrapoler celle-ci.
Sans un tel modèle, l’extrapolation sera peu crédible.
25
mesures
p5(x)
20
effectif [milliard]
spline
15 exponentielle
10
0
1800 1900 2000 2100
annee
12
année t 1804 1927 1960 1974 1987 1999
effectif n(t) [milliard] 1 2 3 4 5 6
3 Différentiation numérique
Une fonction f (x) continûment dérivable est connue par quelques-uns de ses points
de colocation. Comment fait-on pour évaluer la dérivée première f ′ (x) et/ou les dé-
rivées d’ordre supérieur ? Ce besoin de différentiation numérique s’exprime dans de
nombreux domaines.
La solution consiste ici à faire passer par les points de colocation un polynôme d’inter-
polation, puis à dériver celui-ci le nombre de fois nécessaire. On peut ainsi estimer la
dérivée aux points de colocation ou entre deux.
f (x1 ) − f (x0 )
p 1 (x) = (x − x0 ) + f (x0 )
x1 − x0
L’estimation de la dérivée première équivaut donc au coefficient directeur de la droite
f (x1 ) − f (x0 )
f ′ (x) ≈ p 1′ (x) = , x ∈ [x0 , x1 ]
x1 − x0
Notons qu’elle prend la même valeur en tout point de l’intervalle [x0 , x1 ]. Par ailleurs,
la dérivée seconde et toutes les dérivées supérieures sont nulles.
13
Estimation de l’erreur : Pour savoir quelle confiance accorder à l’expression
ci-dessus, il faut connaître l’erreur. Du chapitre précédent, nous tirons
f (x) = p n (x) + ǫn (x) ⇒ f ′ (x) = p n′ (x) + ǫ′n (x)
Supposons dorénavant que les abscisses des points de colocation sont régulièrement
réparties, et appelons h = xi +1 − xi l’écartement ou pas entre deux abscisses voisines.
On peut alors montrer que
f (n+1) (ξ) n
ǫ′n (x) = (−1)n h , ξ ∈ [x0 , xn ]
(n + 1)!
L’erreur varie donc comme ǫ′n (x) ∼ h n . On dira qu’elle est d’ordre n et on écrira fré-
quemment de façon abrégée ǫ′n (x) ∼ O (h n )
f (xk ) − f (xk−1 )
f ′ (xk ) = + O (h) différence arrière d’ordre 1
h
Avec trois points de colocation, le polynôme d’interpolation devient une parabole. A
partir de cette dernière, on peut évaluer la dérivée première en chacun des trois points
− f (xk+1 ) + 4 f (xk ) − 3 f (xk−1 )
f ′ (xk−1 ) = + O (h 2 ) différence avant d’ordre 2
2h
f (xk+1 ) − f (xk−1 )
f ′ (xk ) = + O (h 2 ) différence centrée d’ordre 2
2h
14
f(x2)
diff. avant
diff. centree
f(x1) diff. arriere
f(x0)
x0 x1 x2
F IGURE 7 – Illustration des dérivées avant et arrière d’ordre 1, et de la dérivée centrée d’ordre 2 au point
d’abscisse x = x 1 .
La procédure reste la même pour les dérivées secondes, sauf que le polynôme d’in-
terpolation doit être dérivé deux fois. Comme ce polynôme doit être au minimum de
degré 2 (sinon sa dérivée seconde est nulle), on en déduit qu’il faut au minimum trois
points de colocation.
15
Pour trois points de colocation, on obtient les expressions
16
3.3.3 Impact du bruit sur la dérivation
La différentiation numérique est une procédure qui amplifie fortement le bruit dans
un signal. La figure 8 illustre le cas de la dérivation de la fonction f (x) = sin(x) lorsque
cette dernière est affectée par du bruit additif de faible amplitude.
1 1
0.5 0.5
f(x)
0 0
−0.5 −0.5
−1 −1
0 2 4 6 8 0 2 4 6 8
x x
f’(x) sans bruit f’(x) avec bruit
1 1
0.5 0.5
f’(x)
0 0
−0.5 −0.5
−1 −1
0 2 4 6 8 0 2 4 6 8
x x
F IGURE 8 – Dérivation de la fonction f (x) = sin(x) avec un léger bruit additif (à droite) et sans bruit
additif (à gauche). La rangée de haut représente la fonction f (x) avec ses points de colocation. La rangée
de bas représente la fonction différenciée, avec la dérivée avant d’ordre 1 (traitillé), la dérivée arrière
d’ordre 1 (trait fin) et la dérivée centrée d’ordre 2 (trait épais).
17
Pour les dérivées d’ordre 1 et 2, les expressions les plus intéressantes sont
les différences centrées d’ordre 2
f (xk+1 ) − f (xk−1 )
f ′ (xk ) = + O (h 2 )
2h
7 y = y (:);
8 n = length (y );
9 dydx = zeros (n ,1);
10 dydx (1) = y (2) - y (1);
11 dydx ( n) = y(n )-y (n -1);
12 dydx (2: n -1) = (y (3: n)- y (1: n -2)) / 2;
13 dydx = dydx / h;
14 endfunction
Si l’expression analytique de la fonction f (x) est connue, alors on peut procéder diffé-
remment :
18
1 function [ dfdx ] = derivee (f ,x )
2
Il faut ensuite définir la fonction à dériver. Par exemple pour f (x) = xe −x nous aurions
function f = mafonction(x)
// definit la fonction dont il faut evaluer la derivee
f = exp(-x).*x;
endfunction
z = derivee(mafonction,x);
4 Intégration numérique
Problème 1 : Une
´ fonction f (x) est connue par quelques-uns de ses points de
colocation { xi , f (xi ) }ni=0 (qui sont régulièrement espacés ou non). Comment fait-on
¡
Rx
pour estimer la valeur de l’intégrale x0n f (x) d x, alors que l’expression analytique de
f (x) n’est pas connue ?
Rb
Problème 2 : On cherche la valeur de l’intégrale définie f (x) d x lorsque l’ex-
a
pression analytique de l’intégrand f (x) est connue, mais non sa primitive.
Rb 2
Un exemple : calculer a e −x d x
19
Solution : Ces deux problèmes, pourtant très différents, peuvent être résolus avec les
mêmes outils. Comme dans le chapitre précédent, nous interpolons la fonction f (x) ou
ses points de colocation avec un polynôme, puis nous intégrons explicitement ce po-
lynôme. Nous supposerons dans ce qui suit que la distance entre points de colocation
adjacents est constante et vaut h (le pas).
Commençons par le cas le plus simple : estimer l’intégrale définie par seulement deux
points de colocation (n = 1). Par ces deux points passe le polynôme de degré 1
f (x1 ) − f (x0 )
p 1 (x) = (x − x0 ) + f (x0 )
x1 − x0
Or nous avons Zx1 Zx1 Zx1
f (x) d x = p 1 (x) d x + ǫ1 (x) d x
x0 x0 x0
ce qui donne Zx1
h³ ´
f (x) d x = f (x0 ) + f (x1 ) + O (h 3 )
x0 2
Cette méthode est dite méthode des trapèzes puisque l’aire est approximée par un tra-
pèze (cf. figure 9).
n=1 n=2
4 4
3 3
f(x)
2 2
1 1
0 0
0 2 4 6 0 2 4 6
x x
F IGURE 9 – Exemple d’intégration d’une fonction par interpolation avec un polynôme du premier et du
second degré. La valeur de l’intégrale correspond à l’aire de la figure en gris.
En ajoutant un point de colocation entre les deux premiers, nous pouvons améliorer le
résultat et interpoler par une parabole. Cela donne la méthode de Simpson
Zx2
h³ ´
f (x) d x = f (x0 ) + 4 f (x1 ) + f (x2 ) + O (h 5 )
x0 3
20
Notons que pour un pas h suffisamment petit, la méthode de Simpson donne une
erreur considérablement plus petite que celle de la méthode des trapèzes. On peut
supposer que le résultat s’améliore davantage en approximant l’intégrale avec quatre
points. Toutefois, pour les raisons évoquées plus haut, il n’est guère recommandé de
recourir à des polynômes de degré plus élevé.
Comment faut-il alors procéder pour intégrer des fonctions données par un grand
nombre de points de colocation ? Au lieu d’augmenter le degré du polynôme, il suffit
d’appliquer séparément la méthode des trapèzes ou se Simpson à chacun des inter-
valles. Cela donne les formules dites composées.
3 3
f(x)
2 2
1 1
0 0
0 2 4 6 0 2 4 6
x x
F IGURE 10 – Exemple d’intégration d’une fonction avec une méthode composée : la méthode des tra-
pèzes (à gauche) et celle de Simpson (à droite).
Pour intégrer avec la méthode des trapèzes une fonction dont les abscisses sont
{x0 , x1 , . . ., xn }, il suffit d’appliquer séparément la méthode des trapèzes à chaque in-
tervalle. Cela donne
Zxn
h³ ´ h³ ´ h³ ´
f (x) d x = f (x0 ) + f (x1 ) + f (x1 ) + f (x2 ) + · · · + f (xn−1 ) + f (xn ) + O (nh 3 )
x0 2 2 2
³1 1 ´
= h f (x0 ) + f (x1 ) + f (x2 ) + · · · + f (xn−1 ) + f (xn ) + O (nh 3 )
2 2
Dans la pratique, les bornes d’intégration x0 et xn sont généralement fixées, mais non
le nombre n d’intervalles. C’est donc sur ce dernier qu’il faut jouer pour améliorer la
précision des résultats. Comment varie le terme d’erreur en fonction de n ? Nous avons
³ x − x ´3 1
n 0
nh 3 = n ∼ 2
n n
L’erreur d’intégration varie donc comme n et nous noterons O (n −2 ). Contrairement
−2
à la dérivation, où le paramètre-clé est le pas h, ici nous travaillons plutôt sur le nombre
d’intervalles n.
21
Avec la méthode de Simpson (en prenant des intervalles qui ne se chevauchent pas),
on obtient la formule de Simpson composée. Comme chaque intervalle nécessite trois
points de colocation, le nombre n d’intervalles doit obligatoirement être pair. Cela
donne
Zxn
h³ ´
f (x) d x = f (x0 ) + 4 f (x1 ) + 2 f (x2 ) + 4 f (x3 ) + · · · + 4 f (xn−1 ) + f (xn ) + O (n −4 )
x0 3
R1
On cherche la valeur de l’intégrale I = 0 e −x d x donne
22
On s’aperçoit qu’en décuplant le nombre d’intervalles, l’erreur chute d’un facteur 102
pour la méthode des trapèzes (qui est d’ordre O (n −2 )), et d’un facteur 104 pour la mé-
thode de Simpson, d’ordre O (n −4 ). Ceci est illustré dans la figure 11. A précision com-
parable, la méthode de Simpson nécessite donc moins de opérations arithmétiques.
Attention : ceci est vrai uniquement pour un nombre d’intervalles n ≫ 1. Quand ce
nombre est faible (typiquement n < 10), il peut arriver que la méthode des trapèzes
offre un meilleur résultat.
Quelle est la distance parcourue par un objet dont les mesures de vitesse ont donné ?
t [s] 5 6 7 8 9 10 11 12 13
v [m/s] 20 19 17 13 8 5 2 1 0
On trouve respectivement
Dans cet exemple, le résultat exact n’est pas connu car l’expression analytique de f (x)
ne l’est pas non plus.
0
10
Trapezes
Simpson
−5
10
ε(n)
−10
10
−15
10 eps
0 2 4 6
10 10 10 10
n
23
Avant d’intégrer une fonction, il faut la visualiser au préalable, afin détermi-
ner si elle se prête bien à une intégration numérique (régularité, disconti-
nuités, singularités,. . . ) et pour estimer le pas.
Le pas doit toujours être choisi h ≪ T , où T est l’échelle caractéristique sur
laquelle la fonction f (x) varie. Pour une fonction périodique, par exemple,
T sera la période.
Les méthodes d’intégration classiques sont la méthode des trapèzes et celle
de Simpson. La seconde offre, à temps de calcul équivalent, un résultat gé-
néralement meilleur.
Zxn ³1 1 ´
f (x) d x = h f (x0 ) + f (x1 ) + f (x2 ) + · · · + f (xn−1 ) + f (xn ) + O (n −2 )
x0 2 2
Zxn
h³ ´
f (x) d x = f (x0 )+4 f (x1 )+2 f (x2 )+4 f (x3 )+· · ·+4 f (xn−1 )+ f (xn ) +O (n −4 )
x0 3
9 x = linspace (a ,b ,n +1) ’;
10 y = f (x ); // evalue en x la fonction dont le nom est dans f
11 h = x (2) - x (1); // le pas
12 I = ( sum (y ) - 0.5*( y (1)+ y($ )))* h ;
13 endfunction
24
14 I = I *h /3;
15 endfunction
Par intégrer, il fait leur fournir le nom de la fonction qui définit l’intégrand. Par
R1 2
exemple, pour calculer 0 e −x d x avec la méthode des trapèzes en prenant 400 noeuds,
on commence par définir l’intégrand
function f = integrand(x)
// definit l’integrand pour le calcul d’integrale
f = exp(-x.*x);
endfunction
deff(’[y]=integrand(x)’,’y=exp(-x.*x)’)
I = trapezes(integrand,0,1,400)
Problème : Une fonction f (x) connue en chacun de ses points possède une ou plu-
sieurs racines (ou zéros) {x̄i | f (x̄i ) = 0}. Comment fait-on pour déterminer ces racines ?
Supposons que l’intervalle dans lequel se situe la racine soit connu. La méthode de
la bisection offre une convergence lente mais sûre vers la racine. Cette méthode est
recommandée lorsque la fonction présente des discontinuités ou des singularités.
25
Procédure à suivre : La racine se trouve initialement dans l’intervalle de re-
cherche [xk , xk+1 ]. On a donc f (xk ) · f (xk+1 ) ≤ 0. L’algorithme devient
1. choisir comme nouvelle abscisse xk+2 = (xk + xk+1 )/2, le point milieu de l’inter-
valle :
2. si f (xk ) · f (xk+2 ) ≤ 0, la solution se trouve dans l’intervalle [xk , xk+2 ], qui devient
alors le nouvel intervalle de recherche
3. au contraire, si f (xk ) · f (xk+2 ) ≥ 0, le nouvel intervalle de recherche devient
[xk+2 , xk+1 ]
4. revenir au point 1. jusqu’à ce qu’il y ait convergence.
6
x1
4
2
x3
f(x)
0 x
x 4
∞
x2
−2
−4 x0
0 0.5 1 1.5 2 2.5 3
x
F IGURE 12 – Représentation des premières itérations avec la méthode de la bisection pour f (x) = x 2 − 4.
On peut montrer que cette méthode possède une convergence linéaire : si ǫk = |x̄ − xk |
est l’écart à la k-ième itération entre xk et la racine x∞ , alors en moyenne ǫk+1 = c ǫk ,
où 0 < c < 1 est une constante.
26
5.2 Méthode de la “Regula falsi”
Lorsque la fonction f (x) peut être approximée par une droite dans le voisinage de sa
racine, alors la convergence peut généralement être accélérée en effectuant une inter-
polation linéaire au lieu de prendre le point milieu. Cela conduit à la méthode de la
Regula Falsi ou des parties proportionnelles.
x1
4
2
f(x)
0
x
x3 ∞
−2 x2
−4 x0
0 0.5 1 1.5 2 2.5 3
x
F IGURE 13 – Représentation des premières itérations de la méthode de la Regula falsi pour f (x) = x 2 − 4.
Exemple : Le tableau ci-dessous illustre les premières itérations pour le cas où f (x) =
x 2 − 4.
27
itération intervalle nlle valeur erreur
k [a, b] xk+2 |ǫk+2 |
0 [0.5000, 3.0000] 1.5714 0.42857
1 [1.5714, 3.0000] 1.9062 0.09375
2 [1.9062, 3.0000] 1.9809 0.01911
3 [1.9809, 3.0000] 1.9962 0.00384
4 [1.9962, 3.0000] 1.9992 0.00077
etc
Voici un exemple de code Scilab qui estime la racine d’une fonction (dont l’expres-
sion analytique est connue) par la méthode de la Regula falsi.
1 function [ x2 ] = regulafalsi(f ,x0 ,x1 , epsilon )
2
Il faut ensuite définir séparément la fonction à étudier. Par exemple, pour f (x) = e −x +
x/5 − 1, on prend
28
et pour lancer la recherche de racines dans l’intervalle [0, 10] il faut écrire dans la
console
z = regulafalsi(racine,0,10,1e-6);
Cette méthode est très proche de la précédente. Toutefois, au lieu de prendre à chaque
itération l’intervalle qui encadre la racine, on définit le nouvel intervalle à partir des
deux dernières valeurs.
x1
4
2
f(x)
0
x
x3 ∞
−2 x2
−4 x0
0 0.5 1 1.5 2 2.5 3
x
Exemple : Le tableau ci-dessous illustre les premières itérations pour le cas où f (x) =
x 2 − 4.
29
itération intervalle nlle valeur erreur
k [xk , xk+1 ] xk+2 |ǫk+2 |
0 [0.5000, 3.0000] 1.5714 0.42857
1 [3.0000, 1.5714] 1.9062 0.09375
2 [1.5714, 1.9062] 2.0116 0.01155
3 [1.9062, 2.0116] 1.9997 0.00028
etc
soit
f (x)
δ=−
f ′ (x)
ce qui donne enfin la suite
f (xk )
xk+1 = xk −
f ′ (xk )
30
x0
20
15
f(x)
10
5 x1
x∞x2
0
Voici un exemple de code Scilab qui estime la racine d’une fonction (dont l’expres-
sion analytique ainsi que celle de la dérivée sont connues) par la méthode de Newton.
1 function [ x1 ] = newton (f ,x0 , epsilon )
2
31
Il est ipportant que la fonction à analyser restitue à la fois la valeur f (x) et la dérivée
f ′ (x). Par exemple
1 1
0.5 0.5
f(x)
0 0
−0.5 −0.5
−1 −1
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x x
1 1
0.5 0.5
f(x)
0 0
−0.5 −0.5
−1 −1
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x x
F IGURE 16 – Quelques fonctions pour lesquelles la recherche des racines risque de poser des problèmes
si l’intervalle de recherche initial et la méthode ne sont pas soigneusement choisis.
32
Avant de rechercher les racines d’une fonction, il est indispensable de vi-
sualiser cette fonction.
Dans le doute, mieux vaut opter pour une méthode dont la convergence
est lente mais sûre. Avec la méthode de la bisection, on est assuré de voir
l’intervalle se réduire de moitié à chaque itération, ce qui n’est pas le cas
avec les autres méthodes.
La convergence sera d’autant meilleure que la fonction pourra être ap-
proximée par une droite (méthode de la sécante ou de la Regula falsi) dans
le voisinage de la racine. La méthode de Newton permet de converger plus
rapidement lorsque l’expression de la dérivée première est connue.
La meilleure stratégie consiste généralement à démarrer par une mé-
thode lente mais sûre (bisection) pour ensuite accélérer la convergence
dans le voisinage de la racine avec une méthode de Newton.
6.1 Exemple
33
limité de la solution (en supposant que celle-ci soit suffisamment continue) pour dé-
terminer la valeur que prend le courant à un instant ultérieur t0 + δt,
d I (t0 ) 1 2 d 2 I (t0 )
I (t0 + δt) = I (t0 ) + δt + δt +...
dt 2 dt2
d I (t0 )
= I (t0 ) + δt + O (δt 2 )
d t
= I (t0 ) + δt f I (t0 ), t0 + O (δt 2 )
¡ ¢
Avec un pas de temps δt suffisamment petit, on peut donc approximer la valeur que
prend le courant au temps t0 + δt. Or l’opération peut maintenant être répétée en t =
t0 + δt puisque la valeur de la dérivée première en ce point peut être calculée. Cela
nous permet de passer au point t = t0 + 2δt, et ainsi de suite. La méthode d’intégration
consiste donc à estimer les valeurs successives de I (t) en procédant par petits pas de
temps.
y0
y(t)
dt
sol. exacte
t0 t0+dt t0+2*dt t0+3*dt t0+4*dt t0+5*dt t0+6*dt
t
2
0
y(t)
−1 sol. exacte
−2 dt=0.1
dt=0.5 dt=1
−3 dt=1 dt=0.5
dt=2 dt=0.25
dt=0.1
−4
0 1 2 3 4
t
Un grand pas implique un nombre réduit d’opérations de calcul, mais entraîne en re-
tour une plus grande erreur. Un pas petit améliore la précision des résultats, au prix
34
d’un temps de calcul plus élevé. Un pas trop petit risque d’amplifier les erreurs de tron-
cature. Il existe donc un pas idéal, qui peut éventuellement varier au cours du temps.
Nous verrons qu’il existe divers algorithmes pour traiter ce genre de problème.
Les méthodes d’Euler sont les plus simples pour intégrer une équation différentielle.
Cependant, ces méthodes sont rarement utilisées en raison de manque de précision et
de leur instabilité. Nous avons au départ
½ ′ ¡ ¢
y (t) = f y(t), t
y(t0 ) = y 0
Discrétisons d’abord le temps en prenant des pas de même durée h : tk = t0 + kh. Po-
sons pour simplifier y(tk ) = y k . Il s’agit désormais de trouver la suite {y k } définie par
′
y (tk ) = f (y k , tk )
y(t0 ) = y 0
tk = t0 + kh
Exprimons la dérivée de y(t) par une différence finie (cf. chapitre 3). Cela conduit à
trois expressions différentes suivant qu’on prend la différence avant, arrière ou centrée.
Chacune possède des propriétés différentes.
y k+1 − y k
y ′ (tk ) = + O (h) différence avant
h
y k − y k−1
y ′ (tk ) = + O (h) différence arrière
h
y k+1 − y k−1
y ′ (tk ) = + O (h 2 ) différence centrée
2h
• La méthode d’Euler explicite s’obtient en prenant la différence avant. Cela donne
une équation simple à résoudre en y k+1
y k+1 = y k + h f (y k , tk ) + O (h 2 )
Cette méthode, quoique simple, est peu utilisée. D’abord, elle est relativement
peu précise. Mais surtout, elle est instable puisque l’erreur a généralement ten-
dance à croître. Cette instabilité, illustrée dans la figure 18, peut survenir même
si le pas h est très petit.
• La méthode d’Euler implicite s’obtient en prenant la différence arrière. Cela
donne une équation plus difficile à résoudre en y k
y k − h f (y k , tk ) = y k−1 + O (h 2 )
Cette équation n’admet pas toujours de solution analytique, ce qui est un sérieux
handicap. En revanche, la méthode est stable puisque l’erreur n’a plus tendance
à croître indéfiniment.
35
F IGURE 18 – Illustration d’un schéma d’intégration instable. L’erreur (= écart entre y(t ) et y k ) croît pro-
gressivement et finit pas envahir complètement.
• La méthode d’Euler centrée, quoique plus précise, est peu utilisée car à chaque
pas de temps il faut gérer à la fois y k+1 , y k et y k−1 :
y k+1 = y k−1 + 2h f (y k , tk ) + O (h 3 )
La figure 19 illustre l’intégration d’une équation différentielle par différentes mé-
thodes, pour deux valeurs du pas h.
h=0.2 h=0.05
1.4 1.4
o Euler explicite
1.3 + Euler implicite 1.3
. Runge−Kutta 2
1.2 1.2
f
1.1 1.1
1 1
F IGURE 19 – Résultat de l’intégration de l’équation y ′ (t ) = 1 + t − y(t ) avec y(0) = 1 par les méthodes
d’Euler explicite, Euler implicite et de Runge-Kutta d’ordre 2. Les pas sont respectivement h = 0.2 (figure
de gauche) et h = 0.05 (figure de droite). Le trait continu représente la solution exacte y(t ) = e −t + t .
36
L’étude de la stabilité d’une méthode est une tâche complexe. L’exemple suivant per-
met cependant d’illustrer l’origine des instabilités. Intégrons l’équation y ′ = −y avec la
condition initiale y 0 = 1.
y k+1 = y k − hy k ⇒ y k = (1 − h)k y 0
Cette suite converge à condition que |1 − h| < 1. Cela implique soit h > 0 (tou-
jours vrai) soit h < 2. Il n’est donc pas possible de choisir des pas h arbitrairement
grands, sous risque de voir la suite diverger.
2. Avec la méthode d’Euler implicite, on obtient
La stabilité est ici vérifiée pour tout h > 0. Plus généralement, on peut montrer
que la méthode d’Euler implicite est toujours stable.
3. Avec la méthode d’Euler centrée, on obtient
Les méthodes de Runge-Kutta sont couramment utilisées car elles allient précision,
stabilité et simplicité. Toutes nécessitent plusieurs itérations pour effectuer un pas.
La méthode de Runge-Kutta d’ordre 2 est la plus simple ; elle combine deux itérations
successives de la méthode d’Euler explicite. Dans un premier temps la dérivée en
(tk , y k ) est évaluée pour faire une première estimation du point suivant (noté A dans la
figure 20). L’estimation provisoire de y k+1 en ce point est ensuite utilisée pour affiner
la calcul de la dérivée. Une nouvelle approximation de celle-ci est obtenue en prenant
sa valeur à mi-parcours (prise au point B). C’est cette valeur de la dérivée qui sera en-
suite utilisée pour estimer le prochain pas y k+1 (point C). La procédure d’intégration
se résume à
α = h f (y
µ k , tk )
α h
¶
β = h f y k + , tk +
2 2
3
y k+1 = y k + β + O (h )
Même si cette méthode demande deux fois plus opérations de calcul que la méthode
d’Euler explicite pour effectuer un seul pas, le résultat est plus précis et plus stable.
37
F IGURE 20 – Principe de fonctionnement de la méthode de Runge-Kutta du second ordre pour effectuer
un seul pas. Le lettres réfèrent au texte.
α = h f (y
µ k , tk )
α h
¶
β = h f y k + , tk +
2 2¶
β
µ
h
γ = h f y k + , tk +
¡ 2 2¢
δ = h f y k + γ, tk + h
1
y k+1 = y k + (α + 2β + 2γ + δ) + O (h 5 )
6
38
Le code suivant décrit un exemple d’intégration par la méthode de Runge-Kutta
d’ordre 2. La fonction à intégrer est définie par integrand.
1 function [y ,t ] = rungekutta2( t0 , tn ,h , y0 )
2
3 // t0 : temps initial
4 // tn : temps final
5 // h : pas de temps
6 // y0 : conditions initiales ( vecteur )
7 // y : solution ( une colonne par variable )
8 // t : vecteur temps correspondant
9
17 for i =1: n -1
18 t(i +1) = t( i) + h;
19 delta1 = h* integrand (t (i ), y(i ,:));
20 delta2 = h* integrand (t (i )+ h /2 , y (i ,:)+ delta1 /2);
21 y(i +1 ,:) = y(i ,:) + delta2 ;
22 end
23 endfunction
24
Le choix du pas est un point essentiel. S’il est trop grand, la méthode choisie, aussi
bonne soit-elle, donnera des résultats erronés (cf. figure 21). Si le pas est trop petit, on
perdra du temps de calcul et on risquera d’être affecté par des erreurs d’arrondi. D’où
les règles générales
39
. Euler h=1 + Euler h=0.5 o Runge−Kutta 2 h=1
2
f 0 f(x)
−1
−2
0 2 4 6 8 10
t
F IGURE 21 – Intégration d’une équation différentielle dont la solution est y(t ) = sin(2πt /5). Cette équa-
tion a délibérément été intégrée avec des pas trop grands pour en montrer les conséquences. Les mé-
thodes utilisées sont : Euler explicite avec un pas de h = 1 (points), Euler explicite avec un pas de h = 0.5
(croix), et Runge-Kutta d’ordre 2 avec un pas de h = 1.
Le problème de l’intégration des équations différentielles est fait encore l’objet de re-
cherches intensives. Une solution intéressante consiste à adapter le pas h à l’allure de
la fonction y(t) pour gagner du temps. Lorsque la fonction y(t) est régulière avec ses
dérivées d’ordre > 2 sont petites, alors on peut se contenter de choisir un pas élevé, qui
sera progressivement réduit dans le voisinage de brusques variations de y(t).
Les méthodes de Runge-Kutta peuvent aussi aisément se généraliser à la résolution
d’équations différentielles d’ordre supérieur à 1.
40
Plus généralement, toute équation différentielle différentielle d’ordre N
dN f d N −1 f d N −2 f df
+ a N (x) + a N −1 (x) + · · · + a 2 (x) + a 1 (x) f (x) + a 0 (x) = 0
d xN d x N −1 d x N −2 dx
peut être transformé en un système de N équations différentielles d’ordre 1, moyen-
nant la création de N − 1 nouvelles variables
d
f (x) = u1 (x)
dx
d2
f (x) = u2 (x)
d x2
d3
f (x) = u3 (x)
d x3
..
.
d N −1
f (x) = u N −1 (x)
d x N −1
dN
f (x) = −a N (x)u N −1 (x) − a N −1 (x)u N −2 (x) − · · · − a 2 (x)u1 (x) − a 1 (x) f (x) − a 0 (x)
d xN
deviennent alors
L’intégration est plus difficile lorsque le problème est spécifié par des conditions de
bord (ou aux limites) et non par des conditions initiales. Par exemple, le problème
d2
d x2
f (x) + ddx f (x) + g (x) = 0 possède des conditions initiales si f (0) = a, ddx f (x = 0) = b,
car il suffit d’intégrer depuis x = 0. On parlera au contraire de conditions de bord si
f (0) = a, f (x = 1) = b.
Il existe plusieurs stratégies pour intégrer de tels problèmes. L’une consiste à recourir
aux éléments finis (au programme de master). Une autre stratégie consiste à remplacer
les conditions initiales manquantes par des valeurs estimées, puis à intégrer l’équation
jusqu’à ce que la solution atteigne le bord. En fonction de l’écart observé entre la va-
leur finale de la solution et la condition de bord imposée, on corrigera la solution en
adaptant ses conditions initiales. Ceci s’apparente à la correction qu’un tireur applique
à l’angle de tir lorsqu’il souhaite atteindre sa cible ; c’est la raison pour laquelle la mé-
thode porte le nom de méthode du tir.
41
Exemple : Une équation différentielle doit être intégrée de xi à x f . Le conditions de
bord imposées sont ½
f (xi ) = f i
f (x f ) = f f
Soit, a (1) la valeur initiale de la condition de bord manquante ; par exemple f ′ (xi ) = a (1)
s’il s’agit d’une équation d’ordre 2. L’équation est intégrée avec ces deux conditions
initiales jusqu’à l’abscisse x f pour donner en ce point f (x f ) = f f(1) . Un second essai
avec une autre condition initiale a (2) donne f (x f ) = f f(2) .
Le problème se réduit alors à une recherche de racines. Nous pouvons en effet définir
une fonction F (a) telle que
F (a (1) ) = f f(1) − f f
F (a (2) ) = f f(2) − f f
F (a (∞) ) = f f(∞) − f f = 0
où la fonction F n’est connue que pour les quelques valeurs de a (i ) . Il suffit dès lors
d’itérer à l’aide d’une méthode de recherche de racines (sécante, ou autre) jusqu’à
converger vers la racine. Toutefois, rien ne garantit que la racine existe ou soit unique.
42