Vous êtes sur la page 1sur 110

PHY-1234

INTRODUCTION
LA
PHYSIQUE NUMRIQUE

Notes de cours
par
Paul Charbonneau et David Lafrenire
Dpartement de Physique
Universit de Montral

Automne 2014

ii

iii
MINI-PRFACE
Ces notes contiennent toute la matire couverte dans le cours PHY-1234, Introduction la Physique
Numrique, lexception des lments plus techniques portant spcifiquement sur le langage de programmation utilis dans le cours, lesquels sont prsents dans des notes de laboratoire spares. Ce document
de notes et le contenu du cours dans sa forme actuelle ont t dvelopps par Paul Charbonneau, qui a
enseign le cours de 2008 2013. Je dois donc dire un gros merci Paul pour mavoir gnreusement
transmis le fruit de son excellent travail !
En terme de nouveauts pour 2014, on compte un nouveau prof ! mais aussi un nouveau langage de
programmation : Python. Effectivement le cours tait enseign avec le langage C jusqu lan dernier. Mais
en me lanant dans laventure PHY 1234, jai dcid dopter pour le langage Python, qui je crois est plus
appropri pour les fins du cours et surtout, qui vous sera plus utile de maitriser pour la suite de vos tudes
de baccalaurat, tudes suprieures, et possiblement votre futur emploi. Les principales motivations pour
ce choix de langage sont donnes la section 1.7. Donc, le principal changement par rapport au document
de notes de lan pass est que jai adapt le tout ce nouveau langage : ceci comprend une bonne rvision
de quelques sections du chapitre 1 et la conversion des diffrents exemples de codes montrs dans les notes.
Au-del de a, je nai fait que des changements mineurs. Je dois noter ici que la mise jour des notes
est un travail toujours en cours, que je continuerai au cour de la session. Pour le moment, seulement les
chapitres 1 et 2 sont complts. Je ferai des mises jour chaque fois quun autre chapitre sera complt.
Enfin, vous pouvez contribuer amliorer la qualit de ces notes et la qualit du cours en me faisant part
de tous commentaires, suggestions, critiques (en particulier constructives) : passages obscurs, diagrammes
portant confusion, manque de dtails ici, dtails superflus l, fautes de frappw ou dautographe, etc.
Merci davance !

iv

Table des matires


1 La physique numrique
1.1 La modlisation . . . . . . .
1.2 Reprsentations numriques
1.3 Les algorithmes . . . . . . .
1.4 La programmation . . . . .
1.5 Lanalyse numrique . . . .
1.6 La physique numrique . . .
1.7 Pourquoi le Python ? . . . .
1.8 Python : outils et rfrences

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

1
1
2
3
4
5
5
6
6

2 Drives, interpolation et intgration


2.1 Le dveloppement en srie de Taylor . . . . . .
2.2 Drives dune fonction . . . . . . . . . . . . .
2.2.1 Discrtisations dune fonction . . . . . .
2.2.2 Les diffrences finies . . . . . . . . . . .
2.2.3 Exemple : drive numrique de sin . .
2.2.4 Prcision, troncation et double prcision
2.3 Interpolation . . . . . . . . . . . . . . . . . . .
2.3.1 Interpolation linaire . . . . . . . . . . .
2.3.2 Interpolation dordre plus lev . . . . .
2.3.3 Interpolation versus extrapolation . . .
2.4 Intgration . . . . . . . . . . . . . . . . . . . .
2.4.1 La mthode du trapze . . . . . . . . .
2.4.2 Les rgles de Simpson . . . . . . . . . .
2.4.3 Intgration de Romberg . . . . . . . . .
2.5 Coda, en plus quune variable . . . . . . . . . .
2.5.1 Discrtisation . . . . . . . . . . . . . . .
2.5.2 Drives partielles et diffrences finies .
2.5.3 Interpolation multidimensionnelle . . . .
2.5.4 Intgrales multidimensionnelles . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

9
9
12
12
12
14
17
18
18
21
24
25
26
28
28
29
29
29
30
32

. . . .
. . . .
. . . .
Heun
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

35
35
36
36
38
39
40
41
42
44
46
46

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

3 quations diffrentielles ordinaires


3.1 Repenser F = ma . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 La mthode dEuler . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1 Euler explicite . . . . . . . . . . . . . . . . . . . . . . .
3.2.2 Euler explicite avec extrapolation linaire et mthode de
3.3 Le pendule linaire . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.1 Solution analytique . . . . . . . . . . . . . . . . . . . . .
3.3.2 Reformulation en deux quations dordre 1 . . . . . . .
3.3.3 Euler explicite, bis . . . . . . . . . . . . . . . . . . . . .
3.3.4 Euler explicite avec extrapolation linaire, bis . . . . . .
3.4 Le pendule nonlinaire . . . . . . . . . . . . . . . . . . . . . . .
3.5 Au del dEuler . . . . . . . . . . . . . . . . . . . . . . . . . . .
v

vi
4 Nonlinarit et chaos
4.1 Encore le pendule... . . .
4.2 Lespace de phase . . . . .
4.3 Le pendule amorti . . . .
4.4 Le pendule forc . . . . .
4.5 Le pendule forc et amorti
4.6 Bifurcations . . . . . . . .
4.7 Le chaos . . . . . . . . . .
4.8 Chaos 6= alatoire . . . . .

TABLE DES MATIRES

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

51
51
51
53
54
58
59
60
63

5 Monte Carlo
5.1 Nombres alatoires . . . . . . . . . . . . . . . . . . . . . .
5.2 Fonctions de distributions . . . . . . . . . . . . . . . . . .
5.3 Distributions non-uniformes . . . . . . . . . . . . . . . . .
5.3.1 Distributions exponentielles . . . . . . . . . . . . .
5.3.2 Distributions gaussiennes . . . . . . . . . . . . . .
5.4 valuation dintgrales par Monte Carlo . . . . . . . . . .
5.5 Lapproche lquilibre . . . . . . . . . . . . . . . . . . .
5.5.1 Formulation en quation diffrentielle . . . . . . .
5.5.2 Formulation Monte Carlo . . . . . . . . . . . . . .
5.6 Ralisme physique et irrversibilit . . . . . . . . . . . . .
5.6.1 Comment choisir les alternatives en modlisation ?
5.6.2 Lirrversibilit . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

67
67
69
73
73
74
75
77
79
81
83
83
83

6 Racines et optimisation
6.1 La diffraction . . . . . . . . . .
6.2 La bissection . . . . . . . . . .
6.3 La mthode de Newton . . . .
6.4 Maximisation (et minimisation)
6.5 Mthodes de grimpe . . . . . .
6.6 La grimpe stochastique . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

87
. 87
. 89
. 92
. 94
. 95
. 101

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

Chapitre 1

La physique numrique
La reprsentation mathmatique des thories physiques, et la formulation numrique des observations
et rsultats exprimentaux que ces thories cherchent expliquer, sont des concepts tellement centraux
de la physique moderne quil nous est difficile dimaginer quil puisse ou quil ait pu en tre autrement.
Cependant, cette union de fait entre les mathmatiques, la physique, lobservation et la manipulation
exprimentale est un phnomne relativement rcent dans lhistoire de ces sujets. Les historiens des sciences
la retracent au dix-septime sicle, et rsument sa gense en disant de Galile Newton. Dans son Il
Saggiatore, un ouvrage polmique publi en 1623, Galile crit :
La philosophie est crite dans ce grand livre, lunivers, perptuellement ouvert nos yeux.
Mais le livre ne peut tre lu sans en avoir dabord compris la langue et appris lire lalphabet.
Il est crit dans la langue des mathmatiques, et ses caractres sont les triangles, cercles et
autres figures gomtriques sans lesquels il est humainement impossible den comprendre un
seul mot.
Ce nest pas que la mathmatique nait pas t utilise pour dcrire (ou mme prdire) des phnomnes naturels ; dj il y plus de 2000 ans, les Babyloniens avaient dvelopp des recettes arithmriques
permettant une prdiction passablement prcise des clipses du soleil. Et au quatrime sicle, Claudius
Ptolm avait perfectionn un modle mathmatique du mouvement des plantes dune complexit et
dune prcision impressionnantes. Mais tous ces modles mathmatiques taient vus comme des outils purement descriptifs, sans ralit physique. Cest Galile qui le premier a insist sur le fait que des modles
mathmatiques bass sur lobservation et lexprimentation peuvent se proclamer physiques, dans le sens
moderne du terme. Si ce genre de considrations scientifico-philosophiques vous intresse, ne manquez pas
de vous inscrire au cours PHY-3315...

1.1

La modlisation

Nous devons tout dabord faire la distinction entre une thorie et un modle. Un exemple devrait
suffire. La trs clbre troisime loi de Newton,
F = ma ,

(1.1)

nous informe quune force agissant sur un mobile produit une acclration dans la direction de la force
applique, et de grandeur inversement proportionnelle la masse m du mobile en question. Ceci exprime
une thorie (dynamique) du mouvement acclr.
Considrons maintenant lapplication de cette thorie la chute libre dun caillou vers le sol. Travaillant
en coordonnes cartsiennes avec z pointant vers le haut, la force gravitationelle scrit,
F = mg
ez ,

(1.2)

z est un vecteur unitaire pointant dans la direction de laxe-z, m est la masse du caillou, et g = 9.8 m
o e
s2 . On en dduit que a a a
= g (
ez ), et la position dun corps relach dune hauteur z0 est donne
par la petite quation quon vous a fait mmoriser au secondaire :
a
z(t) = z0 + v0 t + t2 ,
2
27 octobre 2014

(1.3)
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

CHAPITRE 1. LA PHYSIQUE NUMRIQUE

o v0 est la vitesse initiale du corps, nulle ici pour la situation considre. Les quations (1.2)(1.3)
dfinissent un modle de la chute dun corps. Cest un modle parce qu partir de lq. (1.1) nous
avons fait certains choix arbitraires (e.g., le choix des coordonnes cartsiennes), et surtout plusieurs
approximations :
1. La gravit pointe exactement vers le bas ;
2. La gravit est suppose constante, une valeur g = 9.8 m s2 ;
3. La seule force agissant sur le corps est la gravit.
La premire approximation savre excellente, et ce mme si vous tes aux environs du Mont Everest
ou coll sur le plus sphrique de vos mononcles ; la seconde ne tient que si le corps est relche dune
hauteur beaucoup plus petite que le rayon terrestre ; et la troisime devient rapidement mauvaise ds que
le corps atteint une vitesse de quelques dizaines de mtres par secondes (ce qui ne prendra que quelques
secondes !), aprs quoi la rsistance de lair reprsente une force de grandeur comparable la gravit. La
prise en considration de cette force demanderait, au minimum, la spcification de la forme du corps, et
une connaissance de la densit et coefficient de viscosit de lair.
Un modle est donc une reprsentation approximative de la ralit, base sur des thories qui se veulent
exactes (jusqu preuve du contraire). Thories et modles nont pas ncessairement besoin dtre exprims mathmatiquement, mais depuis Galile, en physique les deux habituellement le sont. Les quations
mathmatiques dcrivant le modle peuvent tre solutionnes analytiquement, comme pour le mouvement
rectiligne uniformment acclr considr ci-dessus, mais pour un modle le moindrement complexe ces
quations doivent le plus souvent tre solutionnes numriquement sur ordinateur.

1.2

Reprsentations numriques

Sans trop entrer dans le dtail de la manire dont les ordinateurs encodent linformation dans leur
mmoire ou sur disque, il importe dexaminer un peu la reprsentation numrique des nombres, car celle-ci
peut avoir des impacts importants sur la solution de problmes physiques sur ordinateurs.
Sur la majorit des ordinateurs, la reprsentation numrique se limite deux grandes classes de nombres : les entiers et les rels. Les premiers sont presque universellement encods en mode binaire, tel
quillustr au Tableau 1.1. Chaque position dans la chaine de 0 et 1 est appele un bit, et 8 bits
forment on octet (langlicisme byte tant souvent utilis).
Table 1.1 Reprsentation binaire (32-bits) de quelques entiers bien connus
0
1
2
3
4
5
.
68
.
143
.
.

000000000000000000000000000000
000000000000000000000000000001
000000000000000000000000000010
000000000000000000000000000011
000000000000000000000000000100
000000000000000000000000000101
.
000000000000000000000001000100
.
000000000000000000000010001111
.
.

La reprsentation numrique des entiers est donc exacte, cependant larchitecture du processeur de
calcul sur votre ordinateur limite la longueur de la chaine de bits pouvant dfinir un entier, ce qui se
retrouve poser une limite suprieure sa grandeur possible. Sur un systme 32 bits, lentier le plus
grand est 231 1 (= 2147483647), sur un systme configur en 64 bits cest 263 1, etc 1 .
Les nombres rels sont galement encods en utilisant une chaine de bits, mais les bits en questions
ne sont plus une simple expression en base-2. Un nombre rel (float, pour floating-point number, en
1. Le premier bit, lextrme gauche de la chaine, est utilis pour encoder le signe de lentier, 0 , 1 +.

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

1.3. LES ALGORITHMES

anglais) est dabord gnralement (mais pas toujours) exprim comme


(1)S 1.M bEe ,

(1.4)

o S est un bit encodant le signe +/, M est la mantisse (ou la significande), b est un entier reprsentant
la base, E est lexposant encod comme un entier, et e est un entier de dcalage de lexposant ayant
une valeur pr-tablie pour une architecture donne (en gnral e 127 en mode 32-bits et e 1023 en
64-bits, ce qui est le dfaut en Python pour une variable de type float). Notez que la quasi-totalit des
architectures utilisent b 2, et, comme e, ceci est une constante pr-tablie et donc qui na pas besoin
dtre incluse explicitement dans lencodage dun nombre rel. La longueur de la chaine de bits dfinissant
la mantisse M est en gnral restreinte 23 en mode 32-bits et 52 en mode 64-bits. La mantisse est
habituellement encode en fraction binaire, cest--dire que le n-ime bit de la mantisse reprsente la valeur
2n . Chacune des chaines de bits reprsentant S, E et M sont concatnes en une seule longue chaine
de bits, S:E:M , qui est alors la reprsentation interne du nombre rel. Par exemple, en mode 32-bits la
charge lectrique lmentaire,
q = 1.602177 1019 C ,

(1.5)

pourrait sencoder comme,


S=0,
ou encore comme,

M = 602177 ,

b = 10 ,

E = 108 ,

(1.6)

S=0,

M = 4777474(53989) ,

b=2,

E = 64 .

(1.7)

Contrairement la reprsentation des entiers, la reprsentation des rels nest pas exacte car elle est
sujette une erreur darrondissement. Dans lexemple prcdent encod en base 2, nous sommes forcs
de tronquer (ou darrondir) M 7 chiffres dcimaux pour tre en mesure de lencoder dans la chane de
bits M dont la longueur est limite 23 en mode 32-bits ; les chiffres contenus dans la parenthse ci-haut
7
sont donc perdus et il en rsulte une perte de prcision un niveau relatif de <
10 . De plus, comme
lencodage de lexposant E est galement sujet une limite sur la taille de la chaine de bits le reprsentant
(8 en 32-bits, 11 en 64-bits), il existe une grandeur maximale (et minimale) aux nombres rels pouvant
tre reprsents.
Vous ferez trs bientt connaissance (si ce nest pas dj fait) avec les nombres dits complexes ; ces
derniers sont simplement reprsents comme deux rels, le second correspondant la partie imaginaire
du nombre complexe, et le premier sa partie relle.

1.3

Les algorithmes

Dans le contexte du calcul scientifique, un algorithme est une squence dtapes conduisant au calcul
numrique dune quantit dintret. Considrons par exemple lalgorithme suivant, qui sert calculer un
estim du nombre irrationnel :
1.
2.
3.
4.
5.

Initialiation : s = 0 ;
Gnrer deux nombre alatoires r1 , r2 entre zro et un ;
Si r12 + r22 1 ajouter 1 s ;
Rpter 106 fois les tapes 2 et 3 ;
= 4 s/106 .

tudiez bien la structure gnrale : on initialise les variables du problme (ici s = 0), ensuite des
groupes doprations mathmatiques ou logiques sont effectues squentiellement (tapes 2 et 3) de manire
rptes (ici un million de fois), conduisant un rsultat final (tape 5), ici un estim de . Remarquez
galement que certaines oprations (tape 3) ne sont pas effectues toutes les itrations du processus
rptitif.
Un algorithme nest ni une thorie, ni un modle dans le sens dcrit prcdemment. Cest une recette
compltement dterministe consistant en une squence dtapes excutes lune la suite de lautre. Il
existe videmment une thorie derrire cette approche plutt bizarre au calcul de , mais elle nest pas
particulirement vidente ici (elle le deviendra au chapitre 5).
2. M est ici exprim en chiffres dcimaux, mais en pratique dans la mmoire de lordinateur la significande serait encode
sous forme de fraction binaire et la chane de 23 bits correspondante serait 01111010010011011010100.

27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

CHAPITRE 1. LA PHYSIQUE NUMRIQUE

1.4

La programmation

La programmation consiste exprimer un algorithme sous une forme dchiffrable par lordinateur.
Cest habituellement un processus en trois tapes : lalgorithme est dabord crit en un langage de
programmation sujet des rgles syntaxiques spcifiques ; le code source ainsi produit est ensuite
compil ou interprt, selon le langage de programmation utilis, cest--dire traduit en instructions
spcifiques larchitecture du processeur de calcul de votre ordinateur ; et les instructions ainsi produites
sont finalement excutes. Le petit bout de code source suivant correspond une implmentation en
langage Python de notre algorithme de calcul de :
Code Python pour un calcul de PI par Monte Carlo
#Ce programme calcule un estime de la valeur de pi par Monte Carlo
#importation de fonctions ou de modules
from random import random
npt=1000000 #nombre de points aleatoires
somme=0.
for i in range(0,npt):
x=random() #un nombre aleatoire entre 0 et 1
y=random() #et un autre
if (x**2 + y**2) <= 1:
somme+=1
estimePi=4*somme/npt
print("valeur estimee de pi = {0}".format(estimePi))
Le code source est habituellement lisible par un humain familier avec le langage de programmation,
et mme si vous ne connaissez encore rien au Python vous devriez tre capable dy reconnaitre les diffrent
lments de notre algorithme. Remarquez lindentation du bloc dinstructions devant tres rptes (tapes
2 et 3 dans lalgorithme ci-dessus), et lintrieur de ce bloc, lindentation additionnelle dune ligne indiquant linstruction sujette une excution conditionnelle (tape 3 de lalgorithme). De telles indentations
sont essentielles en Python, ceci fait partie des rgles syntaxiques de ce langage de programmation ; nous
y reviendrons en labo. Notez galement que la fonction random est une fonction prdfinie que lon doit
importer partir dun module nomm random (en gnral les fonctions ne portent pas le mme nom que
le module dans lequel elles sont dfinies, mais cela peut arriver comme ici). La fonction random produit
un nombre rel alatoire dans lintervalle semi-ferm [0, 1), tel que requis pour notre algorithme. Il existe
toute une batterie de ces fonctions prdfinies travers plusieurs modules ; nous reviendrons galement
sur limportation de fonctions et de modules en labo.
Python est un langage interprt. Donc pour excuter le programme (ou script) ci-haut il faut dabords
excuter linterprte Python et lui fournir le code source, linterprte se chargera de traduire les commandes
du code source en langage machine (i.e. en instructions comprhensibles par le processeur) et de les
excuter immdiatement. Il y a plusieurs faon de faire ceci et nous les verrons... en labo ! Tout de mme,
en supposant que le code source soit contenu dans un fichier texte nomm estimePi.py, alors une faon
simple de le faire serait de taper, directement dans un terminal (LINUX/Mac) ou dans une fentre de
commande (Windows), la commande suivante :
python estimePi.py
Ceci excutera immdiatement le script. Sur mon laptop MAC cette commande produit, aprs environ
0.6 seconde, la sortie suivante :
valeur estimee de pi = 3.142452
ce qui approxime bien (= 3.1415926536...) 0.04% prs. Comme vous pouvez certainement limaginer,
un algorithme donn peut sexprimer de diffrentes manires mme si crit dans le mme langage de
programmation. Cest comme au primaire, quand on vous demandait une production crite de 10 lignes
sur Le Brontosaure ; votre texte pouvait bien dire essentiellement la mme chose que celui dun(e) de
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

1.5. LANALYSE NUMRIQUE

vos petit(e) camarade, mais son style tait assurmement diffrent, et certains styles se lisent mieux que
dautres. Il y a galement des styles en programmation, qui souvent visent un compromis entre la lisibilit
du code source, la modularit, et la vitesse dexcution du code une fois compil. Par exemple, le code
suivant produit exactement la mme sortie que le prcdent en seulement 0.035 seconde, mais pour un(e)
dbutant(e) est un peu plus opaque :
Code Python pour un calcul de PI par Monte Carlo
#Ce programme calcule un estime de la valeur de pi par Monte Carlo
import numpy as np
npt=1000000
estimePi=4*np.mean(((np.random.random(npt)**2+np.random.random(npt)**2) <= 1))
print("valeur estimee de pi = {0}".format(estimePi))
Personnellement, cest plutt comme a que jaurais tendance coder lalgorithme (quoique jy ajouterais certainement quelques explications en commentaires). Comme en littrature ou en musique, le got
personnel y est galement pour quelque chose. Nous aurons loccasion de revenir sur les questions stylistiques au fil des chapitres qui suivent, lorsque nous discuterons les bouts de code Python implmentant
les divers algorithmes que nous tudierons. Au niveau du ligne-par-ligne, le calcul scientifique revient
souvent encoder, utilisant les rgles syntaxiques du langage utilis, des quations mathmatiques exprimant des lois physiques 3 . Tout les oprateurs arithmtiques de base y trouvent leur pendant, parfois
direct, comme les symboles + et pour les addition et soustraction, parfois via un symbole diffrent,
comme, en Python, lutilisation du pour la multiplication, le / pour la division, et le **" pour
lexponentiation.
Un symbole mathmatique pratique et bien connu, le =, mrite une brve discussion ici ; en programmation Python (ainsi que dans bien dautres langages de programmation), cet oprateur est unidirectionnel
et indique une assignation, plutt quune galit : b=a veut dire que la valeur de la variable a (ou plus
prcisment, le contenu du registre de mmoire assign a) est copi la variable (registre mmoire
associ ) b ; pour faire le contraire if faut crire a=b. Cest pourquoi en Python, linstruction s=s+1 est
tout fait lgale et approprie, bien quelle fasse hurler de rage la plupart des mathmaticiens puristes,
qui y voient un non-sens arithmtique absolu (effectivement, 0 = 1 !). Pour leur faire plaisir, le langage
Python inclut un oprateur += tel que s+=1 veut dire s=s+1 ; et similairement pour les oprateurs -=,
*=, etc.

1.5

Lanalyse numrique

Lanalyse numrique est une branche des mathmatiques ddie lanalyse mathmatique de diverses
proprits importantes des algorithmes : prcision, taux de convergence, stabilit, etc. Cest un sujet
immense, que nous ferons queffleurer occasionnellement dans ce cours. Dans notre exemple du calcul
dun estim de , lanalyse numrique nous permettrait (entre autre) de prdire le nombre ditrations
requises du processus de calcul de pour atteindre un niveau de prcision spcifi a priori pour notre
estim. Plusieurs cours sont offerts sur le sujet au dpartement de mathmatique, et si vous vous mettez
srieusement la simulation numrique en physique, vous aurez intrt approfondir ce sujet.

1.6

La physique numrique

Quest-ce donc que la physique numrique ? On a lhabitude de compartimenter la physique en


blocs associs des thories comme llectromagntisme, la relativit, la mcanique quantique, la
thermodynamique, etc. Cette tendance est par ailleurs trs fortement reflte dans la structure de cours
de votre Bac en physique ! La physique numrique ne cadre pas trs bien dans cette structure, puisquelle
consiste plutt en une approche la formulation des problmes physiques, et leur solution. Tout ceci
peut vous paraitre sotrique ce stade, mais dici la fin du cours vous devriez avoir saisi de quoi il en
ressort.
3. Le tout premier langage de programmation scientifique avait dailleurs t baptis FORTRAN, pour FORmula
TRANslation.

27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

CHAPITRE 1. LA PHYSIQUE NUMRIQUE

1.7

Pourquoi le Python ?

Python est un langage de programmation gnrale de haut-niveau cr par Guido van Rossum en
1989 ; il tire son nom de la srie tlvise Monty Python dont lauteur tait adepte. Dans le cadre du cours
PHY 1234, le choix de ce langage est motiv principalement par les lments suivants :
Python est gratuit et est directement portable sur la plupart des plates-formes informatiques (Mac
OS X, Windows, Linux).
Python est un langage trs moderne la popularit grandissante, autant dans la communaut
scientifique, dans lindustrie, que chez les enthousiastes de linformatique.
Python est facile apprendre et trs bien adapt pour une introduction la programmation informatique. Sans tre une bote noire, il permet de parvenir plus rapidement excuter des tches
complexes dans divers domaines.
Python favorise une bonne lisibilit du code, et sa syntaxe, simple, permet dexprimer des concepts
en moins de lignes de code quil ne le serait possible dans dautres langages tels que le C.
Python jouit dune trs grande bibliothque de modules fournissant des outils pour accomplir efficacement des tches dans divers contextes (calculs scientifiques/statistiques, analyse de donnes, production de graphiques/animations, cration dinterfaces graphiques, production de contenu HTML,
traitement vido/audio, etc.).
Python peut tre utilis en mode interactif.
Python supporte autant la programmation structure que la programmation oriente objet.
Python est trs facile combiner avec dautres langages de programmation, comme Fortran, C,
C++, Java, etc.
Pour plus dinformation sur le langage Python, vous pouvez consulter le site web python.org, ou encore
son entre Wikipdia. Notez que bien que nous utilisions Python pour les fins de ce cours, vous apprendrez
dabords et avant tout la logique de la programmation informatique ainsi que les principaux lments et
concepts propres la programmation dans tous langages. Vous serez donc en mesure dapprendre plus
rapidement plusieurs autres langages de programmation lorsque le besoin se fera sentir. Ceci tant dit, je
vous garanti que vous adorerez Python et que vous le rutiliserez tout au long de votre baccalaurat, et
mme aprs.
Un dernier commentaire sur le choix du langage, ou plus prcisment sur la version de Python que
nous utiliserons. La 3e version de Python, Python 3, a t introduite en 2008 et reprsente un changement
majeur par rapport la version prcdente, Python 2. Notamment, certaines fonctions de la librairie de
base et dautres aspects du langage ont t modifis de sorte que Python 3 nest pas rtrocompatible
avec Python 2, cest--dire quun script compos selon les normes et fonctions de Python 2 ne pourra tre
compris et excut par linterprte de Python 3, et vice-versa. Plusieurs personnes ayant construit au fil du
temps une banque de scripts personnels continuent donc encore aujourdhui travailler et dvelopper de
nouveaux programmes avec Python 2 plutt que Python 3. Cependant, pour quelquun qui se lance dans
la programmation en Python, sans exprience pralable, lutilisation de Python 3 mapparait un meilleur
choix. Dailleurs de plus en plus dutilisateurs chevronns de Python dcident maintenant de faire le saut
vers la version 3, et on peut supposer que cette version dominera le paysage sous peu.
Bon, un dernier dernier commentaire et je marrte l-dessus. Mme sil est utile et puissant pour le
calcul scientifique, Python, comme la plupart des langages interprts, nest pas le langage de choix pour
effectuer des calculs de haute-performance" o la rapidit dexcution doit primer. Pour de tels calculs,
des langages comme le C ou le Fortran sont plus appropris.

1.8

Python : outils et rfrences

Lapproche utilise dans ce cours sera dapprendre les bases de la programmation sur le tas, et
mon humble avis votre meilleur outil de rfrence en cas de problme sera Google ! Allez-y, tapez
simplement vos questions dans Google ! Et je vous encourage formuler vos recherches en anglais, si vous
le maitrisez raisonnablement, car ceci augmentera vos chances de tomber sur la rponse recherche. Dans
le mme genre, il y a Stack Overflow (http://stackoverflow.com), un site de questions-et-rponses pour
programmeurs professionnels et enthousiastes. Cest gnralement sur ce site que je trouve moi-mme la
rponse mes questions.
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

1.8. PYTHON : OUTILS ET RFRENCES

Quand mme, un bon livre de rfrence vous sera certainement utile. En anglais, je vous recommande
fortement :
Langtangen, H.P., A Primer on Scientific Programming with Python, 3e ou 4e d., Springer (2012
2014).
Il sagit dun livre trs bien construit et fort appropri pour des tudiants en physique. Dailleurs,
plusieurs exemples sont bass sur des problmes de nature physique. Lemphase est mise sur le comment penser comme un programmeur" et sur lutilisation de la programmation comme outil pour rsoudre des problmes. Au-del de lenseignement de Python, ce livre traite aussi de plusieurs sujets
que nous verrons dans le cours. Notez que la 3e dition est offerte gratuitement en format PDF
http://link.springer.com/book/10.1007/978-3-642-30293-0, donc il ny a aucune raison de vous
en passer.
La rfrence classique pour le langage Python, mais pas ncessairement la meilleure pour ce cours,
est :
Lutz, M., Learning Python, 5e d., OReilly Media (2013).
Dautres livres dintroduction sont suggrs https://wiki.python.org/moin/IntroductoryBooks.
Il existe peu douvrages en franais, du moins ma connaissance (limite), mais le suivant est intressant, et de surcroit il est gratuit ! Donc procurez-vous le.
Cordeau, B. & Pointal, L., Une introduction Python 3, version 1.61b, disponible http://perso.
limsi.fr/pointal/python:courspython3.
Il existe aussi plusieurs tutoriels. Je vous encourage visiter le tutoriel de Python 3 offert par python.
org, disponible https://docs.python.org/3/tutorial/. Un outil particulirement intressant est
le Python tutor (http://www.pythontutor.com), qui montre de faon interactive et illustre ce qui se
produit lors de lexcution dun script en Python.
Certaines ressources en franais pour Python sont compiles sur le site https://wiki.python.org/
moin/FrenchLanguage, vous pouvez y jeter un coup doeil. Notamment, un tutoriel dintroduction
Python en franais est offert par luniversit de Waterloo (http://cscircles.cemc.uwaterloo.ca/
0-fr/).
Dans le cours, nous aurons souvent recours aux modules NumPy, SciPy et NumPy, qui fournissent plusieurs outils et fonctions pour les calculs numriques et scientifiques et la production de figures. Des
manuels dutilisation et de rfrence pour ces modules sont disponibles http://scipy.org/docs.html,
et des tutoriels sont disponibles http://wiki.scipy.org/Tentative_NumPy_Tutorial, http://docs.
scipy.org/doc/scipy/reference/tutorial/index.html, et http://www.loria.fr/~rougier/teaching/
matplotlib/.
Sur ce, je vous souhaite un bon apprentissage de Python !
Exercices:
1. Dterminez les valeurs de S, M et E encodant le nombre = 3.1415926536..., en mode 32-bits
avec b = 2 et e = 127.
2. Calculez le plus grand et le plus petit rel positif pouvant tre encod selon lq. (1.4), en mode
32-bits et 64 bits.
3. Codez le premier code prsent dans ce chapitre pour calculer , et dterminez le nombre ditrations requises pour obtenir un estim de prcis 106 .

Bibliographie:
Les notes que vous avez/aurez en main contiennent toute la matire qui sera couverte en PHY-1234.
moins dtre dj absolument et totalement convaincu(e) que vous ne toucherez plus au calcul scientifique
de votre vie (ce qui risque de fort limiter vos options de carrire, soit dit en passant...), vous devriez
considrer lachat du bouquin :
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

CHAPITRE 1. LA PHYSIQUE NUMRIQUE

Press, W.H., Teukolsky, S.A., Vetterling, W.T., & Flannery, B.P., Numerical Recipes : the Art of
Scientific Computing, Cambridge University Press (19922007)
Ce sera fort probablement le premier et dernier dans lequel vous aurez investir sur ce sujet. Plusieurs
versions du bouquin existent, et ne varient quau niveau du langage de programmation utilis. Dans la
troisime dition (2007) les auteurs ont opt pour le langage C++, un langage bas pour le C mais incluant
des fonctionalits additionnelles au niveau de la programmation dite oriente objet. Mais bon, lessentiel demeure la prsentation des algorithmes, qui peuvent ensuite tre programms dans nimporte quel
langage. Cet ouvrage demeure galement ingal ( mon avis) dans lquilibre quil atteint entre lanalyse
numrique, la conception dalgorithmes simples et robustes, et les bonnes habitudes de programmation.
Plusieurs ouvrages, traitant spcifiquement de modlisation numrique en physique ont t crits et
les meilleurs souvent rdits au fil des annes. Parmi ces grands classiques, louvrage suivant demeure
recommandable :
Gould, H., & Tobochnik, J., An Introduction to Computer Simulation Methods, 3e d., Addison-Wesley
(2006).
Mme si la troisime dition est relativement rcente, bien des points de vue elle conserve la saveur de
ldition originale. un niveau physique et mathmatique plus avanc que celui de ce cours, jaime bien :
Pang, T., An Introduction to Computational Physics, 2e d., Cambridge University Press (2006).

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

Chapitre 2

Drives, interpolation et intgration


Dans ce chapitre et deux autres venir, nous allons voir comment effectuer numriquement sur ordinateur la srie de grandes manoeuvres mathmatiques quon vous a appris en calcul intgral et diffrentiel :
calculer des drives et intgrales (ce chapitre), solutionner des quations diffrentielles simples (chapitre
suivant), et trouver les zros et extrema dune fonction (chapitre 6).
Nous devrons en fait dabord discuter le contexte mathmatique qui est la base du calcul numrique
des drives et intgrales, soit le dveloppement en srie de Taylor (2.1). Nous examinerons ensuite
le processus de discrtisation dune fonction, pour en arriver au calcul de formules dites de diffrences
finies pour le calcul numrique des drives (2.2). Nous examinerons ensuite linterpolation (2.3), ce
qui paraitra tre un dtour mais nous fournira une base solide pour passer au calcul numrique des
intgrales (2.4). Nous concluerons en gnralisant toutes ces grandes manoeuvres aux fonctions de plus
dune variable (2.5).

2.1

Le dveloppement en srie de Taylor

On vous a appris au CEGEP (ou peut-tre mme avant) que la drive dune fonction f (x) value
x = x0 correponds la pente dune droite tangente f (x) au point x0 . Mathmatiquement, ceci revient
crire :
df (x)
f (x0 + x) f (x0 )
= lim
dx x0 x0
x

(2.1)

avec x x x0 . Comme lillustre la Figure 2.1, lutilisation de lquation (2.1) avec un x de taille
finie produira une erreur sur le calcul de la pente, qui cependant samenuise mesure que x devient de
plus en plus petit.
On ne vous la pas appris comme a lpoque, mais lquation (2.1) rsulte en fait dune troncation
dun dveloppement plus gnral, dit en srie de Taylor, dune fonction continue f (x) dans les environs
de x0 :



df
(x)2 d2 f
(x)3 d3 f
f (x0 + x) = f (x0 ) + (x) +
+
+ ...
dx x0
2! dx2 x0
3! dx3 x0

= f (x0 ) +

X
(x)n dn f
,
n! dxn
n=1

(2.2)

o n! est la fonction factorielle, dfinie comme :


n! n (n 1) (n 2) ... 2 1 .

(2.3)

La Figure 2.2 illustre lide gnrale dun tel dveloppement. La fonction dveloppe est ici un polynme
quartique de la forme :
f (x) = 1 + x4 .
27 octobre 2014

(2.4)
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

10

CHAPITRE 2. DRIVES, INTERPOLATION ET INTGRATION

Figure 2.1 La drive comme un procesuss de calcul de pente dans la limite x 0. Plus x est
petit, plus la droite passant par x et x + x a une pente se rapprochant de la tangente f (x) au point
x0 (droite en tirets).
Les quatre autres courbes rsultent de lutilisation du dveloppement (2.2), en ne conservant que 1, 2,
3 ou 4 termes, tel quindiqu sur la Figure. Ne conserver que le premier terme revient dire que f (x)
assume une valeur constante :
f (x0 + x) = 1 + x40 .

(2.5)

Conserver les deux premier termes conduit :


f (x0 + x) = 1 + x40 + 4(x)x30 ,

(2.6)

tandis que conserver trois ou quatre termes donne :


f (x0 + x) = 1 + x40 + 4(x)x30 + 6(x)2 x20 ,

(2.7)

f (x0 + x) = 1 + x40 + 4(x)x30 + 6(x)2 x20 + 4(x)3 x0 .

(2.8)

Examinez bien la Figure 2.2, pour vous convaincre que le dveloppement devient de plus en plus prcis
mesure que le nombre de termes retenus dans le dveloppement augmente, ou que lintervalle x diminue.
Remarquez galement quune fois les drives values, le dveloppement se retrouve prendre la forme
dun polynme en puissances de x.
La prcision du dveloppement peut videmment tre amliore en subdivisant lintervalle x en souspas, et en revaluant les drives au membre de droite de (2.2) aprs chaque sous-pas. Un exemple est
prsent la Figure 2.3, toujours pour notre polynme quartique. Comparant cette Figure la Fig. 2.2,
notez comment la prcision de lestim de f (x0 +2x) dordre n est comparable celui de lestim dordre
n + 1 quand le pas est deux fois plus grand.
Si x 0, chaque terme successif au membre de droite de lq. (2.2) est plus petit que le prcdent
par un facteur x, donc si x  1 on peut sattendre ce que le dveloppement soit domin par les
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

11

2.1. LE DVELOPPEMENT EN SRIE DE TAYLOR

Figure 2.2 Dveloppement en srie de Taylor dun polynme quartique (trait noir), en ne conservant
quun, deux, trois ou quatre termes dans le dveloppement, tel quindiqu. Le dveloppement devient
de plus en plus prcis mesure que le pas x diminue, et/ou le nombre de termes conservs dans le
dveloppement augmente.

quelques premiers termes, et je vous laisse vrifier que lquation (2.1) est obtenue en ne conservant que
les deux premiers.
Croyez-le ou non, mais dans vos cours de physique au secondaire vous avez dj fait connaissance avec
un dveloppement en srie de Taylor, tronqu au second terme. Dans le mouvement rectiligne uniformment acclr, la position x(t) dun mobile au temps t est donn par :
1
x(t) = x0 + v0 t + at2 ,
2

(2.9)

o x0 et v0 sont les position et vitesse au temps t = 0. Puisque


v=

dx
,
dt

a=

dv
d2 x
= 2 ,
dt
dt

(2.10)

lq. (2.9) peut scrire comme :




t2 d2 x
dx
x(t) = x0 + t
+
.
dt t=0
2 dt2 t=0

(2.11)

Associez maintenant x t, x t t0 , et f x, et comparez leq. (2.2) !


Le dveloppement en srie de Taylor apparaitra de manire rcurrente dans les chapitres qui suivent.
Pour linstant, nous nous limiterons la situation suivante : on cherche valuer de manire discrte les
drives dune fonction continue dune variable f (x). On suppose que cette fonction est calculable pour
tout x, mais a une forme telle quil nous est impossible den calculer la drive analytiquement.
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

12

CHAPITRE 2. DRIVES, INTERPOLATION ET INTGRATION

Figure 2.3 Semblable la Figure 2.2, sauf que le pas x est subdivis en deux, et les drives apparaissant dans le dveloppement revalues la position x0 + x pour obtenir un estim final x0 + 2x.

2.2
2.2.1

Drives dune fonction


Discrtisations dune fonction

Nous devons dabord introduire lide de la discrtisation dune fonction continue f (x), soit sa reprsentation en terme dun nombre fini de valeurs numriques, processus incontournable lorsquon cherche
obtenir une solution numrique de quoi que ce soit. Le point de dpart est la dfinition dune maille (ici
en 1D) sur laquelle f (x) est value un nombre fini de noeuds (ou points de maille) xj :
x {x1 , x2 , ..., xN },

xj+1 > xj ,

(2.12)

Un maillage est dit rgulier si les intervalles entre chaque xj successifs sont gaux :
xj+1 xj h

j.

(2.13)

Lvaluation de f (x) aux xj produit une ensemble de N valeurs de f , qui collectivement dfinissent la
discrtisation de f (x) :
fj f (xj ) ,

j = 1, 2, ..., N .

(2.14)

Cette procdure de discrtisation est illustre la Figure 2.4, pour une fonction parabolique discrtise
sur un maillage rgulier avec N = 8.

2.2.2

Les diffrences finies

Le dveloppement en srie de Taylor est la base du calcul des drives dune fonction discrtise. Par
exemple, en tronquant tous les termes au membre de droite de lq. (2.2) sauf les deux premiers, on peut
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

13

2.2. DRIVES DUNE FONCTION

Figure 2.4 Discrtisation dune fonction parabolique sur un maillage rgulier, avec N = 8. Plus N est
grand, plus la discrtisation donne une reprsentation prcise de la fonction.

immdiatement obtenir une approximation pour la drive premire de la fonction discrtise f (xk ) :

df
fj+1 fj
=
+ O(h) .

dx xj
h

(2.15)

Le terme en O(h) au cot droit de cette formule de diffrences finies indique que lerreur de discrtisation y tant associe dcroit proportionnellement h ( x) dans la limite h 0, consquence
directe de notre omission ici des termes en (x)2 , (x)3 , ... dans lq. (2.2). Notez que cette approche de
troncation brute fonctionne pour la drive premire, mais ne nous permet pas de produire de formule
quivalente pour la drive seconde. Voyons comment faire mieux.
Notre point de dpart consiste tablir les deux dveloppements suivants pour f (xj h) au voisinage
de xj :
fj+1




h2 d2 f
h3 d3 f
df
f (xj+1 ) f (xj + h) = f (xj ) + h +
+
+ ...
dx xj
2! dx2 xj
3! dx3 xj

(2.16)

fj1




h2 d2 f
df
h3 d3 f
f (xj1 ) f (xj h) = f (xj ) h +

+ ...
dx xj
2! dx2 xj
3! dx3 xj

(2.17)

De nouvelles formules de diffrences finies sont obtenues par manipulations algbriques simples des
qs. (2.16)(2.17) ; par exemple, en soustrayant lquation (2.17) de (2.16) et en liminant les termes
proportionnels aux puissance de h de trois et plus, on peut isoler f /x et on obtient :

fj+1 fj1
df
=
+ O(h2 ) .
dx xj
2h
27 octobre 2014

(2.18)

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

14

CHAPITRE 2. DRIVES, INTERPOLATION ET INTGRATION

Et voil pour la drive premire. Maintenant, On peut aussi additionner les quation (2.17) et (2.16) et
isoler d2 f /dx2 , ce qui produit

fj+1 2fj + fj1
d2 f
=
+ O(h2 ) ,
(2.19)
dx2 xj
h2
Par utilisation rcursive des qs. (2.16) et (2.17) on peut ensuite obtenir des formules de diffrences finies
pour les drives dordre plus leves :

fj+2 2fj+1 + 2fj1 fj2
d3 f
+ O(h2 ) ,
(2.20)
=
3
dx
2h3
xj


d4 f

dx4

=
xj

fj+2 4fj+1 + 6f j 4fj1 + fj2


+ O(h2 ) .
h4

(2.21)

Quavons nous gagn ici ? Le terme en O(h2 ) aux cots droits des qs. (2.18)(2.19) indique que lerreur
de discrtisation associe ces formules de diffrences finies pour la drive premire dcroit maintenant
proportionnellement h2 dans la limite h 0. Ces diffrences finies sont donc dites dordre 2. En
principe la formule (2.18) calcule la mme chose que lq. (2.15), mais pour une maille donne, est en
gnral plus prcise.
Par dautres manipulations des qs. (2.16) et (2.17) et utilisation rcurrente des formules dordre
O(h) and O(h2 ) ci-dessus, on peut obtenir des formules alternatives, caractrises par des erreurs de
discrtisation dordre plus lev :

f
fj+2 + 8fj+1 8fj1 + fj2
=
+ O(h4 ) ,
(2.22)
x xj
12h

d2 f
fj+2 + 16fj+1 30fj + 16fj1 fj2
=
+ O(h4 ) .
dx2 xj
12h2

(2.23)

Les formules de diffrences finies (2.18)(2.23) sont dites centres sur le noeud xj o la drive est
value. Elles ne peuvent dont pas tre utilises sur le premier (j = 1) et dernier (j = N ) noeud de
la maille. Cependant dautres manipulation algbriques des qs. (2.16) et (2.17) peuvent produire des
formules de diffrences finies avant ou arrire. Les intress(e)s peuvent consulter les rfrences cites
en fin de chapitre.

2.2.3

Exemple : drive numrique de sin

Pour apprcier la signification de lordre de discrtisation, considrons lexemple suivant. Suite une
anne sabbatique particulirement mouvemente, vous avez compltement oubli que la drive dun sinus
est un cosinus :
d sin
= ????? ,
d

(2.24)

ce qui est excessivement problmatique dans votre cours de mcanique (entre autre), mais votre calculatrice
vous permet heureusement de calculer sin . La Figure 2.5 montre lerreur associe lutilisation des
qs. (2.15), (2.19), et (2.22), pour valuer la drive de sin (= cos ! !) k = /6. On suppose ici que
fk = sin k ,

fk1 = sin(k h) ,

fk+1 = sin(k + h) .

(2.25)

La mesure de lerreur utilise ici est




d sin

=
cos ,
d
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

(2.26)
27 octobre 2014

15

2.2. DRIVES DUNE FONCTION

Figure 2.5 Variations de lerreur de discrtisation en fonction de la taille du pas, pour lvaluation
numrique de la drive de sin = /6, utilisant les formules de diffrences finies donnes par les
qs. (2.18) (4), (2.15) () et (2.22) (). Notez bien que les deux axes sont logarithmiques, et que labscisse
est telle que h dcroit de la gauche vers la droite.
o la drive est value laide de nos trois diffrences finies pour la drive premire, soit les quations
(2.15), (2.18), et (2.22). On remarque que dans tous les cas lerreur diminue mesure que h diminue, mais
que lordre de la formule utilise dtermine le taux auquel diminue lerreur mesure que h diminue :
O(h) : h1 ,

O(h2 ) : h2 ,

O(h4 ) : h4 ,

(2.27)

puisque les axes sur la Fig. 2.5 sont logarithmiques. La figure 2.6 montre aussi lerreur associe au calcul
de la drive de sin , mais cette fois sur la plage de x allant de 0 2 et pour diffrents pas de mailles,
en utilisant la formule de lq.(2.19). On remarque ici que lerreur dpend non seulement de la taille du
pas de maille, mais aussi de la forme de la fonction driver au point x o le calcul est fait. Ici, lerreur
est minimise aux extrema de sin alors quelle est plus importante aux extrema de cos ; en fait avec la
formule utilise on peut montrer que lerreur est d3 f (x)/dx3 h2 .
Les donnes requises pour construire les courbes sur la Figure 2.5 se calculent en Python laide du code
ci-dessous (ici pour la formule O(h2 ) donne par lq. (2.18)). Ce code utilise les fonctions mathmatiques
prdfinies sin(x) et cos(x), qui sont importes du module math au dbut du code. Il en est de mme
pour la valeur de (la variable pi), qui est dfinie dans le mme module (et dans bien dautres comme
nous verrons plus tard). La fonction abs(x), calculant la valeur absolue de x, fait partie de la librairie
standard de Python et na pas besoin dtre importe. Remarquez comment, chaque itration de la
boucle, la valeur du pas spatial h utilis pour le calcul de la drive dcroit dun facteur 1.1.
Code Python pour calculer les erreurs portes en graphique la Fig. 2.5
"""
Ce programme calcule la derivee de sin(x), i.e. cos(x), par differences finies,
a une valeur de x donnee (pi/6) et pour differents pas de mailles.
"""

27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

16

CHAPITRE 2. DRIVES, INTERPOLATION ET INTGRATION

10-1

1.0

10-2

Erreur absolue

10-4
0.0
10-5
10-6

sin(x)

0.5

10-3

0.5

10-7
10-8 0

3
Angle (rad)

1.0

Figure 2.6 Variations de lerreur de discrtisation (points) pour lvaluation numrique de la drive
de sin en fonction de et de la taille du pas de maille, en utilisant la formule de diffrences finies donne
par lq. (2.15), menant une erreur h2 . Les pas de mailles sont de 2/10 (bleu), 2/50 (vert), 2/100
(rouge), et 2/1000 (turquoise). Notez bien que laxe des y est logarithmique. Pour rfrence, la courbe
en bleu associe laxe y de droite montre la fonction sin .
#importation de certaines fonctions/constantes du module math
from math import sin,cos,pi
niter=25 #nombre diterations
h=1.
#pas de maille initial
t=pi/6.
#angle auquel evaluer la derivee
for i in range(0,niter):
deriv=(sin(t+h)-sin(t-h))/(2.*h) #formule O(h^2)
err=abs(deriv-cos(t))
#erreur
print("h:",h,"erreur:",err)
h/=1.1
Aussi titre dexemple, le code ncessaire pour raliser la Figure 2.6 est montr ci-dessous. Certaines
fonctions daffichage graphique sont montres ici pour la premire fois, nous y reviendrons en labo.
Code Python pour produire le graphique de la Fig. 2.6
"""
Ce programme calcule la derivee de sin(x), i.e. cos(x), par differences finies,
sur la plage x=0..2*pi, pour differents pas de mailles.
"""
import numpy as np
import matplotlib.pyplot as plt
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

17

2.2. DRIVES DUNE FONCTION

npts=[11,51,101,1001]
for npt in npts:
x=np.linspace(0,2*np.pi,npt)
h=x[1]-x[0]
y=np.sin(x)
deriv=np.zeros(npt)
deriv[1:npt-2]=(y[2:npt-1]-y[0:npt-3])/(2.*h)
plt.plot(x[1:npt-2],abs(np.cos(x[1:npt-2])-deriv[1:npt-2]),.)
plt.gca().set_yscale(log)
plt.xlabel(Angle (rad))
plt.ylabel(Erreur absolue)
plt.axis([0,2*np.pi,1.e-8,0.1])
ax2=plt.gca().twinx()
ax2.plot(x,np.sin(x))
ax2.set_ylabel(sin(x))
ax2.axis([0,2*np.pi,-1,1])
plt.show(block=0)
plt.savefig(dfsinusx.pdf,bbox_inches=tight)

Dans le choix de lune ou lautre des formules de diffrences finies listes ci-dessus pour traiter un
problme numriquement, il est recommand dutiliser des formules ayant le mme ordre de discrtisation pour toutes les drives quelque soit leur ordre. Il faut galement garder en tte que les erreurs
de discrtisation associes aux diffrentes formules (O(h2 ), etc) ne tiennent vraiment que dans la limite
dun maillage serr, i.e., h 0 ; si le maillage spatial nest pas suffisamment serr pour bien rsoudre la
fonction discrtise, lq. (2.23) produira des rsultats probablement daussi pitre qualit que lq. (2.19).
Mais suffisamment, cest combien ? Il ny a pas de rponse unique cette question ; mais en premire
approximation on peut sattendre ce que h doive tre pas mal plus petit que lchelle sur laquelle varie
la fonction pour quun rsultat soit crdible.

2.2.4

Prcision, troncation et double prcision

strictement parler, toutes les formules de diffrences finies listes ci-dessus deviennent exactes dans
la limite h 0. Mais values sur un ordinateur o le nombres de chiffres significatifs dfinissant un
nombre rel est restreint, il existe un h en dessous duquel les erreurs darrondissement en viennent
dominer. Ceci est illustr sur la Figure 2.7, dun format identique la Fig. 2.5 mais stendant des h
et beaucoup plus petits. On y voit bien que pour des variables encodes avec une prcision de 32-bits,
lorsque lerreur chute sous un certain seuil, entre 104 et 106 dpendant de la formule utilise, lerreur
ne dcroit plus mesure que h diminue mais devient plutt erratique et mme augmente lgrement. La
mme chose se produirait pour une prcision de 64-bits, mais des valeurs de h et encore plus petites
que montres sur la figure. Cette figure illustre bien la subtile diffrence entre les erreurs de troncation
(associe lordre de la formule de diffrence finie choisie) et les erreurs darrondissement, associes au
choix de la reprsentation numrique ici float32 versus float64. Une fois que le pas h devient petit
au point o les diverses valuations de sin(x h) ne diffrent plus que dans le dernier chiffre significatif
pouvant tre encod dans la mantisse M du nombre rel (cf. eq. (1.4)), toutes les formules de diffrences
finies se mettent dconner, quelque soit leur ordre de troncation. Bien quon ait pu imaginer prime
abord quil soit souhaitable de choisir un h le plus petit possible afin de justifier notre omission des
termes dordre lev en h ( x) dans le dveloppement en srie de Taylor, les restrictions associes
nos reprsentations numriques des nombres rels posent une limite infrieure incontournable la taille
du pas ; loin damliorer la prcision de nos estims des drives, pousser sous cette limite les dgrade !
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

18

CHAPITRE 2. DRIVES, INTERPOLATION ET INTGRATION

Figure 2.7 Variations de lerreur de discrtisation en fonction de la taille du pas, toujours pour le calcul
de la drive de sin(x) par diffrences finies. Les symboles donnent lerreur associe au calcul des drives
avec une prcision de 32-bits (float32) tandis que les traits plein donnent lquivalent calcul avec une
prcision de 64-bits (float64). Les traits pointills dlimitent lintervalle couvert par la Figure 2.5

2.3

Interpolation

Dans bien des situations en sciences, incluant en physique, vous tomberez sur des sries de mesures
exprimentales tabules qui devront tre utilises comme base des calculs subsquents. Considrons par
exemple les donnes portes en graphique sur la Figure 2.8, qui montrent cinq mesures de la variation
dune quantit f en fonction dune variable x dont dpend f . Ceci est typique des plusieurs types de
mesures exprimentales ; on peut bien faire un grand nombre de mesures, mais on se retrouve toujours
avec un chantillonnage discret et fini de la quantit mesure.
Supposons maintenant que sur la base de ces mesures, on vous demande de calculer la valeur que
prendrait f si x = 5 ; problme, car vous disposez de mesures x = 4 et x = 7, mais pas x = 5. Vous
vous trouvez donc dans lobligation de supposer que f varie dune manire choisie a priori entre x = 4 et
x = 7, et ainsi produire un estim de f x = 5. Ce genre de tche numrique sappelle une interpolation.
On pourrait aussi vous demander quelque chose prime abord de compltement diffrent, par exemple
dvaluer, sur la base des mesures exprimentales, une intgrale dfinie du genre :
Z 10
f (x)dx
(2.28)
1

Comme f (x) na pas une forme analytique connue, vous devrez encore une fois supposer que f varie dune
manire analytiquement intgrable entre les points o les mesures de f sont disponibles. Cest l le lien
fondamental entre linterpolation et lvaluation numrique des intgrales dfinies.

2.3.1

Interpolation linaire

Commenons avec linterpolation, en tablissant soigneusement notre notation. Une interpolation typique est dfinie comme suit : on nous fournit un ensemble de N valeurs numriques fk dune fonction
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

19

2.3. INTERPOLATION

Figure 2.8 Une srie de donnes artificielles correspondant des mesures dune certaine quantit f (x)
en fonction dun ensemble fini de valeurs x dont dpend cette quantit.
mesure (ou discrtise) sur une maille xk galement donne, et pas ncessairement quidistante, comme
sur la Fig. 2.8 :
f (x) fk f (xk ) ,

k = 1, 2, ...N ,

x = [x1 , x2 , ..., xN ] .

(2.29)
(2.30)

Linterpolation consiste obtenir un estim f de f (xk ) un ensemble discret de P valeurs xk ne coincidant


habituellement pas avec les xk :
x = [x1 , x2 , ..., xP ] .

(2.31)

On exige habituellement que la fonction dinterpolation f (x) soit continue et exacte sur lensemble des
donnes tant interpoles, i.e.,
f (xk ) = f (xk ) ,

k = 1, 2, ...N .

(2.32)

Linterpolation la plus simple qui satisfait ces contraintes consiste approximer la variation de f (x) entre
deux points successifs [xk , xk+1 ] par une droite. On dcrit alors ceci comme une interpolation linaire.
Lide gnrale est illustre la Figure 2.9. Les points (xk , fk ) dfinissant la fonction interpoler sont en
noir, et les valeurs interpoles indiques en gris. Notons dj que la fonction dinterpolation est lunion
ici de quatre tronons linaires contigus qui se rejoignent aux xk s ; la fonction dinterpolation est donc
continue, mais sa driv premire par rapport x ne lest pas, puisquelle varie de manire discontinue
aux xk s, et toutes ses drives dordre suprieur sont nulles.
Une fois la fonction dinterpolation choisie, son valuation chaque xp est un processus en trois tapes :
1. trouver la plage dinterpolation, soit lintervalle [xk , xk+1 ] tel que xk xp < xk+1 ;
2. Calcul des paramtres de la droite passant par (xk , fk ) et (xk+1 , fk+1 ).
3. Calcul de fp f (xp )
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

20

CHAPITRE 2. DRIVES, INTERPOLATION ET INTGRATION

Figure 2.9 Interpolation linaire dune fonction discrte dfinie par x = [1, 2, 4, 7, 9], f (x) = [1, 2, 3, 4, 7]
(N = 5, points noirs), aux points x = [2.5, 4.5, 6.5, 8.5] (P = 4, points gris). La fonction dinterpolation
est ici dfinie par quatre plages dinterpolation, indiques par a, b, c et d.
Chercher la plage
tant donn un tableau x de dimension N contenant les abscisses de la fonction interpoler, le
petit bout de code suivant dtermine le k associ la plage dinterpolation [xk , xk+1 ] pour un point
dinterpolation xetoile :
k=len(x)-1
while xetoile<x[k]: k-=1
La faon de faire ci-dessus est simple, compacte et lisible, mais nest pas terriblement efficace du point de
vue numrique ; on verra plus loin comment faire mieux.
Calculer la droite
Avec xetoile= 4.5, disons, nous travaillons dans la plage dinterpolation c. Une droite est dfinie
paramtriquement par la relation
y = mx + b ,

(2.33)

o m est la pente et b lordonne lorigine. valuons ceci aux points x3 et x4 qui dfinissent les limites
de la plage c :
f3 = mx3 + b ,

f4 = mx4 + b ;

(2.34)

Comme les x3 ,, x4 , f3 et f4 sont connus, ceci reprsente un systme de deux quations pour deux inconnues,
m et b. La solution en est :
m=
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

f4 f3
43
1
=
= ,
x4 x3
74
3

(2.35)
27 octobre 2014

21

2.3. INTERPOLATION

b = f3

f4 f3
4
5
x3 = 3 =
x4 x3
3
3

(2.36)

Linterpolation dans la plage c est donc dfinie par :


f (x ) =

5
x
+ ,
3
3

x3 x x4 .

(2.37)

Calculer linterpolation
Cest ici trivial. On na qu valuer lq. (2.37) la valeur de x dsire. Dans le cas des donnes de
la Figure 2.9, on aurait donc
f (x2 ) = f (4.5) = 3.1666...

f (x3 ) = f (6.5) = 3.8333...

(2.38)

Noubliez surtout pas que lvaluation de f x1 = 2.5 et x4 = 8.5 doit se faire dans les plages b et d
respectivement, o la droite (2.37) nest pas valide ! La code Python ci-bas effectue linterpolation illustre
la Figure 2.9. Ici la fonction discrtise fk f (xk ) est dfinie directement au dbut du code, mais la
valeur x laquelle linterpolation est dsire est lue au moment de lexcution, via la fonction input ;
une fois linterpolation termine, le programme se met en attente de la valeur suivante. Ceci est notre
premier exemple dinteraction entre le programme et lusager durant lexcution.
Code Python pour linterpolation linaire de la Figure 2.9
"""
Ce programme utilise linterpolation lineaire pour estimer la valeur
dune fonction discretisee a une valeur x fournie par lutilisateur.
"""
#la fonction discretisee
x=[1.,2.,4.,7.,9.]
y=[1.,2.,3.,4.,7.]
#linterpolation
while 1:
rep=input(SVP donner une valeur de x (q/Q pour quitter): )
if rep.strip() in qQ: break
try:
xx=float(rep)
except ValueError:
print(Entree invalide!)
continue
if xx<x[0] or xx>=x[-1]:
print("Valeur hors de lintervalle! Recommencer.")
continue
k=len(x)-1
while xx<x[k]: k-=1
m=(y[k+1]-y[k])/(x[k+1]-x[k])
b=y[k]-m*x[k]
yy=m*xx+b
print(Resultat: x={:6.4f}, f(x)={:6.4f}.format(xx,yy))

2.3.2

Interpolation dordre plus lev

examiner linterpolation linaire prsente la Figure 2.9, il nest pas difficile dimaginer quune
meilleure interpolation puisse tre obtenue en reliant les N points (xk , fk ) par quelque chose de mieux que
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

22

CHAPITRE 2. DRIVES, INTERPOLATION ET INTGRATION

Figure 2.10 Interpolation quadratique par polynmes de Lagrange des donnes de la Figure 2.8. Avec
N = 5, on a ici deux plages distinctes dinterpolation, a + b et c + d, linterpolation dans chacune tant
dfinie par un segment de parabole. Remarquez la discontinuit de la drive premire la fonction des
deux plages (x = 4), et le minimum secondaire produit dans la plage c.
des segments de droites, par exemple un polynme dordre plus lev que y = mx + b. Ceci peut se faire
facilement avec les polynmes de Lagrange, qui ne sont effectivement rien de plus que les polynmes
classiques avec lesquels vous avez dj fait connaissance au secondaire (linaire, quadratique, cubique,
etc), mais rcrits dune manire diffrente qui savre particulirement approprie aux tches dinterpolation. La principale diffrence en passant un ordre plus lev est que le nombre de points ncessaires
lvaluation des coefficients du polynme, i.e. le nombre de points formant la plage dinterpolation, croit
avec lordre : 3 points pour ordre 2, 4 pour ordre 3, etc.
Si le calcul et lvaluation des polynmes dinterpolation de Lagrange sont trs simples (voir rfrences
en fin de chapitre), linterpolation en rsultant souffre de certains dfauts, non le moindre tant que
mme pour les interpolations dordre plus grand que linaire, les drives de la fonction dinterpolation
globale ne sont pas continues aux jonctions des plages dinterpolation, bien quelles le soient lintrieur
de chaque plage individuelle. Ce problme est clairement visible sur la Fig. 2.10, qui montre le rsultat
dune interpolation quadratique sur les deux plages de trois points dfinies par les donnes de la Fig. 2.8.
Les splines cubiques permettent dviter ce problme. Il ne sagit de rien de plus quune interpolation
polynomiale cubique (plage dinterpolation de 4 points), avec une contrainte supplmentaire de continuit
des drivs premires et secondes aux jonctions des plages dinterpolation. La Figure 2.11 en montre
un exemple, toujours pour les mmes donnes que prcdemment. Comparant aux Figs. 2.9 et 2.10, on
constate que la fonction dinterpolation est maintenant beaucoup plus lisse. Il existe plusieurs autres
faons dinterpoler des valeurs chantillonnes discrtement. Parmi celles-ci, on trouve linterpolation sinc
(ou de WhittakerShannon) et linterpolation par convolution cubique, qui sont particulirement efficaces
pour interpoler des valeurs issues de fonctions limites en bande et suffisamment bien chantillonnes ;
nous nentrerons pas dans les dtails ici, mais ces techniques sont importantes dans les applications de
traitement de signal et de traitement dimages.
La majorit des logiciels de traitements de donnes ou de graphisme incluent gnralement des fonctions
prdfinies effectuant une interpolation par spline cubique. La thorie sous-jacente est explique dans la
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

23

2.3. INTERPOLATION

Figure 2.11 Interpolation par splines cubiques, partir des mmes donnes que sur les Figure 2.9 et
2.10. Les valeurs de f (x) aux points interpols (gris) ne diffrent pas normment de celles obtenues avec
linterpolation linaire, mais ici les drives premire et seconde sont continues partout.
Table 2.1 Comparaison
x Linaire
2.5 2.25
4.5 3.16667
6.5 3.83333
8.5 6.25000

de trois interpolations des mmes donnes


Quadratique Spline Cubique
2.37500
2.38013
2.87500
3.07348
3.54167
3.59796
6.07500
6.12895

plupart des bouquins danalyse numrique (voir bibliographie en fin de chapitre). En Python, le sousmodule interpolate du module scipy, i.e. scipy.interpolate, fournit plusieurs fonctions et outils
pour linterpolation.
Comparant les Figures 2.9, 2.10 et 2.11, il est clair que le choix de la mthode dinterpolation peut
avoir un impact substantiel sur les valeurs interpoles. Le Tableau 2.1, listant les valeurs numriques de
ces trois interpolations aux mmes x confirme cette impression. Les diffrences, qui atteignent les 10%
dans plusieurs cas, nont rien voir avec des imprcisions dans les donnes, des erreurs darrondissement,
ou tout autre truc du genre ; elles rsultent entirement du choix de la mthode dinterpolation. Laquelle
est la meilleure ici ? Difficile dire...
En gnral, on pourrait penser que linterpolation par splines cubiques est prfrer, si ce nest
parce que cette technique dinterpolation assure la continuit des drives de la fonction interpole aux
frontires des plages dinterpolation. Mais les splines ne doivent pas tre utiliss aveuglment. La Figure
2.12 prsente un exemple dune situation o une interpolation en splines cubiques produit des rsultats
plus que douteux. Ici la fonction interpoler (points noirs) a lallure une fonction escalier, avec un f (x)
constant pour x 3, sautant une valeur constante plus leve pour x 4. Il est important de raliser
que les donnes ne contiennent aucune information nous permettant de spcifier o exactement entre
x = 3 et x = 4 la discontinuit est situe,... ou mme si il y a vraiment une discontinuit dans lintervalle,
par opposition une variation trs rapide mais continue en x.
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

24

CHAPITRE 2. DRIVES, INTERPOLATION ET INTGRATION

Figure 2.12 Exemple dune situation o une interpolation linaire (tirets) est trs possiblement plus
approprie quune interpolation par splines cubiques.
Dans une telle situation linterpolation par spline cubique produit une variation rapide et continue
entre x = 3 et x = 4, comme on sy attendrait dun polynme dordre relativement lev, mais dans les
deux intervalles voisins la contrainte de continuit de la fonction et de ses drives caractrisant les splines
cubiques produit des sursauts o f sloigne substantiellement de lintervalle dfini par les deux valeurs
constantes de la fonction (discrtise) f tant interpole ici. Dans un cas comme celui-ci, une interpolation
linaire (tirets) serait probablement prfrable.
Dernier commentaire de nature quasi-philosophique : quune interpolation se fasse par polynme de
Lagrange ou par spline cubique, ultimement cest de la tricherie ; il ny a tout simplement pas dinformation
entre les points (xk , fk ) o la fonction est chantillonne ! Le choix dun type dinterpolation ou dun autre
est, en gnral, tout fait arbitraire, et le plus souvent dtermin par nos prjugs et/ou attentes par
rapport au systme ayant gnr les donnes (xk , fk ).

2.3.3

Interpolation versus extrapolation

Lextrapolation est une procdure douteuse base sur la mme ide que linterpolation, soit la reprsentation dun chantillonnage discret dune fonction inconnue par une fonction (habituellement simple)
de la variable indpendante. La Figure 2.13 illustre le danger inhrent ce type de manoeuvre. On travaille toujours ici avec les donnes de la Figure 2.8 (points noirs), mais les polynmes dinterpolation sont
maintenant utiliss pour calculer une extrapolation des valeurs de x qui sont lextrieur de lintervalle
couvert par les donnes (1 x 9). Ici lextrapolation linaire (tirets) vers x = 15 utilise linterpolation
linaire dans la plage d, tandis que lextrapolation quadratique (trait plein) est base sur un polynme
quadratique couvrant les plages c + d. Bien que dans la plage d les deux interpolations ne diffrent que
par quelques pourcents (cf. Tableau 2.1 pour x = 8.5), ici les deux extrapolations x = 15 diffrent
par prs dun facteur deux. Je vous laisse imaginer de quoi tout a aurait lair si on avait la brillante ide
dextrapoler jusqu x = 100...
Dans le cas spcifique des donnes de la Figure 2.13, lextrapolation jusqu x ' 10 produirait des
rsultats ne divergeant pas plus que pour les interpolations compiles au Tableau 2.1 ; on pourrait en juger
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

2.4. INTGRATION

25

Figure 2.13 Exemple dune situation o le choix de lune ou lautre mthode dinterpolation (linaire
et quadratique) conduit des rsultats divergents lorsque linterpolation est utilise pour extrapoler en
dehors (x = 15) des plages dinterpolation (1 x 9). Les donnes (points noirs) sont les mmes que
sur les Figures prcdentes.
que lextrapolation est alors acceptable. Il nen demeure pas moins que lextrapolation est toujours un
jeu trs dlicat tous les points de vue.
Lextrapolation demeure parfois invitable et ncessaire. La Figure 2.14 vous en montre un des exemple
les plus mdiatis des dernires quelques dcennies, soit laugmentation prdite de la temprature moyenne
de la Terre au cours du vingt-et-unime sicle. Huit extrapolations climatiques sont portes en graphique
ici, chacune correspondant un modle climatique diffrent ; diffrent pas seulement au sens purement numrique, mais aussi au niveau des processus physiques inclus, des hypothses faites au niveau de lvolution
de la population plantaire et de ses habitudes nergivores, etc. La pathologie est fondamentalement la
mme que sur lexemple simpliste de la Fig. 2.13. Tous ces modles climatiques sont ajusts de manire
bien reproduire la temprature moyenne observe dans la seconde moiti du vingtime sicle, et laccord entre les modle y est donc excellent (tout comme pour les traits plein et pointills dans lintervalle
1 x 9 sur la Fig. 2.13). Mais une fois extrapols jusquen 2100, le rchauffement prdit varie dun
peu plus de 2 degrs C presque 5 C. Les extrapolations ne sont pas contraintes, et donc voluent selon
la dynamique interne (trs complexe) de chaque modle. Une diffrence de 3 degrs dans la temprature
moyenne terrestre peut paraitre mineure prime abord, mais en pratique elle est en fait norme : +2 C,
il y a encore des cosystmes arctiques ; +5 C, non ; +5 C Bangkok (population mtropolitaine : 14.6
million dhabitants en 2010) est compltement sous leau ; +2 C, pas encore. Maintenant vous savez
pourquoi, si vous commencez parlez dextrapolation un(e) climatologue, vous allez sentir trs vite le
niveau de stress monter...

2.4

Intgration

Passons maintenant au calcul numrique des intgrales, plus prcisment des intgrales dfinies. De la
mme faon que la drive dune fonction en un point donn peut tre interprte comme la pente dune
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

26

CHAPITRE 2. DRIVES, INTERPOLATION ET INTGRATION

Figure 2.14 Exemple concret dune extrapolation, soit ici la temprature moyenne de la Terre jusquen
2100. Les prdictions ont t faites en 2007, laide de huit modles climatiques distincts, tous trs hautde-gamme. Toutes les extrapolations sont calibres sur la seconde moiti du vingtime sicle, et donc
y sont en excellent accord, mais divergent par la suite. Source : P.A. Rohde/The Global Warming Art
Project, tlcharg de http://en.wikipedia.org/wiki/File:Global_Warming_Predictions.png.
droite tangente la courbe dfinie par la fonction en ce point, son intgrale dfinie entre deux points
peut tre interprte comme laire sous la courbe entre ces points. Tout comme la drive (voir q. (2.1)),
lintgrale dfinie peut tre dfinie mathmatiquement comme un passage la limite x 0 :
Z b
X
f (x)dx = lim
f(xk )x
(2.39)
x0

o f(xk ) est une valeur reprsentative de f (x) sur le kime intervalle x dans la plage [a, b]. Lide de ce
passage la limite conduisant laire sous la courbe est illustre schmatiquement la Figure 2.15.
Si la fonction f (x) est calculable pour tout x, le membre de droite de lquation (2.39) peut tre
directement utilise pour valuer lintgrale, en choisissant un x suffisamment petit (en se mfiant
toutefois des erreurs darrondissement...). Cependant, pour une fonction tabule, comme sur la Figure
2.8, o la grandeur du x est fixe, lutilisation de lq. (2.39) peut conduire des rsultats plutt
imprcis. Il est en fait assez facile de faire mieux.

2.4.1

La mthode du trapze

La mthode du trapze est un algorithme simple et robuste permettant dintgrer numriquement


une fonction f (x) chantillonne sur une maille couvrant le domaine dintgration, mais dont les incrments
ne sont pas ncessairement quidistants :
(x1 , x2 , x3 , ..., xN ) ,

o il est possible que

xk+1 xk 6= xk xk1 .

Lide derrire la mthode du trapze est simplement de supposer que la fonction f (x) varie linairement
entre les points o elle est chantillonne ; laire sous le segment de droite reliant les points (xk , fk ) et
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

27

2.4. INTGRATION

Figure 2.15 Le passage la limite x 0 dans le calcul dune intgrale dfinie, correspondant laire
contenue sous la courbe dfinie par f (x) entre les bornes dintgrations a et b.
(xk+1 , fk+1 ) est :
fk (xk+1 xk ) + (fk+1 fk ) (xk+1 xk )/2 =
|
{z
} |
{z
}
rectangle

(fk+1 + fk )
(xk+1 xk ) ,
2

triangle

do :
Z

xN

f (x) dx '
x1

N
1
X
k=1

(fk+1 + fk )
(xk+1 xk ) + O(h2 ) ,
2

(2.40)

avec comme dhabitude fk f (xk ). Plus la maille est serre, plus la somme discrte au cot droit de
cette expression approximera bien lintgrale au cot gauche. Dit autrement, plus la maille est petite, plus
un dveloppement en srie de Taylor tronqu aprs le second terme offre une reprsentation adquate de
la variation de la fonction dans lintervalle dintgration. Lerreur associe la mthode du trapze est
formellement O(h2 ). En Python, a pourrait avoir lair de ceci :
somme = 0.
for k in range(0,n-1):
somme+= 0.5*(f[k+1]+f[k])*(x[k+1]-x[k])

# eq. (2.40)

Ceci prsuppose que les valeurs de f et x sur la plage dsire ont t dj places dans deux tableaux
1D chacun de longueur N . Notez lutilisation dune variable daccumulation somme, qui, la sortie de la
boucle, contiendra la valeur de lintgrale. Il faut sassurer dinitialiser cette variable zro avant le dbut
de la boucle calculant lintgrale. Notez galement que la boucle terminera k = N 2 plutt que N 1,
de manire viter un dbordement de tableau sur valuation de xk+1 et fk+1 lintrieur de la boucle.
La Figure 2.16 illustre lapplication de la mthode du trapze aux donnes de la Figure 2.9. Si ces
donnes correspondaient vraiment la fonction dfinie par le trait plein, on voit que la mthode du trapze
surestimerait les contribution lintgrale des plages c et d, sous-estimerait celle de la plage b, et serait
trs raisonnable pour ce qui est de la contribution de la plage a.
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

28

CHAPITRE 2. DRIVES, INTERPOLATION ET INTGRATION

Figure 2.16 Calcul dune intgrale dfinie par la mthode du trapze. La fonction intgrer (trait noir)
est ici un spline cubique bas sur les cinq valeurs discrtes indiques par des points noirs.

2.4.2

Les rgles de Simpson

Lide dintroduire une forme dinterpolation entre les points de maille pour calculer une intgrale est
videmment gnralisable des interpolations dordre plus lev que linaire. Dans le cas dun maillage
quidistant (xk+1 xk = h k), on peut ainsi produire des formules dintgration relativement simples,
connues sous le nom de Rgles de Simpson. Voir les rfrences cits en fin de chapitre si vous dsirez
approfondir le sujet.

2.4.3

Intgration de Romberg

Lintgration de Romberg est un petit truc vraiment remarquable pour grandement amliorer
la prcision dune intgrale numrique, avec trs peu deffort supplmentaire. Considrons par exemple
lutilisation de la mthode du trapze sur une maille quidistante h = h1 . Pour une maille suffisamment
serre, la solution obtenue (I (1) , disons) diffrera de la solution exacte (I ) par un facteur proportionnel
h21 ; on peut donc crire en toute gnralit :
I (1) = I + Ch21 ,

(2.41)

o C est une constante qui est en fait une proprit de lalgorithme appliqu au problme donn, mais
pas du choix de la maille. Considrons maintenant une seconde solution obtenue sur une maille h2 6= h1 .
On aura encore une fois,
I (2) = I + Ch22 ,

(2.42)

et cest l la cl, avec le mme C ! Les quations (2.41) et (2.42) forment un systme de deux quations
pour deux inconnues, I et C ; ce systme peut tre solutionn pour produire une valuation de I :
I =

h22 I (1) h21 I (2)


,
h22 h21

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

mthodes O(h2 )

(2.43)
27 octobre 2014

29

2.5. CODA, EN PLUS QUUNE VARIABLE

Figure 2.17 Discrtisation dune fonction de deux variables f (x, y) sur un maillage cartsien rgulier,
ici quidistant dans les direction x et y et avec N = M = 11. Le noeud (j, k) est indiqu en noir.
Ceci reprsente en fait une forme dextrapolation ; il sera donc judicieux de choisir une seconde maille h2
diffrant de manire significative de la premire, e.g., h2 = h1 /2.

2.5

Coda, en plus quune variable

Nous allons clore ce chapitre par une brve prsentation de la gnralisation des formules de diffrences
finies, dinterpolation et dintgration plus dune variable spatiale.

2.5.1

Discrtisation

La procdure de discrtisation dune fonction continue introduite la 2.2.1 se gnralise facilement


une fonction de plus dune variable. Considrons par exemple une fonction f (x, y) de deux variables,
discrtise sur une maille cartsienne rgulire en deux dimensions spatiales (voir Figure 2.17) :
x {x1 , x2 , ..., xN },

xj+1 > xj ,

(2.44)

y {y1 , y2 , ..., yM },

yk+1 > yk .

(2.45)

Une maille est dite cartsienne si toutes les lignes x = constante sont des droites parallles les unes aux
autres, les y = constante le sont galement, et chaque famille de droites coupe lautre en formant des
angles droits ; autrement dit, comme sur du papier quadrill ! On identifie chaque noeud du maillage 2D
par une paire dindices (j, k), et on crit pour la fonction discrtise :
fj,k f (xj , yk ) ,

(2.46)

Je vous laisse imaginer comment ceci se gnralise des fonctions de plus de deux variables.

2.5.2

Drives partielles et diffrences finies

Commenons donc avec lvaluation de drives par diffrences finies. Pour des fonctions de plus dune
variable, on calcule habituellement les drives partielles, qui ne sont rien de plus que les drives de
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

30

CHAPITRE 2. DRIVES, INTERPOLATION ET INTGRATION

la fonction par rapport une de ses variables indpendantes, considrant les autres fixes. Un bon petit
exemple vaudra bien un long paragraphe ; considrons la fonction de deux variables suivante :
f (x, y) = 1 + xy y 2 .

(2.47)

Les deux drives partielles de cette fonctions seront donnes par,


f (x, y)
=y ,
x

f (x, y)
= x 2y .
y

et

(2.48)

Remarquez bien comment, du point de vue de la drive partielle par rapport x, le terme y 2 est
considr constant, et donc sa drive est nulle, tout comme lest la drive du premier terme au membre
de droite de lq. (2.47). a continue de la mme manire pour les drives secondes :
f (x, y)
2f
=
=0,
2
x
x x

et

f (x, y)
2f
=
= 2 .
2
y
y y

(2.49)

Notez que pour les drives secondes dune fonction de deux variables, il existe aussi des drives dites
croises ; ici on aurait :
f (x, y)
2f
=
=1,
yx
y x

et

2f
f (x, y)
=
=1.
xy
x y

(2.50)

Ce nest pas un hasard si les deux drives croises donnent ici le mme rsultat ; ce sera toujours le cas
pour une fonction analytique, i.e., sans discontinuit dans la fonction ou ses drives de tout ordre.
La procdure dcrite ci-dessus peut tre applique au calcul des drives partielles dune fonction
de plus dune variable. Pour les formules dordres un et deux les expressions correspondantes sont des
applications directes des formules listes ci-dessus, avec les autres coordonnes fixes : par exemple, sur
une maille 2D :

f
fj+1,k fj1,k
+ O(h2 ) ,
(2.51)
=

x xj ,yk
2x

f
fj,k+1 fj,k1
+ O(h2 ) ,
=
y xj ,yk
2y

(2.52)


2 f
fj+1,k 2fj,k + fj1,k
+ O(h2 ) ,
=

2
x xj ,yk
(x)2

(2.53)


2 f
fj,k+1 2fj,k + fj,k1
=
+ O(h2 ) ,

2
y xj ,yk
(y)2

(2.54)


2 f
fj+1,k+1 fj+1,k1 fj1,k+1 + fj1,k1
=
+ O(h2 ) ,
xy xj ,yk
4xy

(2.55)

o fj,k f (xj , yk ), et on a considr que lintervalle de maille en x (h = x) puisse tre diffrent de


lintervalle en y (h = y), ce qui est tout--fait lgal sur une maille Cartsienne 2D. Notons que pour les
formules dordre plus lev, les noeuds diagonaux (e.g. fj+1,k+1 ) font leur apparition. Voir les rfrences
cites en bibliographie pour plus de dtails.

2.5.3

Interpolation multidimensionnelle

En plus dune dimension, linterpolation dordre leve (genre spline) devient rapidement trs lourde.
Linterpolation multi-linaire, par contre, demeure relativement simple. La premire tape consiste
identifier la plage dinterpolation. Dans le cas dun maillage cartsien 2D comme sur la Figure 2.17, la
procdure utilise en 1D (2.3.1) est utilise sparment dans les directions x et y. La plage dinterpolation
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

31

2.5. CODA, EN PLUS QUUNE VARIABLE

Figure 2.18 Interpolation bilinaire en deux dimensions spatiales. Linterpolation de f (x, y) au point
(x , y ) revient au calcul dune moyenne pondre de f value aux quatre noeuds dfinissant la plage
dinterpolation, avec une pondration donne par la surface du rectangle diagonalement oppos chaque
noeud, tel quindique ici par le code couleur.

se retrouve prendre la forme dun rectangle dont les coins correspondent aux quatre noeuds (xj , yk ),
(xj+1 , yk ), (xj , yk+1 ), (xj+1 , yk+1 ). Il sagit ensuite simplement de reprsenter, dans la plage dinterpolation, la variation de f (x, y) comme un produit de fonctions linaires le long de chaque axe de coordonnes.
Lalgbre est un peu fastidieuse, mais conduit ventuellement la formule dinterpolation dite bilinaire :
f (x , y )

=
+
+
+

(x xj )(y yk )
fj+1,k+1
(xj+1 xj )(yk+1 yk )
(xj+1 x )(y yk )
fj,k+1
(xj+1 xj )(yk+1 yk )
(xj+1 x )(yk y )
fj,k
(xj+1 xj )(yk+1 yk )
(x xj )(yk y )
fj+1,k .
(xj+1 xj )(yk+1 yk )

(2.56)

Ceci revient calculer une moyenne pondre des valeurs de f value aux quatres noeuds dfinissant
les coins de la plage dinterpolation, avec des facteurs de pondration qui confrent un poids proportionnellement plus grand aux noeuds situs plus prs de (x , y ). Plus spcifiquement, la pondration
est proportionnelle la surface du rectangle dfini par les droites x = x et y = y situ en direction
diagonalement oppose chaque noeud, comme lillustre la Figure 2.18. Notez galement que la forme
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

32

CHAPITRE 2. DRIVES, INTERPOLATION ET INTGRATION

mme de lq. (2.56) garantit que


f (xj , yk ) = fj,k ,

(2.57)

et en particulier, si (x , y ) est situ exactement au centre de la plage dinterpolation, la relation ci-dessus


se rduit :
f (x , y ) =

1
(fj+1,k+1 + fj,k+1 + fj,k + fj+1,k ) ,
4

(2.58)

soit la moyenne des quatres valeurs de f aux quatre coins de la plage dinterpolation. Ce rsultat nous
servira maintenant tablir un quivalent de la rgle du trapze pour une intgrale en deux dimensions
spatiales.

2.5.4

Intgrales multidimensionnelles

Si ce nest pas dj fait, vous aurez loccasion de tout apprendre sur les intgrales de fonctions de
plus dune variable dans vos cours MAT. Dans le cas de fonctions de deux variables, lanalogie avec les
intgrales de fonctions dune seule variable est simple : cette dernire correspond calculer laire sous
la courbe dlimite par les bornes dintgrations ; pour une fonction de deux variables, lintgrale par
rapport ces deux variables correspond calculer le volume sous la surface (2D) dlimite par les
bornes dintgration, qui sont maintenant des lignes ou courbes dans le plan [x, y].
Notez que dans certains cas, les intgrales sont sparables et on peut tout simplement les valuer
comme le produit de deux intgrales 1D, e.g.,
Z
 Z

Z Z
Z Z
x+y
x y
x
y
e
dx dy =
e e dx dy =
e dx
e dy ,
(2.59)
tandis que dautres ne le sont pas, e.g.,
Z Z p

x2 + y 2 dx dy .

(2.60)

Supposons que la fonction f (x, y) intgrer est dfinie sur une maille cartsienne rgulire (comme sur
la Fig. 2.17). partir de la fonction dinterpolation bilinaire introduite ci-dessus, il est de nouveau
possible, par intgration directe, dobtenir lquivalent de la rgle du trapze applicable maintenant en
deux dimensions spatiales :
Z Z
f (x, y)dx dy =

1
N
1 M
X
X
j=1 k=1

1
(fj,k + fj+1,k + fj,k+1 + fj+1,k+1 )(xj+1 xj )(yk+1 yk ) .
4

(2.61)

Remarquez que le nombre dvaluations requises de la fonction f intgrer augmente gomtriquement


avec la dimensionalit de lintgrale ; autrement dit, si N intervalles sont requis pour bien reprsenter les
variations de f dans lune ou lautre dimension spatiale, alors lq. (2.61) exigera (N + 1)2 valuations de
f . Qui plus est, son quivalent en D dimensions demanderait (N + 1)D valuations. On verra plus loin
des alternatives moins couteuses au calcul des intgrales en plusieurs dimensions.

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

33

2.5. CODA, EN PLUS QUUNE VARIABLE

Exercices:
1. Calculez le dveloppement de Taylor dun polynme quartique dordre 4 de la forme gnrale :
f (x) = ax4 + bx3 + cx2 + dx + e
Commencez par dmontrez qu partir de la troncation lordre 4, le dveloppement devient exact
quelque soit la grandeur de x. Ensuite,
(a) Calculez maintenant le dveloppement de Taylor dune fonction sinus :
f (x) = sin(x) ;
(b) Comparez la prcision des estims f (x0 + x) par rapport la valeur exacte pour x0 = /6
(rad) et x = 0.01 rad, pour les dveloppements tronqus aux ordres 1 4.
(c) Dmontrez quaucun ordre fini de troncation ne peut conduire un estim exact, contrairement
au cas du polynme quartique.
2. crivez un petit code en Python qui calcule la factorielle dun entier n (voir q. (2.3)).
3. partir des formules de diffrences finies centres pour les drives premire et seconde (qs. 2.18)
et (qs. 2.19)), obtenez les formules de diffrences finies centres pour les drives troisime et
quatrime ordres (qs. 2.20) et (qs. 2.21)).
4. tablissez la forme analytique de linterpolation linaire dune fonction f (x) entre deux points x1
et x2 o la fonction vaut f1 et f2 , respectivement. Intgrez cette interpolation par rapport x entre
x1 et x2 , et vrifiez que vous retrouvez bien la rgle du trapze.
5. Vrifiez que la solution du systme dquations algbriques (2.41)(2.42) conduit bien lq. (2.43).
6. Considrez lintgrale dfinie suivante :
Z 1
sin(2x)dx ,
0

(a) Calculez lintgrale analytiquement ;


(b) Calculez numriquement lintgrale laide de la mthode du trapze pour h = 0.1, 0.01 et
103 . Vrifiez que vos rsultats sont compatibles avec le taux de convergence attendu.
(c) Utilisez maintenant vos rsultats obtenus avec h = 0.01 et h = 103 pour obtenir un estim
amlior de lintgrale via la mthode de Romberg.
7. Dmontrez que lintgration explicite dune interpolation bilinaire de la forme donne par lq. (2.56)
conduit bien la formule de quadrature donne par lq. (2.61)
8. Utilisez la formule de quadrature (2.61) pour calculer lintgrale suivante :
Z 1Z 1
sin(2x) sin(2y)dx dy ,
0

Rptant le calcul pour un maillage de plus en plus serr (avec x = y = h), dterminez si
cette formule dintgration est dordre O(h), ou O(h2 ), etc., en mesurant lerreur par rapport la
solution exacte (facilement calculable ici puisque lintgrale est sparable en x et y).
9. Par intuition, trouvez les fonctions dinterpolation requises pour une interpolation trilinaire (i.e.,
dordre 2) dune fonction de trois variables spatiales. Commencez par une comparaison attentive
des fonctions correspondantes en 1D et 2D.

Bibliographie:
Le calcul des formules de diffrences finies est trait dans tous les bouquins danalyse numrique, incluant Numerical Recipes cit en bibliographie au chapitre 1. Jai gard une prfrence pour la prsentation
du sujet faite la 2.1 de
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

34

CHAPITRE 2. DRIVES, INTERPOLATION ET INTGRATION

Lapidus, L., & Pinder, G.F. 1982, Numerical solution of partial differential equations in science and
engineering, John Wiley & Sons.
Linterpolation et lintgration sont des sujets galement traits dans tous les ouvrages de mthodes numriques. Encore une fois le Numerical Recipes vaut la peine dtre consult : chapitre 3 pour linterpolation,
et chapitre 4 pour lintgration. Les chapitres 3 et 4 de louvrage suivant sont galement une bonne
introduction :
Gerald, C.F. 1978, Applied numerical analysis, Addison-Wesley.
Sur linterpolation, les matheux(ses) pourront consulter galement le chapitre 2 de
Stoer, J., & Bulirsch, R. 1980, Introduction to numerical analysis, Springer.

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

35

Chapitre 3

quations diffrentielles ordinaires


3.1

Repenser F = ma

Plus vous progresserez dans vos tudes de la physique, plus vous verrez ses grands principes (comme la
conservation de lnergie, de la quantit de mouvement, etc) sous la forme dquations diffrentielles, et
la capacit de solutionner ces quations deviendra essentielle. Ce chapitre vise vous apprendre quelques
techniques numriques pour la solution dquations diffrentielles dites ordinaires, soit une quation
impliquant des drives dune variable dpendante par rapport une seule variable indpendante.
Un exemple spcifique vaut bien une longue discussion. Prenons encore une fois la trs justement
clbre Loi de Newton :
F = ma .

(3.1)

Ceci reprsente en fait trois quations, puisque la force et lacclration sont des quantits vectorielles dont
la dfinition requiert trois composantes distinctes. Vous naurez certainement pas oubli que lacclration
est la drive temporelle de la vitesse v, et que cette dernire peut tre considre comme une drive
temporelle du vecteur position x. Lquation (3.1) peut donc tre crite sous les formes alternatives :
F
dv
=
,
dt
m

(3.2)

F
d2 x
=
.
dt2
m

(3.3)

Ces deux expressions sont en tout point physiquement quivalentes (3.1).


Applique un mouvement uniformment acclr par une force de grandeur constante et exerce dans
la direction-x (disons), lquation (3.3) devient
d2 x
F
=
,
dt2
m

(3.4)

les composantes-y et z tant satisfaite trivialement (elles donnent 0 = 0 !). Deux intgrations successives de
cette expression consuisent la clbre formule que vous avez mmoris dj dans votre tendre jeunesse :
1
x(t) = x0 + v0 t + at2 ,
2

(3.5)

o ici a = Fx /m. Les quantits x0 et v0 sont les deux constantes dintgration, correspondant aux position
et vitesse au temps t = 0. Je me permet de vous rappeler que la spcification de ces constantes dintgration
est un aspect essentiel de la solution du problme. LEDO tant ici dordre deux (la plus haute drive
est une drive seconde), deux conditions initiales doivent tre spcifies.
Cest la forme particulirement simple une constante du membre de droite de lquation (3.3) qui
permet une intgration analytique. Souvent, pour des forces ayant des dpendances explicites sur x et/ou
t, ceci nest plus possible et on doit solutionner directement lquation diffrentielle de manire numrique.
Cest ce que nous ferons dans ce chapitre, dans le contexte dun problme physique que vous connaissez
bien, soit le mouvement du pendule. Mais pour commencer nous allons dvelopper deux algorithmes
numriques dans le contexte dune quation diffrentielle ordinaire encore plus simple.
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

36

3.2

CHAPITRE 3. QUATIONS DIFFRENTIELLES ORDINAIRES

La mthode dEuler

Considrons une fonction f (t) obissant lquation diffrentielle ordinaire (EDO) du premier ordre
suivante :
df
f 0 = g(t, f (t)) ,
dt

f (t0 ) = f0 ,

t [a, b] .

(3.6)

Ici, la dpendance fonctionnelle de g(t, f (t)) sur ses deux arguments (t et f ) est connue/donne, par
exemple g(t, f ) = f 2 sin(t), mais la dpendance fonctionnelle de f (t) sur son argument t ne lest pas,
cest ce que lon cherche. Intgrer cette EDO consiste calculer la fonction f (t) satisfaisant la fois
lEDO mme, ainsi qu la condition initiale spcifie. Premier point important ici : un problme bien pos
doit inclure non seulement lEDO, mais des conditions initiales/limites (ici f (t0 ) = f0 ) , et un domaine
dintgration (ici t [a, b]).
Une EDO de premier ordre telle que dfinie lq. (3.6) est dite linaire si la dpendance de g sur f est
strictement linaire (e.g. aucun terme en f 2 , ln f , etc.), sinon elle est dite non-linaire. Les EDOs linaires
ont la particularit que si f1 (t) est une solution lEDO, alors il est possible de construire une infinit
de nouvelles solutions de la forme f2 (t) = a f1 , o a est une constante, et de plus toute combinaison
linaire de solutions satisfaisant la condition initiale sera galement une solution valide. Du point de
vue dune solution numrique par Euler explicite comme nous le verrons ci-bas, il ny a vraiment aucune
diffrence entre une EDO linaire ou non-linaire, mais ce serait loin dtre le cas si on cherchait plutt
une solution analytique !
Comme premier cas de figure pour la discussion qui suit, nous considrerons lEDO linaire suivante,
df
=f ,
dt

t [0, 2] ,

f (0) = 1 ,

(3.7)

dont la solution analytique est donne par la fonction exponentielle que vous connaissez bien :
f (t) = exp(t) et .

(3.8)

En fait, lEDO (3.7) peut tre considre comme une dfinition de la fonction exponentielle. Mais voyons
maintenant comment solutionner cette EDO numriquement.

3.2.1

Euler explicite

La mthode dEuler explicite est base directement sur le dveloppement dune fonction en srie de
Taylor, tronqu au second terme :

df
f (t0 + h) = f (t0 ) + h ;
(3.9)
dt t0
mais, selon lEDO (3.6) on sait galement que df /dt = g(t, f (t)), donc on peut recrire ceci comme
f (t0 + h) = f (t0 ) + h g(t0 , f (t0 )) .

(3.10)

La stratgie consiste utiliser cette expression pour avancer la solution dans le temps, partir de la
condition initiale, pour un pas de temps h choisi a priori. Le calcul numrique de la solution commence
par la discrtisation de la variable indpendante t sur une maille couvrant lintervalle dsir. Choisissons
une maille quidistante :
tk+1 = tk + h ,
k = 0, 1, 2, ...
o h mesure ici la grandeur (constante) du pas de temps, et o t0 correspond la valeur de t laquelle
est spcifie la condition initiale. On peut donc appliquer lq. (3.10) squentiellement chaque point
de maille, en commenant par la condition initiale (connue !) fournie pour t0 , correspondant au point de
maille k = 0 :
fk+1 = fk + h g(tk , fk ) ,

k = 0, 1, 2, ...

(3.11)

o on a utilis la notation fk f (tk ). On aurait pu arriver directement cet algorithme en substituant


la formule de diffrence finie dordre O(h) (q. (2.15)) au membre de gauche de lq. (3.6), ce qui est
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

37

3.2. LA MTHODE DEULER

Figure 3.1 Solution numrique de lEDO (3.7) laide de la mthode dEuler explicite, pour diffrentes
tailles du pas de temps h, tel quindiqu. Le trait pais est la solution analytique donne par lq. (3.8).
tout fait quivalent la drivation ci-dessus puisque la dite formule de diffrence finie rsulte dun
dveloppement en srie de Taylor tronqu au second terme... !
Appliquons maintenant cette mthode lEDO (3.7), pour laquelle on obtient la formule trs simple
suivante :
fk+1 = fk + h fk ,

k = 0, 1, 2, ...

(3.12)

En Python, cet algorithme tient en quelques lignes :


h=0.10
t=np.arange(0.,2.,h)
f=np.empty_like(t)
f[0]=1.
for i in range(0,t.shape[0]-1): f[i+1]=f[i]+h*f[i]
La Figure 3.1 montre le rsultat de lalgorithme, pour 4 tailles de pas de temps. On note que plus le
pas de temps est petit, plus la solution numrique sapproche de la solution analytique (trait pais). Ceci
est tout fait naturel, puisque la prcision dun dveloppement en srie de Taylor tronqu, sur lequel
est bas notre algorithme, samliore mesure que la taille du pas diminue (retournez voir la Figure 2.5,
courbe en pour la formule O(h)). On remarquera aussi que, quel que soit la grandeur du pas, tout t la
solution numrique se retrouve toujours systmatiquement infrieure la solution analytique. Ceci vient
du fait que la fonction exp(t) est concave, dans le sens que sa drive seconde est positive ; autrement
dit, sa drive premire augmente avec t. Ceci implique que lutilisation de fk pour estimer df /dt dans
le passage de lq. (3.9) lq. (3.12) sous-estimera toujours la valeur moyenne de la drive dans
lintervalle t [tk , tk+1 ], donc il est invitable que fk+1 se retrouve sous la valeur relle tk . Vous aurez
dj anticip (jespre...) que si la fonction intgre avait t convexe plutt que concave, alors la solution
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

38

CHAPITRE 3. QUATIONS DIFFRENTIELLES ORDINAIRES

numrique se serait systmatiquement retrouve au dessus de la solution exacte. Ce problme samenuise


videmment mesure que h diminue, mais pensez-y un peu et vous devriez raliser quil persistera mme
dans la limite h 0. Voyons comment contourner cette difficult.

3.2.2

Euler explicite avec extrapolation linaire et mthode de Heun

La pitre performance de la mthode dEuler explicite sexplique principalement par le fait que les
membres de gauche et droite de lquation (3.6) sont traits diffremment par rapport la variable
temporelle. La diffrence finie avant, fk+1 fk , peut se rinterprter comme une diffrence finie centre
sur un temps correspondant un demi pas, tk+1/2 , en effet,
f (tk + h) f (tk ) = f (tk +

h h
h
h
h h
+ ) f (tk + ) = f (tk+1/2 + ) f (tk+1/2 ) .
2
2
2
2
2
2

(3.13)

Dans un tel cas il deviendrait naturel dvaluer le membre de droite, f 0 (tk ), galement tk+1/2 , par
exemple comme sa moyenne entre tk et tk+1 ; on pourrait alors crire :
fk+1 fk =

h 0
(f
+ fk0 ) ,
2 k+1

k = 0, 1, 2, ...

(3.14)

menant
fk+1 = fk +

h
[g(tk+1 , fk+1 ) + g(tk , fk )] ,
2

k = 0, 1, 2, ...

(3.15)

Mais voil, nous ne connaissons pas encore la valeur de fk+1 apparaissant aux membres de droite, puisque
nous sommes ce stade encore en train dessayer de calculer le pas k + 1 ! Cependant, il est possible
dapproximer ces quantits en effectuant une extrapolation linaire partir des valeurs au pas k, base
sur devinez quoi, notre trs cher dveloppement en srie de Taylor, tronqu aprs le second terme :

df
(3.16)
fk+1 = fk + h = fk + h g(tk , fk ) ,
dt tk
La substitution de cette expression pour le fk+1 apparaissant au membre de droite de lq. (3.15), (mais
attention, pas pour celui du membre de gauche !), produit alors :
fk+1 = fk +

h
[g(tk , fk ) + g(tk+1 , fk + h g(tk , fk ))] + O(h2 ) ,
2

k = 0, 1, 2, ...

(3.17)

qui est notre algorithme dEuler amlior, qui sappelle en fait la mthode de Heun. On peut montrer
(mais nous ne le ferons pas ici) que cette variation sur le thme de base suffit rduire lerreur de
discrtisation O(h2 ).
En appliquant ceci lq. (3.7), pour laquelle g(t, f ) = f , on obtient la formule suivante :


h
h
fk+1 = fk + [fk + (fk + h fk )] = fk + h fk + fk
k = 0, 1, 2, ...
(3.18)
2
2
En terme de code Python, a aurait maintenant lair de :
h=0.10
t=np.arange(0.,2.,h)
f=np.empty_like(t)
f[0]=1.
for i in range(0,t.shape[0]-1): f[i+1]=f[i]+h*(f[i]+h/2.*f[i])
Comparez bien ce bout de code celui de la mthode dEuler standard. Tout ce qui change est
lvaluation de fk+1 , mais la structure gnrale demeure la mme. La Figure 3.2 montre une comparaison
entre deux solutions avec le mme pas de temps h = 0.5, lun utilisant la mthode dEuler explicite et la
seconde utilisant la version avec extrapolation linaire introduite ci-dessus. Comparant ceci la Fig. 3.1,
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

39

3.3. LE PENDULE LINAIRE

Figure 3.2 Semblable la Figure 3.1, sauf que cette fois le pas de temps est fix h = 0.5, et les deux
solutions numriques portes en graphiques ont t calcule laide des mthodes dEuler avec ou sans
extrapolation linaire du membre de droite, tel quindiqu.
on constate que lvaluation du membre de droite de lEDO en terme dune valeur moyenne mi-pas
produit une solution ayant une prcision comparable celle caractrisant la mthode dEuler explicite
oprant un pas de temps 5 fois plus petit, et ce mme si dans les deux cas la drive est approxime
par une formule de diffrences finies dordre O(h). Il y a un message important ici : lordre de lerreur de
discrtisation contrle le taux auquel diminue lerreur dans la limite h 0 ; mais le choix dun algorithme
plutt quun autre a galement un fort impact sur le niveau derreur une taille de maille donne.
Comme deuxime exemple, prenons lEDO suivante :
df
= at2 ,
dt

(3.19)

avec a une constante connue, les quations (3.11) et (3.17) deviendraient respectivement :
fk+1 = fk + h a t2k ,

fk+1 = fk +

h
a(t2k+1 + t2k ) ,
2

k = 0, 1, 2, ...

k = 0, 1, 2, ...

[Euler explicite]

[Euler avec extrapolation, ouHeun]

(3.20)

(3.21)

Notons que dans ce dernier cas, lextrapolation du membre de droite est triviale puisque t est la variable
dpendante, et donc tk+1 est directement calculable, sans extrapolation. Assurez vous de bien comprendre
comment arriver aux deux expressions ci-dessus partir de lq. (3.19), avant de passer la suite.

3.3

Le pendule linaire

Maintenant que nous savons intgrer des EDOs, passons un problme physique plus intressant, soit,
ahem, le pendule...
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

40

CHAPITRE 3. QUATIONS DIFFRENTIELLES ORDINAIRES

Figure 3.3 Gomtrie et dcomposition de la force gravitationnelle pour le problme du pendule classique. La gravit pointe verticalement vers le bas, une direction quil savre pratique de faire coincider
avec = 0 dans le systme de coordonnes polaires 2D (r, ) utilis pour mesurer la position de la masse
m, lorigine du systme coincidant avec le point dattache du pendule.

La Loi du pendule, soit le fait que la priode doscillation dun pendule ntant pas dplac trop
loin de la verticale ne dpende que de la longueur de sa corde (ou tige) est gnralement attribue
Galile. La lgende veut que lillustre personnage ait eurk sur la chose au dbut des annes 1580,
alors quil ntait encore quun vulgaire petit tudiant sous-gradu en mdecine lUniversit de Pise, en
observant loscillation dune lampe suspendue lintrieur de la nef de la cathdrale de Pise (le sermon
devait tre particulirement gazant...). Les experts ayant dcortiqu les crits et la correspondance de
Galile placent plutt la dcouverte une vingtaine dannes plus tard. Ce qui semble certain, cest que
Galile avait rapidement ralis que le pendule pouvait servir dtalon de mesure du temps (avant 1603
Galile utilisait son pouls comme mesure du temps dans ses expriences sur le mouvement des corps !). Il
fallut cependant attendre un demi-sicle et Christian Huygens (16291695) pour le perfectionnement de
la premire vritable horloge base sur le battement dun pendule.

3.3.1

Solution analytique

On vous a dj passablement assom avec le pendule dans vos cours de physique au CEGEP, donc
nous pourrons passer rapidement sur lide gnrale (voir Figure 3.3). Une masse m est suspendue au
bout dun fil ou tige de masse nulle et de longueur L. Initialement suspendue verticalement, la masse
est dplace latralement et relche, ce qui rsulte en une oscillation dans le plan dfini par la verticale
et la direction de dplacement initial du pendule. Lapplication de la Loi de Newton est facilite si lon
choisit de travailler en coordonnes polaires (r, ), avec lorigine au point de suspension du pendule. Le
, et la composante-r de F = ma se rduit un
dplacement est alors uniquement dans la direction e
quilibre instantan entre la tension dans la corde (ou tige) et la composante de la force gravitationnelle
r . La composante- conduit quelque chose de plus intressant. Lacclration
projete dans la direction e
est donne par
dans la direction e
a = L
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

dv
d2
=L 2 ,
dt
dt

(3.22)
27 octobre 2014

41

3.3. LE PENDULE LINAIRE

Comme la composante de la force gravitationnelle projete dans la direction est donne par mg sin
(voir Figure 3.3), la composante de F = ma conduit :
g
d2
= sin .
dt2
L

(3.23)

Dans la limite o le dplacement angulaire du pendule (mesur en radians) est trs petit, on peut approximer les sinus et cosinus comme suit :
sin ' ,

cos ' 1 .

(3.24)

Lquation (3.23) se rduit alors :


d2
= 2 ,
dt2

(3.25)

o on a dfini
r
=

g
.
L

(3.26)

Contrairement lq. (3.23), cette dernire quation diffrentielle du 2e ordre est linaire, puisquelle
dpend linairement de . Lquation (3.25) accepte des solutions de la forme gnrale
(t) = A sin(t) + B cos(t) ,

(3.27)

o les constantes dintgration A et B sont dtermines par les conditions initiales du problme, et
reprsente la frquence angulaire doscillation (units : rad s1 ) par rapport la position dquilibre
= 0. Remarquez quon a ici deux constantes dintgration, comme il se doit puisque lq. (3.25) est
dordre deux. Pour un pendule dplac un angle 0 de la verticale et relch t = 0 sans lui donner de
vitesse initiale, on a A = 0 et B = 0 . En terme de conditions initiales sur la variable (t), ceci revient
exiger :

d
=0.
(3.28)
(0) = 0 ,
dt t=0
Les quations (3.25) et (3.27) dfinissent le mouvement harmonique simple, dont les subtilits vous
tiendront fort occup(e)s lhiver prochain en PHY-1620...
Dans le contexte du pendule, tout ceci devrait vous tre dj familier. Utilisons maintenant nos nouvelles habilets numriques et voyons o a nous mnera. Nous allons dabord solutionner numriquement
lquation du pendule linaire (3.25), pour laquelle nous connaissons la solution analytique exacte (3.27),
laide de la mthode dEuler (3.2). Nous allons par la suite (3.4) nous concentrer sur la solution du
pendule nonlinaire, telle que dcrite par lquation (3.23). a, ce sera dfinitivement du nouveau !

3.3.2

Reformulation en deux quations dordre 1

Du point de vue purement numrique, face une EDO dordre lev (ici dordre 2 pour lq. (3.25)),
il est prfrable dintroduire des variables dpendantes additionnelles permettant de transformer lEDO
en un systme de deux EDOs couples, chacune dordre 1. Dans le cas de lq. (3.25), il suffit de dfinir :
d
=v ,
dt

(3.29)

dv
= 2 ,
dt

(3.30)

de telle sorte que lq. (3.25) devienne :

Le systme de deux quations (3.29) et (3.30) est mathmatiquement quivalent lq. (3.25), mais il
savre souvent plus facile den obtenir des solutions numriques prcises 1 . Quelque soit la formulation
mathmatique utilise, tout comme prcdemment le problme du pendule nous offre un problme dit aux
valeurs initiales, cest dire quune condition initiale nous est donne t = 0, et doit tre avance
dans le temps.
1. Ceci peut paraitre bizarre, mais cest en fait reli lapplication des conditions initiale un niveau de prcision
identique celui de la discrtisation de lEDO mme.

27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

42

3.3.3

CHAPITRE 3. QUATIONS DIFFRENTIELLES ORDINAIRES

Euler explicite, bis

La premire tape consiste encore une fois discrtiser la variable indpendante t sur une maille, que
nous choisirons ici quidistante :
tk+1 = tk + h ,

k = 0, 1, 2, ...

o t0 correspond la valeur de t laquelle est spcifie la condition initiale. Utilisons maintenant la


mthode dEuler explicite, donne par lq. 3.11, et appliquons-la aux deux EDOs donnes par les q. (3.29)
et (3.30), ce qui conduit immdiatement aux deux quations suivantes,
k+1 = k + hvk ,

k = 0, 1, 2, ...

vk+1 = vk 2 hk ,

k = 0, 1, 2, ...

(3.31)
(3.32)

o (v0 , 0 ) sont donns en condition initiale. Pour un pendule dplac de son point dquilibre un angle
0 , et simplement relch sans lui donner une vitesse initiale, comme auparavant, on a simplement :
[v0 , 0 ] = [0, 0 ] .

(3.33)

Connaissant la condition initiale [v0 , 0 ], les quations discrtises (3.31) et (3.32) permettent donc de
calculer (v1 , 1 ), et ensuite (v2 , 2 ), et ainsi de suite squentiellement jusquau temps final dintgration
dsir.
On aurait facilement pu re-driver cet algorithme sans mme avoir recours lq. (3.11). En effet, tel
que mentionn la section 3.2.1, lalgorithme dEuler explicite peut tre obtenu en substituant la formule
de drive premire dordre O(h) au membre de gauche de lODE intgrer. En appliquant ceci aux
q. (3.29) et (3.30), on obtient,
k+1 k
+ O(h) = vk ,
h
vk+1 vk
+ O(h) = 2 k ,
h

k = 0, 1, 2, ...

k = 0, 1, 2, ...

(3.34)

(3.35)

et aprs quelques simples manipulations algbriques, on retrouve bien les q. (3.31) et (3.32) donnes
ci-haut.
Le code Python suivant montre un exemple de code complet qui effectue cette intgration numrique
du pendule.
Code Python pour intgrer le pendule avec Euler explicite
1
import numpy as np
2
3
4
5
6

omega2=1.
#omega**2
h=0.01
#taille du pas de temps
t=np.arange(0,2*np.pi/np.sqrt(omega2),h) #maille de temps
npas=t.shape[0]
#nombre de pas de temps a faire

7
8
9

theta=np.empty(npas) #tableau pour langle


v=np.empty(npas)
#tableau pour la vitesse

10
11
12

theta[0]=1. #condition initiale


v[0]=0.
#condition initiale

13
14
15
16

for k in range(0,npas-1):
theta[k+1]=theta[k]+h*v[k]
v[k+1]=v[k]-h*omega2*theta[k]

#eq. 3.31
#eq. 3.32

Le rsultat est illustr la Figure 3.4, pour trois choix de pas de temps h. Notez que la variable temps est
exprime en units de la priode doscillation T = 2/, et lamplitude en units du dplacement angulaire
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

3.3. LE PENDULE LINAIRE

43

Figure 3.4 Solutions numriques de lquation du pendule linaire par la mthode dEuler explicite, pour
diffrentes valeurs du pas de temps h : (h = 2/25 4, h = 2/50 , h = 2/100 +). Le temps
est exprim en units de linverse de la frquence doscillation angulaire , donc la priode doscillation est
gale ici 1 dans ces units. Les solutions utilisent la discrtisation dfinie par les qs. (3.34)(3.35), soit
lutilisation dune diffrence finie avant dordre O(h) pour valuer la drive tk . La partie (A) compare
ces diverses solutions la solution exacte (trait plein), avec lamplitude exprime en units de lamplitude
0 du dplacement angulaire initial. La partie B montre les erreurs des solutions numriques par rapport
cette solution exacte.

27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

44

CHAPITRE 3. QUATIONS DIFFRENTIELLES ORDINAIRES

initial 0 . La partie A montre lvolution temporelle des solutions numriques, utilisant diffrents pas de
temps tous relativement grands pour raisons didactiques, tandis que la partie B illustre la variation de
lerreur (), dfinie ici comme la diffrence entre la solution numrique et la solution exacte cos(t) :
(tk ) = k cos(t) .

(3.36)

Remarquons que :
1. Plus h est petit, plus la solution approche de la solution exacte ; on sy attendait mais cest tout
de mme rassurant de constater que cest bien ce qui se passe.
2. De manire gnrale, lerreur croit avec le temps ; ceci est une consquence de la nature squentielle
de lalgorithme dEuler ; toute erreur effectue au pas k est rinjecte dans la solution au pas
k + 1, et est donc cumulative.
3. Lerreur de discrtisation conduit une dviation au niveau de lamplitude de la variation sinusoidale, mais aussi de sa priode.

3.3.4

Euler explicite avec extrapolation linaire, bis

La prcision de la mthode dEuler explicite peut tre encore une fois grandement amliore en valuant
les membres de droite des quations (3.29) et (3.30) mi-pas, soit comme leur valeur moyenne entre entre
tk et tk+1 , et toujours en valuant les membres de gauche avec la formule de drive premire dordre
O(h) :
1
k+1 k
+ O(h) = (vk+1 + vk ) ,
h
2

k = 0, 1, 2, ...

vk+1 vk
2
+ O(h) = (k+1 + k ) ,
h
2

k = 0, 1, 2, ...

(3.37)

(3.38)

On approxime de nouveau les k+1 et vk+1 aux membres de droite partir des valeurs au pas k par
extrapolation linaire base sur un dveloppement en srie de Taylor, tronqu aprs le second terme :
d
= k + hvk ,
dt

(3.39)

dv
= vk h 2 k ,
dt

(3.40)

k+1 = k + h

vk+1 = vk + h

o les secondes galits rsultent de lutilisation des qs. (3.29) et(3.30) pour valuer les deux drives
temporelles associes lextrapolation. Lalgorithme devient alors :
k+1 = k +

vk+1


h
2 h2
vk h 2 k + vk = k + hvk
k ,
2
2



2 h
h2
2
= vk
(k + hvk + k ) = vk hk + vk ,
2
2

k = 0, 1, 2, ...

k = 0, 1, 2, ...

(3.41)

(3.42)

La seule modification notre code Python pour la mthode dEuler consiste remplacer les deux lignes
de code (lignes 15 et 16) faisant le calcul de theta[k+1] et v[k+1] lintrieur de la boucle temporelle
par :
theta[k+1]=theta[k]+h*( v[k]-omega2*h*theta[k]/2.)
v[k+1]=v[k]-h*omega2*( theta[k]+h*v[k]/2.)
Il est important de raliser que lerreur associe lvaluation des drives temporelles aux membres de
gauche par diffrence finies est toujours O(h). Cependant, un maillage donn cet algorithme savre
produire des solutions beaucoup plus prcises que lalgorithme dEuler original, comme on peut le
constater en comparant la Figure 3.5 ci-dessous la Fig. 3.4 ci-dessus. Notons dj les chelles verticales
trs diffrentes sur les parties B ! De toute vidence, notre r-evaluation des membres de droite mi-pas
a produit encore une fois une grande amlioration dans la prcision des solutions pour une maille donne.
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

3.3. LE PENDULE LINAIRE

45

Figure 3.5 Identique la Figure 3.4, sauf quici le membre de droite des quations est valu comme
la moyenne aux pas k et k + 1, par extrapolation linaire partir du pas k (qs. (3.41)) et (3.42)). Notez
le changement des chelles verticales, en particulier sur la partie B, par rapport la Fig. 3.4.

27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

46

3.4

CHAPITRE 3. QUATIONS DIFFRENTIELLES ORDINAIRES

Le pendule nonlinaire

Revenons notre bon vieux pendule. Si nous ne faisons pas lapproximation du petit dplacement par
rapport la position dquilibre (sin ' ), lquation (3.23) demeure nonlinaire en , et la sparation
en deux quations dordre 1 conduit maintenant :
d
=v ,
dt

(3.43)

dv
= 2 sin .
dt

(3.44)

La mthode DEuler explicite sapplique facilement cette situation, produisant lalgorithme


d
= k + hvk ,
dt

(3.45)

dv
= vk h 2 sin k .
dt

(3.46)

k+1 = k + h

vk+1 = vk + h

La premire de ces expression est identique son quivalent pour le pendule linaire (q. (3.39)), mais
la seconde est maintenant nonlinaire au membre de droite ; cependant, dans le contexte de la mthode
dEuler explicite k est connu, et calculer sin k ne prsente donc aucune difficult particulire. Sen tenant
la mthode dEuler explicite pour linstant, on na qu changer la ligne 16 du code ci-haut par :
v[k+1]=v[k]-h*omega2*np.sin(theta[k])
Calculons maintenant une srie de solutions au problme du pendule nonlinaire, obtenues laide de
lalgorithme ci-dessus. Les conditions initiales correspondent de grands dplacements angulaire initiaux
(voir Fig. 3.6), mais le pendule est encore une fois relch sans lui donner de vitesse initiale. La Figure
3.7 illustre la variation temporelle du dplacement angulaire (mesur en radians), pour un ensemble de
dplacement initiaux allant jusqu /2, soit une position initiale du pendule lhorizontale. La premire
chose remarquer est que la frquence
pdoscillation dpend maintenant de la condition initiale, contrairement au pendule linaire o = g/L quelle que soit lamplitude initiale. Ceux qui prendront le
cours de mcanique classique 2 verront quil est en fait possible de dterminer analytiquement la priode
doscillation du pendule nonlinaire, mais le calcul est beaucoup plus complexe que ce que nous avons vu
ci-haut. En bref, la solution analytique est exprime sous forme dintgrale comme suit,

=p

4
g/L

Z
0

d
p

1 sin (0 /2) sin2

(3.47)

o lon voit clairement la dpendance de la priode doscillation sur son amplitude 0 . Cette dpendance
de la frquence doscillation sur lamplitude explique pourquoi il est si difficile de demeurer synchronis
avec un(e) petit(e) camarade, chacun sur sa balanoire ; mme une petite diffrence damplitude conduira
dj aprs quelques cycles doscillation un dphasage perceptible.
Un autre truc qui nest pas particulirement vident sur la Figure 3.7, cest que la forme de loscillation
nest plus exactement sinusoidale ici. La diffrence ne devient visuellement perceptible que pour des
dplacements initiaux approchant , comme lillustre la Figure 3.8. videmment, si lon veut considrer
des dplacements initiaux dpassant /2 nous sommes forc de supposer que la masse m nest pas relie
au point de pivot par une corde, mais par une tige rigide ; sinon la chute initiale de m se fera verticalement
vers le bas, et une corde plierait ; ceci nous entrainerait dans un tout nouveau rgime dynamique.

3.5

Au del dEuler

La mthode dEuler explicite est un algorithme dune grande simplicit, facilement gnralisable des
systmes dEDOs, et mme sans extrapolation linaire du membre de droite est souvent suffisante dans bien
des applications. Cependant son erreur de discrtisation varie comme O(h), ce qui force lutilisation dune
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

3.5. AU DEL DEULER

47

Figure 3.6 Le pendule nonlinaire : le dplacement angulaire initial (0 = [0.1, 0.2, 0.5, 1.0, /2]) de la
masse m est maintenant suffisamment grand pour que lapproximation sin ' ne tienne plus la route.

Figure 3.7 Solutions numriques au problme du pendule nonlinaire, pour des amplitudes initiales
0 = [0.1, 0.2, 0.5, 1.0, /2] radians, tel quillustr sur la Figure 3.6. On remarquera que la priode doscillation augmente avec lamplitude du dplacement initial 0 . Les lignes verticales pointilles sont traces
aux demi-priodes du rgime linaire.

27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

48

CHAPITRE 3. QUATIONS DIFFRENTIELLES ORDINAIRES

Figure 3.8 Solutions numriques au problme du pendule nonlinaire, pour une amplitude initiale
0 = 0.95 , i.e., la masse m est relache t = 0 dun point situ presquexactement au dessus du pivot
du pendule. Le trait pointill est une fonction sinusoidale ayant la mme priode et amplitude.
maille trs serre, qui se retrouve donc sensible laccumulation des erreurs darrondissement au niveau
des oprations arithmtiques. Si vous avez suivi le raisonnement dans notre discussion des formules de
diffrences finies au chapitre prcdent, vous aurez peut-tre dj anticip que des algorithmes plus prcis
que la mthode dEuler peuvent tre obtenus en conservant plus de termes dans le dveloppement en srie
de Taylor de f (t), et/ou en dveloppant les membres de droite en srie. Parmi la quasi-infinit dalgorithmes
pouvant tre produits de cette faon, celui que vous risquez de rencontrer le plus frquemment est sans
nul doute la mthode de Runge Kutta dordre 4 (souvent simplement appele la mthode de RungeKutta tout court) ; lide ici est de subdiviser le pas de temps h en sous-pas travers lesquels la solution
est avance en rvaluant le membre de droite chaque sous-pas. Appliqu note EDO nonlinaire
prototypique (3.6), lalgorithme prend la forme suivante :
fk+1 = fk +

h
(G1 + 2G2 + 2G3 + G4 ) + O(h4 ) ,
6

(3.48)

o
G1 = g(tk , fk ) ,

(3.49)

G2 = g (tk + h/2, fk + (h/2)G1 ) ,

(3.50)

G3 = g (tk + h/2, fk + (h/2)G2 ) ,

(3.51)

G4 = g (tk+1 , fk + hG3 ) .

(3.52)

Pour tous les dtails concernant le design de ces algorithmes, voir le chapitre 2 de lexcellent ouvrage de
Golub & Ortega cit en bibliographie la fin du chapitre. Le bouquin de Wood, galement list ci-dessous,
est aussi ( mon avis) une bonne rfrence, tout comme le chapitre 17 de Press et al. cit prcdemment.
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

49

3.5. AU DEL DEULER

Nous navons fait ici queffleurer ce vaste sujet quest la solution numrique des quations diffrentielles
ordinaires. En particulier, nous navons considr ici que des EDO dcrivant des problmes dits aux
valeurs initiales : on nous fournit une quation dvolution (genre /t = ...) et une condition initiale
t = t0 , et le problme consiste avancer cette condition initiale dans le temps. Un autre type de situation
dcrite par une EDO est le problme dit aux valeurs limites : on nous fournit une EDO dcrivant un
aspect dun systme dfini sur un domaine (genre x [a, b]), et deux conditions limites x = a et x = b ;
le problme consiste alors obtenir une solution lEDO dans le domaine, qui soit compatible avec ces
conditions limites. Vous ferez connaissance avec ce genre de problme en mcanique quantique entre
autres lorsque vous solutionnerez lquation de Schrdinger dans un puits de potentiel.
Les rfrences listes en fin de chapitre devraient suffire ceux et celles dsirant quiper encore plus
leur boite outils numrique de mthodes de solutions de ces diverses classes dEDO. Pour nous ici, il
est maintenant temps de passer autre chose.
Exercices:
1. Une unit de temps naturelle pour le problme du pendule est linverse de la frquence doscillation = g/L ; introduisez une nouvelle variable temps (t ) telle que
t = t ,
et montrez que les deux quations diffrentielles dordre 1 dcrivant le mouvement pendulaire (les
qs. (3.29)(3.30) prennent maintenant la forme :
d
=v ,
dt

dv
= .
dt

2. Dterminez jusqu quel angle (en rad.) les approximations sin et cos 1 demeurent
valides 103 , 104 et 105 prs.
3. Pourquoi cette sparation de la vraie quation du pendule (q. (3.25)) en deux quations diffrentielles dordre 1 ? Utilisez une formule de diffrence finie pour la drive seconde pour produire un
algorithme semblable la mthode dEuler explicite ; codez le en Python, et comparez sa prcision
( pas de temps gal) celle de lalgorithme standard.
4. Codez en Python la mthode dEuler explicite et sa version avec extrapolation linaire, pour le
problme du pendule linaire. Intgrez sur une priode complte doscillation, et examinez comment
varie lerreur associe cette valeur finale mesure que le pas de temps diminue ; exprimez vos
rsultats sous la forme dun quivalent de la Figure 2.5.
5. Codez en Python la mthode de Runge-Kutta pour le problme du pendule linaire. Produisez
lquivalent des Figures 3.4 et 3.5. Comment se compare cette mthode aux deux autres considres
dans ce chapitre, soit Euler explicite et Euler avec extrapolation linaire ?

Bibliographie:
Le chapitre 17 du Numerical Recipes, cit en bibliographie au chapitre 1, discute de manire plus approfondie les divers algorithmes dcrits dans ce chapitre, en bien dautres en plus. un niveau mathmatique
plus pouss, les deux ouvrages suivant demeurent des classiques incontournables :
Gear, C.W., Numerical Initial Value Problems in Ordinary Differential Equation, Prentice-Hall (1971),
Stoer, J., & Bulirsch, R., Introduction to Numerical Analysis, 3e d., Springer (2002).
Plus accessible, quoique que toujours dans le costaud, je recommanderais :
Golub, G.H., & Ortega, J.M., Scientific Computing and Differential Equations, Academic Press (1992),
Wood, W.L., Practical time-stepping schemes, Oxford (1990).

27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

50

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

CHAPITRE 3. QUATIONS DIFFRENTIELLES ORDINAIRES

27 octobre 2014

51

Chapitre 4

Nonlinarit et chaos
4.1

Encore le pendule...

Vous en serez peut-tre surpris, mais notre bon vieux pendule a encore en poche de quoi nous tenir
occup pendant tout un autre chapitre... Mme avec le terme en sin conserv comme tel, lquation (3.23)
demeure un modle simplifi du mouvement pendulaire rel. Si vous avez dj jou avec un pendule, vous
aurez certainement remarqu que le mouvement ne perdure pas linfini. Ceci est du la force de friction
qui sexerce entre la masse m (et le fil ou la tige) du pendule et lair ambiant. Cette force de friction
dissipe lnergie cintique de la masse m, et donc ralentit inexorablement le pendule. Nous commencerons
par examiner ceci la 4.3, non sans avoir tout dabord introduit un concept physique qui sera fort utile,
soit lespace de phase (4.2). Si lon dsire maintenir le mouvement pendulaire, nous devons clairement
lui fournir de lnergie, et ceci peut se faire par forage mcanique du pendule, sujet de la 4.4. Nous
verrons ensuite comment la combinaison du forage et de lamortissement peut conduire des solutions
stationnaires, dans le sens que le battement du pendule conserve une amplitude constante (4.5). Cette
situation prime abord pas trop excitante nous mnera la notion de bifurcation (4.6), et deviendra
encore plus surprenante quand nous examinerons le comportement de ces solutions plus loin dans
lespace des paramtres (4.7), ce qui nous plongera littralement en plein chaos.

4.2

Lespace de phase

Que ce soit en version linaire ou nonlinaire, nous avons lhabitude de penser au mouvement du
pendule exclusivement en terme de la variation dans le temps de sa position angulaire (viz. Fig. 3.3).
Cependant, notre traitement numrique de lq. (3.23) a commenc par lintroduction dune seconde
variable dynamique, v d/dt. Cette variable est dite dynamique car son volution est dcrite par
une quation diffrentielle impliquant une drive temporelle, au mme titre que . Dun point de vue
strictement mathmatique, rien dans notre systme de deux quations diffrentielles couples dordre 1,
soit les qs. (3.43)(3.44), ne confre la variable un status particulier par rapport la variable v.
Les variables et v peuvent tre interprtes comme les coordonnes dun point (, v) dans un
espace bi-dimensionnel, et lvolution dynamique du systme ici le pendule est entirement dcrite
par la trajectoire de ce points dans cet espace de phase bi-dimensionnel, partir du point (0 , v0 )
correspondant la condition initiale.
Revenons la forme linaire du problme du pendule ; on a vu que pour un pendule dplac une
distance angulaire 0 ( 1) et relach sans lui donner de vitesse initiale, lvolution temporelle du dplacement angulaire est donne par un mouvement harmonique simple :
(t) = 0 cos(t) ,

(4.1)

avec 2 = g/L ; la variable v volue donc dans le temps selon :


1
v(t) = 0 sin(t) ,

(4.2)

Les membres de droite des quations (4.1) et (4.2) sont les quations paramtriques dun cercle de rayon 0
centr sur (0, 0) dans un espace [, v/]. Lvolution temporelle du pendule est dcrite par le dplacement
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

52

CHAPITRE 4. NONLINARIT ET CHAOS

Figure 4.1 Espace de phase pour le pendule nonlinaire ( tige rigide). Les trajectoires fermes (en
rouge) correspondent des mouvements oscillatoires autour de la position dquilibre (, v) = (0, 0).
Les courbes vertes dlimitent la rgion des orbites fermes de celles des trajectoires ouvertes (orange),
correspondant une masse tournant perptuellement dans le sens horaire (v > 0) ou antihoraire (v < 0).
Les cinq plus petites orbites fermes correspondent aux solutions de la Figure 3.7.
vitesse constante dun point (, v/) dans le sens horaire. Le point (0, 0) correspond ici une solution
dquilibre o le pendule est au repos et pend directement vers le bas.
Si le dplacement initial du pendule ne satisfait pas la condition 0  1 nous permettant de remplacer
sin par , les trajectoires ne sont plus des cercles, mais lvolution du pendule nonlinaire peut toujours
tre dcrite par une trajectoire ferme dans lespace de phase. Ceci est illustr par les trajectoires en rouges
sur la Figure 4.1. Partant du centre (0, 0), les cinq premires correspondent aux cinq solutions de la Figure
3.7, et la sixime a comme condition intiale (0 , v0 ) = (5/6, 0). Notons que lespace de phase du pendule
(linaire ou non) est priodique dans la direction-, la priodicit tant de 2 puisque sin( 2) sin().
Seules les trajectoires centres sur = 0 sont illustres ici. Les solutions linaires ne sont valides que trs
prs des points (, v) = (2n, 0), avec n = 0, 1, ...
Le fait que ces trajectoires soient fermes est videmment une consquence directe de la priodicit du
mouvement. Cette priodicit est ici une consquence directe de la conservation de lnergie. Le contenu
nergtique de la masse m fixe au bout de notre pendule inclut deux contributions, soit son nergie cintique et son nergie potentielle gravitationnelle. Si on choisit comme point zro du potentiel gravitationnel
la hauteur du pivot du pendule, on a :
E=

1
mv 2 mgL cos ,
2

(4.3)

En labsence de toute friction avec lair ambiant, cette quantit dnergie, quelle quelle soit t = 0,
doit tre conserve pour tout t > 0, et ce que le pendule opre en mode linaire ou nonlinaire. Le
mouvement pendulaire peut donc tre vu comme un change cyclique entre lnergie cintique et potentielle
gravitationnelle de la masse m.
La transposition du mouvement acclr dans son espace de phase nous permet de pousser plus loin
notre tude du pendule. Considrons un pendule orient verticalement vers le haut ( = ) et au repos
(v = 0). Pour une masse m monte au bout dune tige rigide, cest l une position dquilibre, car la
force de gravit est compltement quilibre par la rigidit de la tige. Lnergie est ici E = mgL. Sujet
maintenant tout dplacement angulaire mme des plus minuscules, lquilibre sera rompu et le pendule
se mettra tourner, dans
le sens du petit dplacement. Rendu en bas, = 0, lq. (4.3) nous garantit
que la vitesse sera v = 2gL, et retombera zro une fois que le pendule aura complt un tour complet.
Que se passe-t-il maintenant si on donne une vitesse initiale v0 > 0 au pendule dans sa position
dquilibre (instable) = ? Comme auparavant le pendule acclrera durant la descente et dclrera
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

53

4.3. LE PENDULE AMORTI

durant la remonte, mais son tour complt et arriv = sa vitesse sera redevenu gale sa vitesse
initiale... et donc ca repart pour un second tour,
p et ainsi de suite ad aeternam. On est ici dans une situation
o la vitesse oscille entre des limites v0 et v02 + 4gL, et augmente continuellement. Ceci corresponds
aux trajectoires traces en orange dans la moiti suprieure de lespace de phase sur la Figure 4.1. Si la
vitesse initiale est ngative, le mouvement sera dcrit par les trajectoires oranges dans la moiti infrieure
de la Figure.
Les courbes vertes sur la Figure 4.1 dfinissent les sparatrices de lespace de phase. Le point dintersection de ces sparatrices avec la ligne v = 0 correspond au pendule en quilibre (instable) la position
(, v) = ((2n 1), 0), n = 0, 1, ..., soit la masse m positionn verticalement exactement au dessus du
pivot.
Dans un systme dterministe comme notre pendule, deux trajectoires ne peuvent pas se croiser dans
lespace de phase ; il nest pas possible non plus une trajectoire de se croiser soi-mme ; si ctait le cas,
au point de croisement il y aurait un choix faire, savoir laquelle des deux branches possibles prendre
pour la suite de lvolution. Les points de croisement des sparatrices peuvent paraitre violer ce prcepte,
mais on verra au chapitre 4 que le temps requis pour atteindre un de ces points tend vers linfini. Et
attendre un temps infini, cest trs long, surtout vers la fin...

4.3

Le pendule amorti

Tout corps se dplaant dans un fluide et lair compte comme un fluide sera sujet (au minimum)
une force de traine (FD ) oriente dans la direction oppose son vecteur vitesse. Pour des mouvements
relativement lents, dans le sens que la traine ne dveloppe pas de turbulence, la grandeur de cette force
de traine se retrouve directement proportionnelle la grandeur de la vitesse :
FD = v .

(4.4)

o (> 0) est un coefficient de friction (units : N s/m). Remarquez dj que si cette force de traine est
la seule force en prsence, la Loi de Newton
ma = m

dv
= v .
dt

(4.5)

nous indique immdiatement quun objet de masse m se dplaant une vitesse v0 verra sa vitesse
dcroitre exponentiellement selon :
 
v(t) = v0 exp t .
(4.6)
m
Vous en apprendrez plus sur tout a en ne manquant pas de vous inscrire lexcellent cours PHY-3140,
Hydrodynamique, gnralement enseign la session dhiver par lauteur de la version originale de ces
notes : Paul Charbonneau. Bon, bref, il ne sagit plus que dajouter cette force au membre de droite de la
, on obtient
composante- de notre quation du mouvement. Comme ici la vitesse linaire v Ld/dt e
L

d2
L d
= g sin
,
2
dt
m dt

(4.7)

et notre sparation en deux quations diffrentielles ordinaires couples dordre un nous donne maintenant :
d
=v ,
dt

(4.8)

dv
= 2 sin v ,
dt

(4.9)

o on a de nouveau dfini 2 = g/L, et galement


=

.
m

(4.10)

Ces deux quations ne diffrent des quations (3.43) et (3.44) pour le pendule non-linaire que par lapparition dun deuxime terme (lamortissement) dans lquation diffrentielle pour v. En outre, il est trivial
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

54

CHAPITRE 4. NONLINARIT ET CHAOS

0 = 0.1, =1

1.0

non amorti, =0
amorti, =0.05
amorti, =0.3

(t)/0

0.5

0.0

0.5

1.0
0

10

t/2

15

20

Figure 4.2 Solutions numriques du mouvement du pendule nonlinaire ( tige rigide) amorti obtenues
avec la mthode de Heun. Les deux traits en couleur ont la mme condition initiale (0 , v0 ) = ( 0.1, 0),
mais deux valeurs diffrentes de reprsentant un faible ou un fort amortissement. Pour rfrence, le trait
noir montre la solution pour le pendule nonlinaire non-amorti avec la mme condition initiale.

de modifier notre algorithme prcdent pour rsoudre ces quations. La Figure 4.2 montre les solutions
numriques, pour langle en fonction de t, obtenues laide de la mthode de Heun (3.5) pour deux
valeurs distinctes de mais la mme condition initiale (0 , v0 ) = ( 0.1, 0). Ces solutions correspondent
une oscillation du pendule partir de sa position de dpart, avec une amplitude dcroissant exponentiellement avec le temps et une frquence croissant avec le temps. La Figure 4.3 illustre ces deux mmes
solutions mais cette fois dans lespace de phase [, v] du modle. Avec = 0 (non montr), ces solutions suivraient une trajectoire ayant la forme dune orbite ferme collant de prs la sparatrice (trait noir). Ici, en
prsence damortissement, les trajectoires deviennent des spirales convergeant vers la position dquilibre
(, v) = (0, 0).
Ici, en fait, quelle que soit la condition initiale ou la valeur de (> 0), les solutions convergent toujours
vers la solution dquilibre (, v) = (0, 0). On appelle un tel point un attracteur dans lespace de
phase puisquil attire lui toutes les solutions, quelles que soient les conditions initiales. La vitesse
de convergence des solutions vers lattracteur dpendra videmment de la valeur de , et du contenu
nergtique de la condition initiale, mais si lon attend assez longtemps cette convergence aboutira toujours
(0, 0) ; ou, plus prcisment, lun ou lautre des points situs (, v) = (2n, 0) , n = 0, 1, 2, ...

4.4

Le pendule forc

Passons maintenant une autre variation sur le thme du pendule. Cette fois il sagit dun pendule
dont le pivot est sujet un forage vertical harmonique ; par exemple, le pivot peut tre mont sur un
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

4.4. LE PENDULE FORC

55

Figure 4.3 Trajectoires dans lespace de phase pour les deux solutions du pendule nonlinaire amorti
prsentes la figure 4.2. Dans les deux cas la trajectoire aboutit (, v) = (0, 0).

27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

56

CHAPITRE 4. NONLINARIT ET CHAOS

Figure 4.4 Gomtrie du forage pour le problme du pendule forc (ici de manire exaggre...).
mcanisme oscillant verticalement une frquence 0 ajustable, selon un mouvement harmonique :
z(t) = z0 cos(0 t) .

(4.11)

un tel mouvement est associ une acclration galement harmonique, qui nest que la drive seconde
de cette expression :
gz (t) = g0 cos(0 t) ,

g0 = z0 02 .

(4.12)

Lide gnrale est illustre sur la Figure 4.4, pour un forage passablement vigoureux. Pour un pendule
tige rigide, cette acclration additionnelle sera transmise la masse m par lintermdiaire de la tige,
ce qui fait que la composante- de notre quation du mouvement aura maintenant lair de :
L

d2
= (g g0 cos(0 t)) sin .
dt2

(4.13)

La dcomposition en deux quations diffrentielles dordre 1 donne alors :


d
=v ,
dt

(4.14)

dv
= 2 (1 cos(0 t)) sin ,
dt

(4.15)

o on a dfini un paramtre mesurant lamplitude relative du forage par rapport la gravit :


=

g0
.
g

(4.16)

Il y a donc maintenant deux paramtres additionnels contrlant le comportement du pendule : la frquence


0 et lamplitude relative du forage harmonique. Dpendant des valeurs choisies pour ces paramtres,
le pendule peut se comporter de manire carrment bizarre. En particulier, on pourrait sattendre que
dans la limite 0 le comportement du pendule devienne identique celui du pendule non-forc ; comme
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

4.4. LE PENDULE FORC

57

Figure 4.5 Opration du mcanisme dexcitation paramtrique, dans la situation o 0 = 2. Le


diagramme illustre une demie-oscillation du pendule, ici de la gauche vers la droite. Les flches verticales
rouges au haut du diagramme indiquent la phase et lamplitude du forage du pivot. On notera que le
forage complte un cycle complet durant un demi-cycle doscillation du pendule.

on le verra dans ce qui suit, cel savre ne pas tre toujours le cas, dpendant de la valeur choisie pour
la frquence de forage 0 .
Certains comportements du pendule forc harmoniquement sont merveilleusement contre-intuitifs.
Lexcitation paramtrique lest particulirement. Considrons ce qui se passe si le forage harmonique
p
du pendule se fait une frquence 0 qui est un multiple pair de la frquence doscillation = g/L (e.g.,
0 = 2). Si lamplitude doscillation est suffisamment petite pour que le pendule opre dans le rgime
linaire, alors en relchant notre pendule au moment opportun on se retrouve dans une situation o
durant la phase descendante du pendule, le forage du pivot est en phase remontante, ce qui augmente
lacclration angulaire de la masse m ; et quand le pendule reprend la phase remontante, le forage est
vers le bas, ce qui rduit la gravit effective et fait que la masse m a moins tendance ralentir (voir
Fig. 4.5). Ces deux effets feront que la masse m remontera plus haut quelle ne laurait fait en labsence
du forage. Mais puisque 0 = 2, la prochaine descente a repart de la mme faon. Donc, en un cycle
complet doscillation du pendule, la masse m subit deux cycles damplification par le forage externe. Il
est donc possible, partir dune oscillations infinitsimale, de produire une oscillation de forte amplitude ;
aurement dit, de notre point de vue le pendule se met osciller spontanment. Cette apparente violation
des lois de la physique nen est videmment pas une, puisque que le systme dispose dune source dnergie
externe, soit le mcanisme faisant osciller le pivot. Le point important demeure que loscillation du pivot
peut transfrer de lnergie au pendule et amplifier son mouvement.
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

58

CHAPITRE 4. NONLINARIT ET CHAOS

Figure 4.6 Trajectoires dans lespace de phase pour trois solutions numriques au problme du pendule
forc et amorti. Toutes les solutions utilisent les valeurs de paramtres 0 = 2, = 0.25, et = 0.03.
les conditions initiales sont indiques par des colors.

4.5

Le pendule forc et amorti

Il est maintenant temps de combiner lamortissement hydrodynamique et le forage harmonique. Nous


solutionnons donc maintenant :
L

d2
L d
= (g g0 cos(0 t)) sin
,
dt2
m dt

(4.17)

comme dhabitude exprime sous la forme de deux quations diffrentielles dordre 1 :


d
=v ,
dt

(4.18)

dv
= 2 (1 cos(0 t)) sin v ,
dt

(4.19)

avec et donns par les qs. (4.16) et (4.10), comme auparavant.


Intuitivement, on peut imaginer que mme en prsence de lamortissement il puisse exister un tat
stationnaire autre que (, v) = (0, 0), puisquune source dnergie extrieure peut amplifier le mouvement
pendulaire. La Figure 4.6 montre les trajectoires dans lespace de phase de trois solutions numriques de
lquation (4.17) par la mthode de Heun, toutes avec 0 = 2, = 0.25, et = 0.03, mais diffrant au
niveau de la condition initiale. Quelle que soit cette dernire, les trajectoires aboutissent toutes sur lorbite
dcrite par le trait noir pais. Nous avons de nouveau affaire ici un attracteur, mais cette fois-ci ce nest
plus un point mais une figure gomtrique plus complexe, soit une courbe ferme dcrivant une oscillation
quasi-harmonique damplitude constante.
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

4.6. BIFURCATIONS

59

Figure 4.7 Amplitude maximale de battement dans ltat stationnaire, pour une squence de solutions
avec 0 = 2 et = 0.05 (vert) et = 0.1 (rouge), en fonction de de lamplitude = g0 /g du forage
harmonique.

4.6

Bifurcations

Si sur la Figure 4.6 la forme de lattracteur dans lespace de phase ne dpend pas de la condition initiale,
elle dpend cependant des paramtres physiques du problme, soit le paramtre mesurant lamplitude
de forage (q. (4.16)), et le paramtre mesurant limportance de lamortissement par la friction de lair.
Considrons la procdure suivante. Gardant tous les paramtres du modles fixes autres que le paramtre
de forage , on produit une squence de solutions pour des valeurs de de plus en plus grandes. Pour
chaque solution, on intgre jusqu la convergence sur lattracteur, et on mesure le rayon de lorbite (plus
prcisment, la valeur maximale m atteinte par la variable angulaire (e.g., m = 1 rad sur la Figure 4.6).
On porte ensuite en graphique ces valeurs de m , en fonction de la valeur du paramtre . Le rsultat
est illustr la Figure 4.7, pour deux valeurs du paramtre damortissement (points verts et rouge).
Certains aspects de cette Figure sont satisfaisant intuitivement. forage gal, les solutions avec plus
faible amortissement se retrouvent produire des amplitudes de battement plus leves ; et amortissement gal, plus lon force fort plus lamplitude de battement est grande. Cependant le dtail de la variation
de m avec est pas mal moins intuitif. Pour un donn, il existe de toute vidence une valeur de
en dessous de laquelle il ny a pas du tout de croissance de lamplitude par excitation paramtrique, et
quand elle dbute, elle dbute de manire soudaine et rapide. La valeur de laquelle ceci se produit est
appelle point critique, et le changement dans la dynamique globale du systme se produisant quand
on croise ce point est appel bifurcation. On notera que la solution dquilibre demeure une solution
tout--fait valide mme au del du point de bifurcation ; cependant, cette solution se retrouve instable
par rapport la solution oscillatoire, mais seulement si lnergie injecte par le mcanisme de forage peut
dpasser lnergie perdue en friction contre lair. Cest pourquoi le point critique a une valeur numrique
finie, qui croit mesure que augmente.
La bifurcation est un phnomne typique des systmes nonlinaires. Dans bien des situations que vous
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

60

CHAPITRE 4. NONLINARIT ET CHAOS

avez dj rencontres dans vos tudes de la physique, il existe une relation linaire entre une cause et
un effet. Avec F = ma par exemple, quelle que soit la valeur de F, si vous laugmentez de 1% (disons)
vous vous attendez une augmentation directement proportionnelle de lacclration a. Contrastez ceci
la situation prsente la Figure 4.7, par exemple pour = 0.1 (points rouge). Si = 0.1, le pendule
noscille pas, et une augmentation de par 1% ( = 0.101) ne le fera pas osciller plus. = 0.4
par contre, une augmentation de 1% = 0.404 produira une augmentation quasi-proportionnelle de
lamplitude maximale doscillation. Mais = 0.2, une petite augmentation de 1% nous fait passer dun
systme qui noscille pas du tout un systme qui oscille avec une amplitude substantielle, m ' 0.5 rad.
En fait, au point de bifurcation mme on a dm /d . Mme un niveau purement qualitatif (osciller
ou ne pas osciller, zattize ze qustcheune...), la rponse du systme une petite variation dun paramtre
dpend donc de manire trs sensible de la valeur exacte de ce paramtre ; quand un point de bifurcation
est travers, le systme passe un tat dynamique diffrent. Cest ce qui fait toute la complexit des
systmes nonlinaires.

4.7

Le chaos

Une orbite stable dans lespace de phase, telle quillustre la Figure 4.6 est possible ici en prsence
dun amortissement important en raison du fait que la frquence de forage a t judicieusement choisie
afin de profiter de la rsonance par excitation paramtrique. Quen est-il de lvolution du pendule forc
si la frquence de forage na pas une valeur permettant lexcitation paramtrique ? Le forage transfre
toujours de lnergie au systme, donc ou pourrait sattendre ce que pour un amortissement pas trop
important et/ou une amplitude de forage suffisamment leve, le mouvement pendulaire puisse perdurer.
Quelle forme prend alors ce mouvement ?
La Figure 4.8 montre lvolution temporelle dun pendule forc et amorti, avec valeurs de paramtres
0 = 1.3, = 0.75, et = 0.03, et une condition intiale (0 , v0 ) = (5/6, 0). La solution est obtenue ici
par la mthode de Heun, avec un pas de temps h = 0.014. Chaque image montre le pendule 10 poques
successives quidistantes dans le temps, avec la teinte de gris codant le temps : le pendule le plus ple
correspond au premier pas de temps du groupe de dix, et le plus fonc au dernier. Chaque image reprsente
la suite de la prcdente, de gauche droite et du haut vers la bas, tel que numrot ; le pendule en noir
sur la premire image est donc la mme position que celui en gris le plus ple sur la seconde, en ainsi de
suite dune image lautre 1 . Le mouvement est de toute vidence trs complexe, et pas harmonique ou
quasi-harmonique du tout ! Notez en particulier comment le pendule parvient parfois effectuer quelques
tours complets successifs autour du pivot (e.g., images 1720).
La Figure 4.9 montre lvolution de la mme solution, cette fois dans le sous-espace de phase [, v] du
systme. On parle de sous-espace ici parce que lespace de phase complet inclut maintenant une troisime
dimension, soit celle de lamplitude de forage du pivot, qui ajouterait ici une dviation harmonique des
trajectoires hors du plan de la feuille. Cest pourquoi la trajectoire semble se croiser occasionnellement
ici, chose impossible dans lespace de phase complet dun systme dterministe. On voit que le pendule
est parfois captur par lun ou lautre des points fixes (, v) = (2n, 0) pendant quelques orbites,
mais la grande amplitude de forage utilise ici ( = 0.75) russit len extirper malgr lamortissement
substantiel ( = 0.03), ce qui fait que la solution vagabonde dune cellule priodique de lespace de
phase lautre, dune manire en toute apparence erratique. Un saut dune cellulle correspond une
rvolution complte du pendule autour du pivot, dans le sens horaire (saut droite) ou antihoraire (saut
gauche).
Mathmatiquement parlant, le mouvement du pendule est en fait ici plus querratique, il est chaotique.
Le chaos est une notion qui a t apprte toutes les sauces, et il est donc important de bien spcifier
(et mme quantifier) ce que lon appelle chaos ici.
Considrons deux solutions ayant des valeurs de paramtres identiques, soit = 104 , 0 = 1.3,
= 0.25, mais ne diffrant que par leur condition initiale, et mme l vraiment trs peu :
(, v)1 = (/2, 0) ,

(, v)2 = (/2 + 104 , 0) .

(4.20)

On utilise encore une fois ici la mthode de Heun, avec un pas de temps h = 0.019. Au dbut, les deux
solutions sont videmment indistingables loeil... mais seulement pendant trois cycles doscillation ;
vers t/2 = 25, une diffrence devient notable, et partir de t/2 ' 30 les deux solutions divergent
1. Une animation de cette solution peut tre visionne sur la page Studium du cours.

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

4.7. LE CHAOS

61

Figure 4.8 Battement dun pendule nonlinaire amorti et forc (0 = 1.3, = 0.75, = 0.03). Chaque
image montre 10 positions successives du pendule espaces galement dans le temps, selon une squence
allant du gris clair vers le noir. Chaque image successive reprend l o la prcdente se termine, de la
gauche vers la droite, et du haut vers le bas, tel que numrot.

27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

62

CHAPITRE 4. NONLINARIT ET CHAOS

Figure 4.9 volution de la mme solution quillustre sur la Figure 4.8, cette fois dans le sous-espace
de phase [, v] du systme. Le codage en teintes de gris de la trajectoire suit celui de la Figure 4.8, chaque
segment successif grisnoir correspondant une image.
compltement lune de lautre. Cette divergence nest pas due un effet dinstabilit numrique associe
une erreur darrondissement, ou rien du genre ; la divergence des deux solution a lieu mme si on diminue
ou augmente la taille du pas de temps, ou si on passe Runge-Kutta, etc. Leffet est rel, et nous devons
en comprendre lorigine.
Commenons par nous dfinir une mesure quantitative de lcart entre les deux solutions ; il est naturel
dutiliser la distance entre les deux solutions dans le sous-espace de phase [, v], dfinie comme :
(t) =

(1 (t) 2 (t))2 + (v1 (t) v2 (t))2 .

(4.21)

En vertu des conditions initiales adoptes ici, la distance initiale entre les deux solutions est de =
104 t = 0. La Figure 4.10 montre lvolution temporelle de cette quantit, avec une chelle verticale
logarithmique. On remarquera que lcart entre les deux solutions croit exponentiellement, essentiellement
depuis t = 0, jusqu ce que les deux solutions divergent compltement. Quelle que soit la condition
initiale, ou lamplitude de lcart introduit t = 0, pour des valeurs des paramtres , 0 , et fixes, cette
croissance exponentielle se fait toujours au mme taux , correspondant la pente du trait vert sur la
Fig. 4.10. En dautres mots, on peut crire :
(t) = 0 exp(t) .

(4.22)

La constante est appele exposant de Lyapunov, et le fait que cet exposant soit positif dfinit le
systme comme tant chaotique.
Il nous reste comprendre ce qui mets fin la phase exponentielle de croissance de lcart entre les
deux solutions. Pour ce faire il savrera utile de considrer lvolution des deux solutions dans lespace
de phase [, v], tel quillustr au haut de la Figure 4.11.
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

4.8. CHAOS 6= ALATOIRE

63

Figure 4.10 volution de la distance dans lespace de phase, dfinie selon lq. (4.21) entre deux
solutions au problme du pendule forc et amorti, toutes les deux ici avec les mme valeurs de paramtres
0 = 1.3, = 104 , et = 0.25. Les deux solutions ne diffrent que trs lgrement au niveau de
leur condition initiale : (, v) = (/2, 0) et (/2 + 104 , 0). Le trait vert indique la phase de croissance
exponentielle de lcart (voir texte).
Les deux trajetoires dbutent sur une orbite ferme centre sur (, v) = (0, 0), mais aprs trois orbites
le forage les fait approcher, puis sauter la sparatrice, aprs quoi les solutions se dirigent vers le point
rpulseur (, v) = (, 0) (voir premier encadr). Les deux solutions sont redvies le long de la sparatrice.
Cependant, la solution en rouge est maintenant retarde par rapport la bleue, ayant pris plus de
temps contourner (, v) = (, 0). Les deux solutions sont donc maintenant partiellement dphases par
rapport au forage harmonique ; comme on peut le voir sur lencadr du bas, elles croisent et recroisent la
sparatrice diffrent temps et diffrentes positions sur la sparatrice. Une fois une rvolution supplmentaire complte, lapproche du prochain point rpulseur (, v) = (3, 0), la solution rouge est au
dessus de la sparatrice tandis que la bleue est en dessous ; la premire repart donc vers le haut, tandis
que la deuxime continue vers le bas sur une orbite ferme autour de (, v) = (2, 0). Du point de vue du
pendule dans notre vrai espace physique, la premire solution correspond un pendule qui, oscillant
avec une forte amplitude, approche, ralentit, mais parvient tout de mme dpasser le point dquilibre
instable, tandis que la seconde solution dcrit une solution qui ralentit au point mort tout juste avant
davoir atteint la verticale = , et repart en sens inverse. Cest donc aux alentours du point dquilibre
instable que se dcide la dcorrlation du systme.

4.8

Chaos 6= alatoire

Notre tude du chaos sest limit ici un systme physique trs simple, soit le pendule amorti et
forc. Le chaos sobserve cependant dans bon nombres de systmes physiques ou biologiques, naturels
ou artificiels : orbites dastroides, certains circuits lectriques, turbulence dans les fluides, interactions
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

64

CHAPITRE 4. NONLINARIT ET CHAOS

Figure 4.11 Trajectoires dans lespace de phase des deux solutions de la Figure 4.10, avec deux zoom
successifs sur la rgion o se produit la dcorrlation (voir texte). Les courbes en vert correspondent aux
sparatrices dans lespace de phase. Sur lencadr du bas, les colors sont tracs des intervalles de
temps constant ; remarquez comme la solution en rouge ralentit plus que la bleue, en passant plus prs
du point (, v) = (, 0).
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

65

4.8. CHAOS 6= ALATOIRE

prdateur-proie, certaines formes darythmie cardiaque, ractions chimiques, chavirement des navires par
les vagues, fluctuations dans les cavits laser, pour nen nommer que quelques-uns. Si on avait trouver
un point commun la dynamique de ces systmes si divers, ce serait leur grande sensibilit par rapport
aux conditions initiales. Une minuscule diffrence entre deux solutions tend samplifier avec le temps. Et
comme vous pourrez le vrifier en faisant le problme 4.4 ci-dessous, cette petite diffrence peut mme
tre produite par le choix du schma numrique utilis pour solutionner le problme.
Mais comment reconnaitre le chaos dans un systme naturel ou artificiel ? Un comportement dsordonn (chaotique dans le sens colloquial du terme) est un indice mais non une preuve. Un systme
voluant selon une dynamique stochastique (par exemple la marche alatoire que nous dcouvrirons dans
quelques semaines) volue galement de manire dsordonne, mais on est trs loin du chaos. Ajoutez
a linvitable prsence derreurs de mesure dans une observation ou une manip exprimentale, et faire
la part observationnellement entre un systme stochastique et un autre tant chaotique peut devenir un
solide dfi. Les rfrences listes en bibliographie en fin de chapitre pourront vous montrer la voie si ce
genre de trucs vous intresse.
Exercices:
1. Ce problme vise vous faire cogiter un peu plus sur le concept despace de phase ;
(a) Tracez la trajectoire, dans un espace de phase hauteur-vitesse, dune masse m lance verticalement vers le haut partir du sol, une vitesse initiale v0 ( gravit constante).
(b) Tracez intuitivement une seconde trajectoire, dans un cas ou le dplacement de la masse m
est influenc de manire apprciable par la friction de lair.
2. Revenons au pendule nonlinaire classique, i.e. sans amortissement ou forage (comme au chapitre
3). Obtenez une squence de solutions numriques laide de la mthode de Heun, pour des
conditions initiales du genre v = 0 et 0 = , o  0. Calculez le temps T requis pour faire
une oscillation complte, en fonction de . Utilisez vos rsultats pour vrifier que :
lim T

0

Attention : ce problme, comme tous les problmes de type stabilit, est trs dlicat du point de
vue numrique. Assurez-vous de travailler en double prcision.
3. Passons maintenant au pendule amorti, mais non-forc. Toujours laide de la mthode de Heun,
calculez une squence de solutions, toutes avec la condition initiale (, v) = (3/4, 0), pour des
valeurs du paramtre damortissement allant de 0.01 1.0. Pour chacune de vos solutions, mesurez
le temps T requis pour que lamplitude doscillation chute et demeure sous = 102 rad. Sur la
base de vos rsultats, essayer dtablir la relation mathmatique dcrivant la variation de T avec
.
4. Calculez deux solutions au problme du pendule forc et amorti dans le rgime chaotique, utilisant
toutes la mme condition initiale et le mme pas de temps. Utilisez pour la premire la mthode
dEuler explicite, et pour la seconde la mthode de Heun. Combien de temps scoule avant la
dcorrlation des deux solutions ?

Bibliographie:
Le chaos est sujet qui a produit une littrature gigantesque et souvent indigeste. Parmi la douzaine de
bouquins techniques que je connais sur le sujet, je recommenderais les deux suivants :
Mullin, T., The Nature of Chaos, Oxford University Press (1993),
Hilborn, R.C., Chaos and Nonliner Dynamics, 2e d., Oxford University Press (2000).
Parmi la quasi-infinit douvrages saveur plus philosophique, jai bien aim :
Prigogine, I., Les Lois du Chaos, Flammarion (1994)

27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

66

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

CHAPITRE 4. NONLINARIT ET CHAOS

27 octobre 2014

67

Chapitre 5

Monte Carlo
Supposons que vous vous voyez assigner la tche (ingrate) de mesurer la superficie dun tang de
forme irrgulire. Vous pourriez obtenir une carte topographique de ltang et de ses environs immdiats,
quadriller le tout, compter le nombre de petit carrs contenus dans ltang, et multiplier ce nombre par la
surface dun de vos petits carrs (voir Figure 5.1A). Ceci revient en fait une forme dintgration en deux
dimensions spatiales, dune fonction qui (par exemple) vaut un dans ltang, et zro sur la terre ferme.
examiner la Figure 5.1A, vous pouvez fort bien imaginer que la principale source dincertitude ici est le
degr auquel votre quadrillage russit bien capturer la forme du contour de ltang, et que le plus fin
sera votre quadrillage de ltang, le plus prcis sera votre dtermination de sa surface.
Vous avez aussi une autre option ; dlimiter une surface A facilement calculable (e.g., un carr) englobant ltang ; lancez ensuite un nombre N de cailloux distribus de manire compltement alatoire
spatialement, et comptez le nombre P de fois o vous entendez un plouf. Lide est illustre la Figure
5.1B, pour N = 103 . Pour un N trs grand, la surface de ltang sera donne simplement par (P/N ) A.
Ceux et celles dont la mmoire nest pas encore sature en cette seconde moiti de session auront
reconnu que cette approche la mesure de la superficie de ltang est celle sous-jacente notre calcul de
du chapitre 1. Lquivalent de ltang y est un quart de cercle de rayon unitaire, et lestim de vient
du fait que laire dun cercle (complet) de rayon unitaire vaut , donc celle dun quart de cercle vaut /4,
6
et la surface dun carr englobant ce quart de cercle de rayon unitaire vaut 1. La boucle lance 10p
cailloux
des positions alatoires (x, y) = (r1 , r2 ), donc la distance radiale lorigine est donne par r12 + r22 ;
si cette distance est plus petite que un, le caillou est tomb dans le quart de cercle, et on ajoute un au
compteur. La valeur finale de ce compteur divise par 106 correspond donc au rapport de la surface du
quart de cercle celle du carr lenglobant ; il ne reste plus qu multiplier par 4, et on a le nombre .
Voil !
Cette approche statistique au calcul de quelque chose qui en principe pourrait se faire de manire
dterministe est appele une mthode Monte Carlo. Dans ce chapitre nous nous limiterons deux
applications spcifiques, soit le calcul des intgrales (5.4), et une modlisation de type Monte Carlo
qui revient effectivement la solution de certaine classes dquations diffrentielles (5.5). Une troisime
emergera spontanment au chapitre suivant (6.6). Si vous avez suivi lexemple de ltang, vous vous
doutez dj quun aspect essentiel de lapproche Monte Carlo est la gnration de nombres alatoires, que
nous devons dabord rgler avant de passer au Monte Carlo comme tel.

5.1

Nombres alatoires

Une squence de nombres est dite alatoire si la valeur numrique de chaque membre de la squence
est compltement indpendante de celles des membres prcdents dans la squence. Par exemple, si vous
roulez un d (non-pip) douze fois de suite, vous pourriez tout aussi bien obtenir lune ou lautre des deux
squences suivantes :
426344261526 ,
661233563623 .
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

68

CHAPITRE 5. MONTE CARLO

Figure 5.1 Deux approches fondamentalement diffrentes la mesure de la surface dune surface de
forme irrgulire (en gris ici). gauche, un quadrillage cartsien rgulier, o la dtermination de la surface
revient compter le nombre de carrs couvrant la surface. droite, une approche statistique o la surface
est donne par la fraction du nombre de lancers alatoires tombant sur la surface (voir texte).

Vous serez peut-tre surpris de noter que la seconde squence ne contient pas de 4. La probabilit
de ne pas rouler 4 est 1 1/6 = 5/6 ; donc la probabilit de ne pas rouler un quatre 12 fois de suite
est (5/6)12 = 0.112, ce qui est petit mais bien loin de lastronomiquement minuscule (contrairement
votre probabilit de gagner au 6-49, qui elle lest). Moins vident mais tout aussi vrai, si chaque lancer
est vraiment entirement indpendant des prcdents, la probabilit dobtenir exactement lune de ces
squences est (1/6)12 , soit un minuscule 4.61010 , et exactement la mme que celle dobtenir la squence
quune majorit dindividus jugeraient (incorrectement) encore plus improbable :
123456123456 ,
ou encore
666666666666 .
Eh oui ! Si vous roulez maintenant le d un trs grand nombre de fois (N , disons), on sattendrait
obtenir N/6 fois le 1, N/6 fois le 2, et ainsi de suite jusqu 6. Cest la dfinition mme dun d
non-truqu ! Le d est donc un gnrateur de nombres alatoires, ici des entiers distribus uniformment
dans lintervalle [1, 6].
Il sagit maintenant de produire lquivalent dun d utilisable sur lordinateur. Ceci peut paraitre un
non-sens absolu et total ; un programme dordinateur est dterministe au plus haut point, dans le sens
que sur une architecture donne, lexcutable dun algorithme auquel on fournit la mme entre produira
toujours la mme sortie. Donc, si on revient notre squence de lancers dun d, le rsultat du n-ime
lancer sera toujours compltement dtermin par ltat du gnrateur aprs le n1-ime lancer, autrement
dit, les valeurs numriques des lancers n 1 et n sont compltement corrles, lantithse mme de notre
ide de lalatoire !
La solution ce paradoxe tient au fait que mme si les lancers de pseudo-ds numriques sont corrls
100%, il est possible de sassurer que, tout comme avec un vrai d, chaque valeur sort en moyenne
aussi frquemment que les autres, et que sur lensemble de la squence aucune corrlation nexiste en la
valeur numrique dun lancer et celle du suivant. Ce sont ces proprits statistiques de la squence qui lui
mritent le nom dalatoire (certains puristes insisteraient ici sur lappellation pseudo-alatoires.
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

5.2. FONCTIONS DE DISTRIBUTIONS

69

Les bases thorique, arithmtique, statistique et informatique de la gnration des nombres alatoires
pourraient nous tenir occups bien longtemps. Pour nos besoin prsents, il suffit de raliser que la gnration de squences qui satisfont aux proprits nonces ci-dessus est possible mais non-triviale, et que
certains gnrateurs sur le march sont nettement meilleurs que dautres.
Par exemple, le module random de Python fournit la fonction random.random() qui produit un nombre
(pseudo-)alatoire rel distribu uniformment dans lintervalle [0, 1). Le sous-module random du module
NumPy fournit une fonction quivalente, np.random.random(), qui offre de plus loption ( laide dun argument) de gnrer plusieurs nombres alatoires avec un seul appel. Lun ou lautre de ces deux gnrateurs
suffira tous nos besoins pour le cours. 1
Un gnrateur de nombre alatoire doit toujours tre initialis une valeur (arbitraire) pour dbuter
le processus de production de la squence alatoire. Cette valeur est appele le germe (ou en anglais :
seed). Sa valeur numrique importe peu, mais doit tre fournie. Une fonction apparemment sans germe,
comme random(), utilisera en fait un germe dtermin au moment de limportation du module qui contient
cette fonction, et sa valeur correspond alors gnralement au temps systme actuel. Il est parfois utile
(et souvent important !) de pouvoir gnrer des squences qui soient distinctes et/ou qui puissent tre
reproduites une date ultrieure. En dfinissant plusieurs germes distincts, il devient donc possible de
produire des squences de nombres alatoires compltement indpendantes lune de lautre.

5.2

Fonctions de distributions

Un aspect critique de lapproche Monte Carlo en modlisation physique est de bien comprendre et
contrler la distribution statistique des nombres alatoires utiliss pour lanalyse. On dfinit une
fonction de densit de probabilit (ci-aprs FDP) f (x) dun processus (alatoire ou non) produisant une squence de candidats xn , n = 1, 2, 3... o f (x)dx donne la probabilit que la valeur numrique
du candidat se retrouve entre x et x + dx. Par exemple, dans le cas du gnrateur uniforme de la section
prcdente, on a
(
1 0<x1
f (x) =
(5.1)
0 sinon
Une autre distribution avec laquelle vous avez probablement dj fait connaissance est la distribution dite
normale (ou Gaussienne), note N (, 2 ), pour laquelle la FDP est :
 2
x
1
exp
.
(5.2)
f (x) =
2 2
2
Notons que, par leur dfinition mme, les FDP sont des distributions normalises, dans le sens que
Z
f (x)dx = 1 .
(5.3)
Une fois la FDP connue, elle peut servir calculer une multitude de caractristiques globales de lenemble
de valeurs de x ; la moyenne, par exemple, est donne par
Z
hxi = f (x) x dx .
(5.4)
Le hic est que la distribution statistique dune squence de N valeurs discrtes de x produites par un
gnrateur bas sur de telles FDP deviendra identique ces FDP seulement dans la limite N .
Comme en pratique on travaille toujours avec un N fini, il est important de comprendre, et de quantifier,
jusqu quel point les deux distributions dvient lune de lautre.
Travaillons avec la distribution uniforme associe la FDP (5.1), et supposons que lon a produit N
valeurs numriques rn [0, 1] laide notre gnrateur de nombre alatoire uniforme. Dfinissons dabord
1. Rappelez-vous que sur un ordinateur on ne peut reprsenter quun nombre fini de rels entre 0 et 1 ( cause de la
troncation numrique) : en 64-bits, il y a 262 252 4.6 1018 nombre distincts entre 0 et 1. Cependant, la plupart des
gnrateurs de nombres alatoires, de par lalgorithme quils utilisent, nutilisent quenviron 252 4.6 1018 de ceux-ci. En
dautres termes, un gnrateur typique en 64-bits est quivalent un d ayant environ 5 milliards de milliards de faces, a
en fait quand mme beaucoup ! ! !

27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

70

CHAPITRE 5. MONTE CARLO

la fonction histogramme associe cet ensemble de nombre alatoires. Ces fonctions sont construites
comme suit : on dfinit une squence de M intervalles dchantillonnage contigus et de largeur fixe b :
[xm , xm + b] ,

xm + b = xm+1 ,

m = 1, ..., M

(5.5)

avec ici x1 = 0 et xM + b = 1. Puisque les intervalles sont contigus, on a videmment b = 1/M . On fait
ensuite le dcompte Nm de toutes les valeurs de r tombant dans chaque intervalle :
(
1 sixm < rn xm + b
,
m = 1, ..., M ,
n = 1, ..., N
(5.6)
Nm = Nm +
0 sinon
et la fonction histogramme hm est alors dfinie comme
hm (rn ; b) =

Nm
,
bN

m = 1, ..., M .

(5.7)

Ici la notation (rn ; b) indique que la fonction histogramme est la fois une fonction des donnes du
problme, soit les N valeurs de rn , ainsi que du choix de la largeur de lintervalle dchantillonnage b,
qui nest pas une donne du problme mais plutt un choix de lutilisateur (vous !) ; do lutilisation du
point-virgule pour distinguer ces deux types de variables dfinissant la fonction histogramme. Notons
que la fonction histogramme satisfait lquivalent discret de la contrainte de normalisation (5.3) :
M
X

hm b = 1 .

(5.8)

m=1

De plus, dans la limite N , on sattendrait ce que Nm = N/M (= N b) valeurs tombent dans chaque
compartiment, donc on aura
lim hm (rn ; b) = 1 ,

m = 1, ..., M ,

(5.9)

dmontrant bel et bien que la fonction histogramme est lquivalent discret de notre FDP uniforme (5.1).
La Figure 5.2 montre des fonctions histogrammes construites partir de squences de nombres alatoires produits par notre gnrateur uniforme, pour diverses valeurs de N . Dans tous les cas on a compartiment ici lintervalle [0, 1] en M = 20 intervalles dchantillonnage. On voit immdiatement que plus N
est grand, plus les dviations par rapport la valeur attendue hm = 1 sont petites. Changer linitialisation
du gnrateur de nombre alatoires changerait le dtail de ces fonctions histogramme (i.e., quels hm se
retrouve au dessus ou au dessous de la valeur attendue), mais pas leur allure gnrale.
Essayons de quantifier un peu ce dernier nonc. Limportance des dviations par rapport la valeur moyenne dun chantillon est souvent quantifie par la variance de lchantillon, aussi appele
dviation quadratique moyenne, dfinie comme :
M
1 X
(hm hhi)2 ,
=
M m=1
2

(5.10)

o la valeur moyenne hhi de lchantillon est donne par :


hhi =

M
1 X
hm .
M m=1

(5.11)

La quantit comme telle est habituellement appele dviation RMS, pour Root-Mean-Squared. Sa
variation avec N est illustre la Figure
5.4, toujours pour nos nombres alatoires uniformes. On remarque
que la dviation RMS y varie en 1/ N . Cette situation nest pas particulire une FDP uniforme, mais
caractrise en fait tous les processus statistiques sans effets de mmoire, dans la mesure o, comme
quand on roule un d ou on tire pile ou face, chaque mesure tire de la distribution est compltement
indpendante des prcdentes 2 .
2. Comment rconciliez-vous cet nonc avec le fait que notre gnrateur de nombre alatoire est compltement dterministe, dans le sens quune fois initialis, la valeur du nombre alatoire rn est compltement dtermine par celle du nombre
rn1 ?

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

5.2. FONCTIONS DE DISTRIBUTIONS

71

Figure 5.2 Fonction de distribution des valeurs de squences de N nombres alatoires rn [0, 1], pour
quatres valeurs de N croissant par des facteurs 10 successifs. Les traits pointills horizontaux indiquent
lintervalle correspondant 1 dviations rms. Dans tous les cas la valeur attendue est f (x) = 1.

27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

72

CHAPITRE 5. MONTE CARLO

Figure 5.3 Variation de lcart rms (q. (5.10)) sur la valeur attendue f (x) = 1,
en fonction du du
nombre N de candidats r produits. La droite en tirets indique une dcroissance en 1/ N .

Figure 5.4 Variation de lerreur sur la moyenne de la distribution en fonction du nombre N de candidats

r produits. Lerreur est dfinie ici selon lq. (5.14). La droite en tirets indique une dcroissance en 1/ N .

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

73

5.3. DISTRIBUTIONS NON-UNIFORMES

Une autre mesure souvent intressante (et importante) de la grandeur des fluctuation dans les distributions construites pour un N fini est la valeur moyenne de la distribution mme :
N
1 X
hri =
rn .
N n=1

(5.12)

Pour notre distribution uniforme dans [0, 1], on devrait videmment avoir
lim hri =

1
,
2

(5.13)

Donc on peut se dfinir ici une mesure derreur comme :





1
(N ) = hri .
2

(5.14)

La variation de cette quantit avec N est porte


en graphique la Figure 5.4 ; encore une fois, on constate
que lerreur dcroit grosso modo comme 1/ N .

5.3

Distributions non-uniformes

Dans bien des situations il est ncessaire de produire une squence de nombres alatoires extraits
dune distribution qui ne soit pas uniforme. Il existe des techniques gnrales permettant de transformer
nimporte quelle FDP en une autre ; nous nentrerons pas l-dedans ici (mais voir la bibliographie en fin
de chapitre), et nous nous limiterons plutt donner quelques recettes pour produire des distributions
souvent utilises en simulations physiques. Ceux ou celles qui dsirent approfondir ce genre truc, ou en
examiner les bases thoriques, trouveront de quoi soccuper dans la bibliographie en fin de chapitre.
La mthode de transformation est base sur lide que la distribution cumulative associe une
FDP f (x) non-uniforme peut tre interprte comme un nombre alatoire r extrait dune distribution
uniforme dans [0, 1]. Lide gnrale est illustre la Figure 5.5, qui montre comment une distribution
uniforme en y peut, via une fonction non-linaire (ici une exponentielle dcroissante), produire une distribution non-uniforme en x. Mathmatiquement cette ide sexprime selon la relation :
Z x
FX (x) =
f (x0 )dx0 = r = R(x) ,
o R U (0, 1) .
(5.15)

Si f (x) peut tre intgr analytiquement, ceci offre une manire simple et efficace de produire des nombres
alatoires extraits de distributions statistiques non-uniforme. Voyons comment ca marche avec un exemple
simple mais utile, soit la distribution exponentielle.

5.3.1

Distributions exponentielles

Dans plusieurs situations physiques (et au Labo 8...), il est ncessaire de simuler des squences dvnements se produisant de manire alatoire dans le temps et/ou lespace, sans effet de mmoire (i.e.,
lvnement b est compltement indpendant de lvnement a layant prcd). Un tel systme obit
la statistique dite de Poisson, et on peut montrer que la distribution des temps dattentes (ou distances)
entre deux vnements successifs prend une forme exponentielle :
(
1 exp(x/) , 0 x ,
f (x) =
,
(5.16)
0
x<0
o est le facteur dchelle contrlant la dcroissance de la distribution avec x. La fonction de distribution
cumulative est donc donne par :
Z x
Z x
x
0
0
1
f (x )dx =
exp(x0 /)dx0 = [ exp(x0 /)]0 = 1 exp(x/)
(5.17)

Lquation (5.15) donne alors :


1 exp(x/) = r ,
27 octobre 2014

r [0, 1] ,

(5.18)

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

74

CHAPITRE 5. MONTE CARLO

Figure 5.5 Illustration de la production dune distribution non-uniforme en x partir dune distribution
uniforme en y, via une transformation nonlinaire (voir texte). Si les y taient des nombres alatoires
[0, 1] produits par un gnrateur du genre ran0 alors la distribution des x correspondants serait ici plus
concentre aux petites valeurs de x.
do on dduirait
x = ln(1 r),

r [0, 1] ,

x [0, ] .

(5.19)

Mais ici, comme la variable alatoire 1 r se distribue dans lintervalle [1, 0] identiquement la manire
dont r se distribue dans [0, 1], on peut tout aussi bien crire :
x = ln r ,

r [0, 1] ,

x [0, ] .

(5.20)

La procdure pour gnrer un nombre alatoire x respectant la distribution spcifie par lq. (5.16)
est donc de gnrer un nombre alatoire r uniforme entre 0 et 1, avec la fonction random() par exemple,
et ensuite de calculer x selon lq. (5.20).

5.3.2

Distributions gaussiennes

La distribution dite gaussienne (q. (5.2) ci-dessus) est fort utile pour bien des applications, en particulier pour les analyses ou simulations des erreurs exprimentales. La Figure 5.7 en montre un exemple
(traits pleins). Le paramtre clef ici est la variance 2 , qui contrle ltendue en x de la distribution (la
pleine largeur mi-hauteur = 2.35). Si des nombres alatoires sont extraits de cette distributions, 68.3%
seront situs lintrieur de , mais il demeure probable de produire occasionnellement des nombres
de taille passablement plus leve. Cependant, lintgrale dune gaussienne ne peut tre calcule analytiquement, il est donc difficile dutiliser la mthode dcrite dans la section prcdente. Comment produire
une squence de nombre alatoires distribus de manire Gaussienne ? Il existe plusieurs techniques, mais
nous ne considrerons ici que celle base sur la transformation dite de Box-Muller : ayant en main deux
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

75

5.4. VALUATION DINTGRALES PAR MONTE CARLO

Figure 5.6 Fonction de distribution de probabilit de forme exponentielle, telle que dcrite par
lq. (5.16), pour trois valeurs du facteur dchelle (traits plein). Lhistogramme est la distribution de
104 nombres alatoires produits laide de lq. (5.20) avec = 1.
nombre alatoires r1 , r2 extraits dune distribution uniforme dans lintervalle [0, 1], on peut produire deux
nombres alatoires g1 , g2 distribus de manire Gaussienne via les relations :
p
g1 = 2 ln r1 cos(2r2 ) ,
(5.21)
g2 =

p
2 ln r1 sin(2r2 ) ,

(5.22)

o g1 , g2 [, ]. La Figure 5.7 en montre un exemple de la distribution produite ainsi, pour 104


nombres alatoires calculs utilisant les relations ci-dessus. Cette procdure fonctionne, mais elle est loin
dre optimale au niveau du temps de calcul requis ; on peut en fait faire beaucoup mieux, mais je vous
laisse a comme lecture supplmentaire.
En pratique, avec Python, vous naurez pas appliquer cette mthode car une fonction pour gnrer
des nombres alatoire selon une distribution Gaussienne de moyenne 0 et variance 1, i.e. N (0, 1), est dj
fournie avec le module NumPy ; il sagit de la fonction np.random.randn(). Pour gnrer des nombres
alatoires selon N (, 2 ), i.e. une distribution Gaussienne de moyenne et variance 2 , il suffit de faire
la commande suivante,
sigma * np.random.randn(...) + mu

5.4

valuation dintgrales par Monte Carlo

Appliquons maintenant lapproche Monte Carlo au calcul dune intgrale dfinie dune fonction f (x)
dune variable ; nous choisirons un polynme quartique :
f (x) = 1 + x4 ,
27 octobre 2014

(5.23)
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

76

CHAPITRE 5. MONTE CARLO

Figure 5.7 Fonction de distribution de probabilit de forme Gaussienne, telle que dcrite par lq. (5.2),
pour trois valeurs de la largeur mi-hauteur (traits plein). Lhistogramme est la distribution de 104
nombres alatoires produits laide des qs. (5.21)(5.22).
et, comme intgrale valuer :
Z

I=

f (x)dx
0

!

1
x5
6
= x+
=
.
5 0
5

(5.24)

Si on utilise la mthode du trapze (2.4) avec un maillage constitu de N points quidistants en x, on


aura :
I=

N
1
X
n=1


=

1
(fn+1 + fn ) (xn+1 xn )
{z
}
|
2
h


f1 + f2
f2 + f3
f3 + f4
fN 2 + fN 1
fN 1 + fN
+
+
+ ... +
+
h
2
2
2
2
2

N
1
X
f1 + fN
+
fn
2
n=2

!
h ,

(5.25)

o ici le pas de maille h = 1/(N 1). Notons, et retenons, que le nombre dvaluations de f requis ici
est gal N . Lexpression ci-dessus ressemble dangereusement au calcul dune valeur moyenne de f (x)
chantillonne uniformment sur lensemble de lintervalle, et cest bien l une interprtation habituelle
de lintgrale comme une aire sous la courbe (valeur moyenne de f dans lintervalle fois la longueur de
lintervalle, ici un).
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

77

5.5. LAPPROCHE LQUILIBRE

Il y aurait dautres faons de calculer cette valeur moyenne. Plutt que dchantillonner f (x) rgulirement en x, on aurait pu choisir dchantillonner f N points positionns alatoirement (de manire
statistiquement uniforme) en x dans lintervalle [0, 1]. La valeur de lintgrale serait alors donne par
I=

N
1 X
f (rn ) ,
N n=1

rn [0, 1] ,

(5.26)

o rn est un nombre alatoire extrait dune distribution uniforme couvrant lintervalle [0, 1]. Pourquoi
pas ? Vous commencez jespre percevoir le lien avec lexemple de ltang... En fait, cette approche est
appele intgration Monte Carlo. Dans une forme un peu plus gnrale, la formule correspondante serait,
Z

f (x)dx '

I=
a

N
ba X
f (rn ) ,
N n=1

rn [a, b] ,

(5.27)

o rn provient dune distribution uniforme. En deux dimensions, on aurait


Z

x2

y2

I=
x1

y1

f (x0 , y 0 )dy 0 dx0 '

N
(x2 x1 )(y2 y1 ) X
f (rn , sn ) , rn [x1 , x2 ] , sn [y1 , y2 ] , (5.28)
N
n=1

o rn et sn proviennent de distributions uniformes. Et ainsi de suite en plus de dimensions.


Revenons maintenant lintgrale donne par lq. (5.24). La Figure 5.8 montre la variation de lerreur,
dfinie ici comme
(N ) = |1.2 I(N )| ,

(5.29)

pour lvaluation de notre intgrale par la mthode du trapze (q. (5.25)), et par la mthode Monte Carlo
(q. (5.26)). La premire converge en 1/N 2 , comme on sy attendrait dune mthode O(h2 )
; la seconde
converge de manire beaucoup plus irrgulire, mais en moyenne comme un pitoyable 1/ N (droite
pointille). Ici, la mthode Monte Carlo requiert en moyenne 105 valuations de f pour en arriver
= 103 , tandis que la mthode du trapze atteint ce niveau derreur en seulement 17 valuations de f .
Suis-je en train de vous faire perdre votre temps avec toutes ces histoires de Monte Carlo ?
Non. Cest certainement le cas quen une dimension spatiale, le Monte Carlo nest jamais comptitif.
Mais en plusieurs dimensions spatiales, cest une toute autre histoire. On peut montrer que lquivalent
D dimensions spatiales de la mthode du trapze, pour un chantillonnage uniforme avec pas h =
1/N dans chaque dimension, converge comme 1/N 2/D (retournez voir la Figure
5.1 et pensez-y tte

repose.). Cependant, lintgration Monte Carlo converge toujours comme 1/ N , et ce quelle que soit la
dimension D ! ! Le taux de convergence des deux mthodes devient donc le mme pour une intgrale en
4 dimensions, et aucune mthode de type Newton-Cotes ne demeure le moindrement comptitive en plus
de 10 dimensions spatiales.
Vous pourriez penser quune intgrale en plus de trois dimensions, ca na pas dallure de toute faon,
mais dtrompez-vous, vous allez en rencontrer en physique statistique qui montent beaucoup plus haut ;
par exemple, lespace de phase dun pendule tige rigide pouvant osciller librement dans toutes les
directions est de dimension 4 ; et celui des deux atomes dhydrogne et de latome doxygne formant
une molcule de H2 O est 18 dimensions (3 coordonnes spatiales et trois composantes de la vitesse par
atome). En analyse Bayesienne, on doit valuer des intgrales sur un espace o le nombre de dimensions
est gal au nombre de paramtres du modle que lon tente de contraindre, et on a rgulirement affaire
des modles contenant une dizaine de paramtres ou plus. Dans ces cas, lapproche Monte Carlo devient
incontournable.

5.5

Lapproche lquilibre

Nous allons maintenant tudier un problme classique dit dapproche lquilibre, dans le contexte
du problme de mlange, illustr sur la Figure 5.9. Deux boites contigus communiquent via un petit trou
perc dans leur paroi commune. Les deux botes contiennent respectivement N1 et N2 particules, disons
des boules de billiard. Ces particules vont continuellement se frapper entre elles ou rebondir sur les parois,
et de temps en temps, ces collisions vont faire quune particule passera de la boite 1 la boite 2, ou
linverse. Nous tenterons maintenant de rpondre aux trois questions suivantes :
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

78

CHAPITRE 5. MONTE CARLO

Figure 5.8 Diminution de lerreur dans le calcul de lintgrale dfinie par les qs. (5.23) et (5.24) en
fonction du nombre N dvaluation de f (x), pour la mthode du trapze et lintgration Monte Carlo, tel
quindiqu. La droite pointille correspond une variation en N 1/2 .
1. Existe-t-il un tat dquilibre pour lequel le nombre de particules dans chaque boite demeure
constant avec le temps ?
2. Si oui, quel est cet tat ?
3. Toujours si oui, quel est le temps requis pour atteindre cet tat dquilibre partir dune condition
initiale arbitraire ?
Intuitivement, on peut sattendre ce que si lon attend suffisamment longtemps (ici dans le sens dun
intervalle de temps beaucoup plus grand que le temps entre deux collisions successives), chaque particule
ait ultimement la mme probabilit de traverser le trou. Le nombre total de particules N12 traversant
de la boite 1 la boite 2 durant un intervalle de temps t devrait donc tre donn par quelque chose du
genre :
N12 = N1 t ,

(5.30)

o est la probabilit de passage par particule par unit de temps. Cest une quantit qui dpend de la
taille du trou, de la vitesse des particules, de leur taux de collision, mais pas de leur nombre, cette dernire
dpendance tant dj explicite au membre de droite. Et pour le nombre de particules passant de 2 1 :
N21 = N2 t ,

(5.31)

avec la mme valeur de qu lq. (5.30). Pour avoir une situation stationnaire, il faudra quil ny ait
plus de transfer net de particules dune boite lautre (sinon N1 et N2 varieront en consquence, et donc
nous navons plus une situation stationnaire). Exiger que N12 = N21 nous donne alors immdiatement
la condition dquilibre :
N1 = N2 ,
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

[equilibre] .

(5.32)
27 octobre 2014

79

5.5. LAPPROCHE LQUILIBRE

Figure 5.9 Deux boites communiquant par un petit trou contiennent un total de N particules, mais
lune (ici celle de gauche) en contient un nombre N1 plus grand que lautre, soit N2 < N1 . Les collisions
contre les parois et interparticules feront que le nombre de particules traversant de la gauche vers la droite
sera plus grand que dans le sens inverse, et ce tant et aussi longtemps que N1 > N2 . La solution dquilibre
est ici N1 = N2 = N/2 (voir texte).
Ce rsultat concorde avec lintuition. Supposons que les deux boites sont en fait deux classes remplies
dtudiant(e)s, et que les particules sont en fait des macromolcules nausabondes daftershave Irish Brut
45 Magnum dont un de vos petits camarades sest trop gnreusement asperg le matin mme, ayant
manqu de temps pour la douche. Lexprience montre que si lon attend assez longtemps, ca puera
uniformment dans les deux classes, en dautres mots le systme a atteint un tat dquilibre o le nombre
de molcules puantes par unit de volume est le mme partout. Voyons maintenant quelle vitesse cet
tat dquilibre est atteint.

5.5.1

Formulation en quation diffrentielle

Considrant notre dfinition de comme tant la probabilit quune particule de la boite passe la
boite 2 par intervalle de temps t, le nombre de particules dans les boites 1 et 2 au temps t + t doit
tre donne par quelque chose comme :
N1 (t + t) = N1 (t) + tN2 (t) tN1 (t) ,

(5.33)

N2 (t + t) = N2 (t) + tN1 (t) tN2 (t) .

(5.34)

Le premier terme au membre de droite est le nombre de particules dj prsentes dans chaque boite au
temps t, le second terme correspond aux particules entrant dans la boite, et le troisime aux particules
sortant de la boite. Je vous laisse vrifier que la forme de ces expressions garantit que le nombre total de
particules est une quantit conserve, i.e., N1 (t) + N2 (t) = N . Un peu dalgbre simple permet de ramne
ces expression la forme suivante :

27 octobre 2014

N1 (t + t) N1 (t)
= (N2 (t) N1 (t)) ,
t

(5.35)

N2 (t + t) N2 (t)
= (N1 (t) N2 (t)) .
t

(5.36)

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

80

CHAPITRE 5. MONTE CARLO

Examinez bien les membres de gauche de ces deux expressions. Vous raliserez jespre quils ressemblent
fort une diffrence finie dordre O(t) pour les drives temporelles de N1 et N2 . On peut donc crire :
dN1
= (N2 N1 ) ,
dt

(5.37)

dN2
= (N1 N2 ) .
(5.38)
dt
Il savrera pratique dexprimer le nombre de particules dans chaque boite en terme de la fraction du
nombre total N de particules :
N2
N1
,
f2 =
.
N
N
Notre contrainte de conservation N1 + N2 = N devient simplement
f1 =

f1 + f2 = 1 ,

(5.39)

(5.40)

ce qui permet dexprimer les q. (5.37)(5.38) sous la forme :


df1
= (1 2f1 ) ,
dt

(5.41)

df2
= (1 2f2 ) .
(5.42)
dt
Remarquez que lutilisation de la contrainte de conservation a effectivement dcoupl nos deux quations
diffrentielles, ce qui fait que nous navons plus qu en solutionner une, et la solution de lautre sobtient
trivialement via lq. (5.40). Remarquez galement que si lon pose f1 = f2 = 0.5, on obtient bien
df1 /dr = df2 /dt = 0, comme on sy attend pour une solution dquilibre.
Lquation (5.41) est une quation diffrentielle ordinaire linaire mais inhomogne, du la prsence
dun terme constant au membre de droite. Un simple changement de variable permet cependant de
convertir a en une quation diffrentielle homogne qui se solutionne facilement. Introduisons une nouvelle
fonction (t) dfinie selon
1
;
2
comme et f1 sont relies lune lautre par une relation linaire, on aura
(t) = f1 (t)

(5.43)

d
df1
=
,
dt
dt

(5.44)

ce qui permet de rexprimer lq. (5.41) sous la forme


d
= 2 ,
dt
qui est lquation homogne promise. Ceci a videmment comme solution :
(t) = 0 exp (2t) ,

(5.45)

(5.46)

o 0 correspond la valeur de t = 0. Si lon choisit comme condition initiale qu t = 0 toutes les


particules sont dans la boite 1, alors f1 (t = 0) = 1, et on aura 0 = 1/2. On utilise finalement lq. (5.43)
pour exprimer ce rsultat en terme de notre fonction primaire f1 :
f1 (t) =

1
(1 + exp (2t)) .
2

(5.47)

La solution asymptotique est bien


1
,
(5.48)
2
soit une rpartition gale des particules dans les boites 1 et 2, atteinte exponentiellement avec une constante
de temps = 1/(2) ; se rappelant que est une mesure de la taille du trou, on voit bien que plus le
trou est petit, plus lapproche lquilibre est lente, ce qui est tout fait logique puisque les particules
ont plus de difficult passer dune boite lautre.
lim f1 (t) =

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

81

5.5. LAPPROCHE LQUILIBRE

5.5.2

Formulation Monte Carlo

Maintenant, utilisons une approche Monte Carlo notre problme dapproche lquilibre. Nous avons
dj fait tout le travail thorique requis en crivant les quations (5.33)(5.34). Le bout de code ncessaire
pour modliser ce systme est donn ci-bas.

#Simule melange de particules entre deux boites contigues

2
3

from random import random

4
5
6
7

niter=200
n=1000
alpha=0.01

#nombre diterations temporelles


#nombre total de particules
#probabilite de traverser par iteration, par particule

8
9
10
11

#conditions initiales, ici toutes les particules debutent dans 1


n1=n
n2=n-n1

12
13
14
15
16

for i in range(niter):
de1a2=0
#compteur de particules passant de 1 a 2
for k in range(n1): #boucle sur ttes les part. dans 1
if random()<=alpha: de1a2+=1 #traverse ou pas?

17
18
19
20

de2a1=0
#compteur de particules passant de 2 a 1
for k in range(n2): #boucle sur ttes les part. dans 2
if random()<=alpha: de2a1+=1 #traverse ou pas?

21
22
23
24

n1+=de2a1-de1a2
#nouveau nombre de particules dans 1
n2+=de1a2-de2a1
#nouveau nombre de particules dans 2
print(Iteration {}: N1={}, N2={}.format(i,n1,n2))
Notez bien comment, aux lignes 16 et 20, on dcide de faire traverser ou non une particule donne :
si un nombre alatoire donn (uniformment distribu dans lintervalle [0, 1]) est infrieur la probabilit
. alors la particule traverse (ou plus prcisment, le compteur comptabilisant le nombre de particules qui
traversent est incrment de un), sinon elle reste dans sa bote. Cette opration est rpte pour chaque
particule contenue dans chaque boite, via les deux boucles inconditionnelles for. Vous pouvez facilement
voir que poser = 0 ferait quaucune particule ne traverserait (test ci-dessus jamais satisfait), et = 1 au
contraire conduirait un passage de toutes les particules en un pas de temps, puisque le test probabiliste
serait alors toujours satisfait. Notez aussi que Le transfert de particules dune boite lautre se fait
seulement une fois que toutes les particules ont t testes, les nombres transfrer de la boite 1 vers la
2 et de la 2 vers la 1 tant accumules dans des compteurs (ici les variables de1a2 et de2a1), qui doivent
tre rinitialises zro au dbut de chaque itration de la boucle pseudo-temporelle. Si on transfrait
immdiatement les particules quand le test probabiliste tait satisfait, alors lordre dans lequel on teste
les boites (ici la 1 avant la 2) aurait une influence sur lvolution. Pour les intresss, notez quon pourrait
remplacer les lignes de codes 14 20 ci-haut par les deux lignes suivantes, compltement quivalentes,
de1a2=(np.random.random(n1)<=alpha).sum()
de2a1=(np.random.random(n2)<=alpha).sum()
Pensez-y !
La Figure 5.10 montre le rsultat de trois ralisations Monte Carlo de lapproche lquilibre, pour
des systmes de 103 , 104 , et 105 particules, toutes initialement plaes dans la boite 1. Les entiers N1 et
N2 ont t convertis en fraction f1 et f2 selon lq. (5.39), mais ici la nature discrte de la variable est
bien vidente, en particulier pour la solution N = 103 (en rouge).
La forme exponentielle de lapproche lquilibre est facilement visible ici, mais on remarque aussi
des dviations irrgulires par rapport une exponentielle pure. Le dtail de ces variations est diffrent
pour une initialisation diffrente du gnrateur de nombre alatoire, mais elles sont toujours prsentes. On
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

82

CHAPITRE 5. MONTE CARLO

Figure 5.10 Variation temporelle de la fraction de particules dans la boite 1, pour un nombre total de
particules N = 102 (rouge), 103 (vert) et 104 (bleu). La variation correspondante de f2 est obtenue via
la contrainte de conservation f1 + f2 = 1, et correspond une rflexion par rapport la droite f1 = 0.5.
La dcroissance est exponentielle dans les trois cas, mais les fluctuations diminuent rapidement mesure
que N augmente (voir texte).

Figure 5.11 Variation de lcart relatif moyen en fonction du nombre total de particules N , associ
des ensembles de 50 solutions statistiquement distinctes au problme de lapproche lquilibre. Les
diffrents symboles correspondent des carts mesurs des temps diffrents, soit t = 50 (), t = 100 (+),
t = 150 (4) et t = 200 (), avec t mesur ici comme
le nombre ditrations du processus Monte Carlo. Le
trait pointill correpond une dcroissance en 1/ N .

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

83

5.6. RALISME PHYSIQUE ET IRRVERSIBILIT

remarque galement sur la Figure 5.10 que plus N est grand, plus ces dviations sont petites. La Figure
5.11 montre la variation de la dviation RMS value quatre temps diffrents durant lvolution, partir
dun ensemble de 50 simulations statistiquement distinctes (i.e., utilisant une initialisation diffrente du
gnrateur
de nombres alatoires). Ici encore, la fluctuation par rapport la valeur moyenne dcroit selon

1/ N , nimporte quel temps durant lapproche lquilibre.

5.6

Ralisme physique et irrversibilit

Nous allons clore ce chapitre avec quelques observations et questions qui vont, je lespre, vous faire
rflchir un peu sur ce quon pourrait appeler la philosophie de la modlisation, et peut-tre sur la nature
de la ralit physique (Mamma mia...).

5.6.1

Comment choisir les alternatives en modlisation ?

Nous avons donc dvelopp deux approches de modlisation fondamentalement distinctes notre
problme dchange de particules entre deux boites : une approche dterministe base sur la solution dune
quation diffrentielle, et une approche stochastique de type Monte Carlo. Laquelle est la meilleure ici ?
La solution exponentielle dcrite par lq. (5.47) est propre et mathmatiquement concise ; on serait
tent de lui donner prfrence. Mais rflchissez-y un peu plus profondment ; le systme physique tudi
ici est form dun nombre fini (quoique possiblement trs grand) de particules. Lapproche dterministe de
la 5.5.1 convertit ceci en un problme continu pour les fractions f1 et f2 , en remplaant les membres de
gauche des quations (5.35)(5.36) par des drives temporelles, qui strictement parler ne sont dfinies
que si N1 et N2 sont des variables relles, pas des entiers ! En passant des qs. (5.35)(5.36) aux qs. (5.37)
(5.38), lapproche dterministe introduit une approximation qui nest pas faite par lapproche Monte Carlo,
qui travaille directement partir des quations (5.33)(5.34). Quelle est lapproche la plus physiquement
raisonnable ici ? Fondamentalement, ce serait le Monte Carlo ! Cependant, si N est vraiment trs grand
(genre, le nombre de macromolcules dIrish Magnum 45 dans une salle de classe), lapproche Monte
Carlo peut devenir trs lente, pour produire en bout de ligne un rsultat qui ne pourra tre distingu de
lexponentielle dcroissante au niveau de prcision de votre ordinateur.
Si vous avez suivi le raisonnement ici, vous aurez anticip que lapproche optimale consisterait
utiliser Monte Carlo quand N est petit, et lapproche dterministe quand N est grand. Mais, comment
alors choisir la valeur de N laquelle on change dapproche ? Il ny a absolument pas de rponse facile
cette question ; la rponse dpend du type dinformation que vous cherchez extraire de votre modle.
Notez cependant quici lapproche Monte Carlo fournit naturellement, en prime, une mesure statistique
des fluctuations pouvant tre attendues dans le systme. Cest l une information souvent prcieuse.

5.6.2

Lirrversibilit

Lintuition physique, et nos modlisations mathmatique et statistique du problme, indiquent toutes


que dans la situation illustre la Figure 5.9 le transfert net de particules se fera de la boite 1 vers la boite
2, donc que si lon photographiait ce systme un temps ultrieur le nombre de particules dans la boite
1 aura diminu, et celui dans la boite 2 aura augment par la mme quantit. Vous seriez fort surpris si
la photographie rvlait que la boite 2 stait vide de ses quelques particules au profit de la boite 1, et
vous seriez fort tent de conclure quun petit comique a invers lordre des photos.
Un phnomne comme celui que nous avons modlis ici, pour lequel il est possible de distinguer intuitivement lordre temporel dune squence de photos du processus en action, est dit irrversible. Notre
procdure dchange stochastique de particules entre deux boites communiquantes est une reprsentation
trs simple dun processus de diffusion, phnomne sur lequel nous reviendrons au chapitre ??. On y
verra que le mouvements des particules les faisant ventuellement traverser le trou est un ensemble de
mouvements rectilinaires entrecoups de collisions (lastiques) avec les parois ou avec dautres particules.
Comme vous lavez dj vu au CEGEP ou mme au secondaire, une collision lastique entre deux corps
est un processus rversible ; si vous filmez la collision, que vous rejouez le film lendroit ou lenvers,
rien ne vous permet de distinguer la direction temporelle de lexprience originale.
Nous avons donc la situation suivante ; lchelle macroscopique du systme (les boites), lvolution
temporelle est irrversible. lchelle microscopique du systme, le phnomne qui en gouverne la
dynamique (les collisions) est lui parfaitement rversible. Comment une squence dvnements rversibles
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

84

CHAPITRE 5. MONTE CARLO

peut-elle produire une volution globale du systme qui soit irrversible ? Ceci est une des questions les
plus fondamentales laquelle vous aurez faire face durant vos tude en physique, et elle vous tiendra fort
occup(e)s pendant quelques cours entiers. Cel pourrait donc vous tre utile de commencer y cogiter
ds maintenant...
Exercices:
1. crivez un code utilisant lapproche Monte Carlo au calcul de la surface de ltang (Fig. 5.1) pour
calculer le volume dune hypersphre de rayon R en D dimensions ; une telle hypersphre est
dfinie par la relation :
x21 + x22 + x23 + ... + x2D = R2 ,
o les xk reprsentent les axes de coordonnes de votre hyperespace D-dimensionnel. Testez votre
code pour la sphre habituelle (D = 3), pour laquelle vous savez videmment que V = 4R3 /3.
2. La Loi dite de Gutenberg-Richter, tablie empiriquement, nous informe que le nombre N de temblement de Terre de magnitude entre m et m + dm varie selon la distribution :
N (m) = N0 m1 ,

1 m 10 .

Une telle distribution est appele une loi de puissance.


(a) Dduisez la transformation mathmatique qui permettra de produire une telle distribution
laide de nombres alatoires distribus uniformment, selon la procdure dcrite la 5.1 ;
(b) Gnrez 1000 vnements distribus selon cette distribution, et vrifiez graphiquement que
leur histogramme prend bien la forme dune loi de puissance ;
(c) Reprenez votre liste de 1000 vnements, et calculez en la moyenne cumulative :
n

1X
mk ,
hmin =
n

n = 2, 3, ..., 103 .

k=1

Portez en graphique hmin versus n ; la moyenne est-elle une quantit statistiquement stable ici ?
Pourquoi ?
3. Calculez par Monte Carlo lintgrale dfinie suivante :
!
p
p
Z 2 Z 1 Z 2 Z 5/2 Z Z 5/2
(u2 + x3 + y 2 + z 2 sin2 (2v) cos( x2 + y 2 w)
3
+
2 (1 sin(2v + z + /2) cos(y))2 exp((u + v + w)/3)
1
0
1 0
1/2
(exp(z w/2) 1) du dv dw dx dy dz .
Le codage de lintgrant devrait lui seul reprsenter un excellent exercice... Ensuite,
(a) Portez en graphique le rsultat en fonction du nombre dvaluations Monte Carlo ; combien
dvaluation sont requises pour obtenir un rsultat stable au troisime chiffre significatif ?
(b) Appellons le nombre dvaluation dtermin ci-dessus N ; comme il sagit ici dune intgrale en
six dimensions, calculer lintgrale par mthode du trapze gnralise 6 dimensions avec le
mme nombre N dvaluations de lintgrand imposerait donc une rsolution de N 1/6 points
quidistants par dimension spatiale. Selon vous, considrant la forme de lintgrand, est-ce
suffisant ?

Bibliographie:
Le chapitre 7 du Numerical Recipes offre une excellente prsentation de la gnration de nombres
alatoires sur ordinateurs. Je vous recommanderais de consulter dabord la seconde dition (1992), qui
traite des gnrateurs dits congruentiels. La grande rfrence classique sur la famille des gnrateurs de
nombres alatoires dits congruentiels est :
Park, S.K., & Miller, K.W., Comm. of the ACM, 31, 1192 (1988).
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

85

5.6. RALISME PHYSIQUE ET IRRVERSIBILIT

La troisime dition du Numerical Recipes abandonne effectivement les gnrateurs congruentiels au


profit dapproches plus sophistiques, mais plus difficile saisir, autant au niveau de la thorie que de
limplmentation numrique. Cest pourquoi je vous recommande de commencer par la seconde dition.
Tous les ouvrages de statistique le moindrement raisonnables discuterons de la production et des
proprits de diverses FDP non-uniformes ; je trouve trs pratique et instructive la compilation prsente
au chapitre 4 de louvrage :
James, F., Statistical Methods in Experimental Physics, 2e d., World Scientific (2006).
Le chapitre 2 de cet ouvrage offre galement une bonne introduction aux probabilits, et leur distributions. Un autre ouvrage notable dans la mme veine est :
Roe, B.P., Probability and Statistics in Experimental Physics, Springer (1992).
Au niveau de lapproche Monte Carlo en modlisation physique, louvrage de Gould & Tobochnik cit
en bibliographie au chapitre 1 contient dexcellent exemples. un niveau physique plus avanc, et plus
centr sur les applications en physique des matriaux, louvrage suivant me semble pas mal :
Frenkel, D., & Smit, B., Understanding Molecular Simulations, 2e d., Academic Press (2002).

27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

86

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

CHAPITRE 5. MONTE CARLO

27 octobre 2014

87

Chapitre 6

Racines et optimisation
Dans ce chapitre nous allons dvelopper quelques algorithmes numriques permettant de traiter deux
classes de problmes mathmatiques prime abord distincts : la recherche de racines, et celle dextrema.
Une racine r dune fonction f (x) est dfinie comme une valeur r telle que f (r) = 0. Par exemple, une
relation linaire y = mx + b a une seule racine r = b/m, tandis quun polynme quadratique de la
forme,
y = ax2 + bx + c = 0, ,

(6.1)

a ses deux racines :


r =

b2 4ac
.
2a

(6.2)

Vous naurez probablement pas oubli que dj avec un polynme cubique, les choses se compliquaient
srieusement. Les premires sections du prsent chapitre vous feront faire connaissance avec deux techniques simples permettant le calcul numrique des racines dune fonction f (x) dune seule variable, soit
la bissection (6.2) et la mthode de Newton (6.3). Nous considrerons ensuite la recherche des valeurs
extrmes, ou extrema, dune fonction. Les extrema 1 viennent en deux classes, soit les minima et les
maxima ; un maximum est une valeur x telle que f (x ) > f (x) x 6= x , et linverse pour un minimum.
Le lien profond entre la recherche de racine et celle des extrema provient videmment du fait que pour
un extremum on doit avoir df /dx = 0, ce qui fait que les problmes de recherche dextrema peuvent
souvent tre convertis en problmes de recherche de racines. Cependant, comme nous aurons loccasion de
le constater plus loin dans ce chapitre, ds quon passe une fonction de deux variables, il est rarement
avantageux deffectuer cette conversion.
Une des tches les plus courantes en physique exprimentale est dajuster un modle (habituellement
dfini en termes dun ou plusieurs coefficients numriques ajustables) sur un ensemble de donnes exprimentales ou observations. Loptimisation consiste choisir les valeurs numriques des divers paramtres
ajustables de manire offrir la meilleure reprsentation possible des donnes. Ceci est habituellement
fait en minimisant une mesure de lcart entre les prvisions du modle et les observations dont il doit
en principe offrir une reprsentation thorique. Loptimisation se retrouve donc souvent formule comme
un problme de minimisation. Comme on le verra plus bas, le choix de lune ou lautre technique de
minimisation sera souvent dict par la complexit de la relation mathmatico-physique reliant le modle
aux donnes.

6.1

La diffraction

Commenons par quelque chose que vous connaissez dj, cest toujours bon pour le moral. Vous avez
appris au CEGEP que la diffraction de la lumire par un orifice (comme une fente simple) peut tre calcule
en invoquant le principe de superposition de Huygens, selon lequel les amplitudes des fronts donde associs
une range de sources ponctuelles contigus couvrant la fente sadditionnent linairement, mais avec un
1. extrema : nominatif pluriel du latin extremum ; donc SVP pas de s extrema (ou minima, maxima, etc). Et encore
moins extremum, minimum, maximum, etc. Fin de la parenthse culture gnrale...

27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

88

CHAPITRE 6. RACINES ET OPTIMISATION

Figure 6.1 Gomtrie du problme de diffraction par une fente simple de largeur d illumine par une
onde plane monochromatique de longueur donde . Lintensit lumineuse est mesure au point P sur un
cran plac derrire la fente.
dphasage relatif correspondant la diffrence du chemin optique parcouru. La superposition des fronts
donde produits par un ensemble de sources ponctuelles situes le long de la fente peut donc conduire
une interfrence constructive ou destructive, partielle ou totale. Pour une longue fente de largeur d claire
par un faisceau lumineux monochromatique de longueur donde , la variation de lamplitude A() de
londe lumineuse mesure un angle par rapport la ligne reliant la fente au centre dun cran plac
paralllement et une distance L de celui dans lequel est dcoupe la fente (voir Figure 6.1) varie selon,
sin x
,
x

(6.3)

d
sin .

(6.4)

A(x) =
o la variable x est dfinie comme :
x=

Ce profil damplitude est port en graphique sur la Figure 6.2 avec une reprsentation synthtique du
profil dintensit ( A2 ) tel quil serait observ sur lcran. Lalternance rgulire de bandes brillantes et
sombres est caractristique du phnomme de diffraction, qui nest videmment pas restreint aux fentes
rectilignes.
Les minima dintensit se produisent aux endroits o lamplitude totale de londe plane diffracte est
nulle. La dpendance sinusodale du numrateur de lq. (6.3) indique que ces minima apparaitront aux
positions telles que,
x = n ,

n = 1, 2, 3...

(6.5)

La question savoir ce qui se passe x = 0 se rgle par la Rgle de lHpital, qui nous informe que
lim

x0
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

sin x
cos x
= lim
=1.
x0
x
1

(6.6)
27 octobre 2014

89

6.2. LA BISSECTION

Figure 6.2 Profil damplitude du patron de diffraction dune fente simple (courbe). Limage du haut
montre lintensit lumineuse associe, qui est proportionnelle au carr de lamplitude de londe. Le paramtre x mesure effectivement la distance partir du centre du patron de diffraction (voir eq. 6.4). Les
tirets pointills indiquent la position des minima dintensit, et ceux en trait plein la position des maxima.

Pour trouver les positions des pics dintensit nous navons qu driver le membre de droite de lq. (6.3)
par rapport x, et exiger que le rsultat soit gal zro :


d sin x
cos x sin x
=
2 =0.
(6.7)
dx
x
x
x
Sauf que voil, aucune manipulation algbrique lgale connue ne permet disoler le x dans cette expression.
En fait, lquation (6.7) dfinit un problme de recherche de racine pour une fonction f (x) que lon pourrait
crire comme :
f (x) = x cos x sin x .

(6.8)

Alternativement, on pourrait diviser cette quation par cos x et obtenir,


f (x) = tan x x ,

(6.9)

qui est une seconde forme de la fonction ayant les mmes racines. On vous a peut-tre mme dj fait
solutionner a via une mthode graphique, en mesurant sur du papier quadrill les points dintersection
des fonctions y = tan x et y = x. Au sens strictement mathmatique, les quations (6.9) et (6.8) sont
videmment quivalentes. Mais du point de vue dune recherche numrique de racine, la version dfinie
par lq. (6.8) est prfrable (6.9), car cette dernire diverge l o cos = 0, soit un ensemble discret
de valeurs x = (n + 1/2), n = 0, 1, ... Voyons maintenant comment trouver numriquement les racines
de telles fonctions.

6.2

La bissection

Nous cherchons donc les racines de lq. (6.8). Supposons que nous pouvons tablir a priori un intervalle
[x1 , x2 ], tel que f1 f (x1 ) et f2 f (x2 ) soient de signes opposs, dans lequel nous cherchons une racine
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

90

CHAPITRE 6. RACINES ET OPTIMISATION

r devant tre dtermine avec une prcision donne . Comme son nom lindique, la mthode de la
bissection converge vers la racine par bissection successive de lintervalle de recherche. Lide de base ici
nest rien de plus subtil que le fait que la racine de f (x) correspond ici au point o la fonction change
de signe. tant donn un intervalle de dpart [x1 , x2 ] et les valeurs correspondante f1 et f2 (de signes
opposs), on calcule un nouveau fm f (xm ) mi-chemin entre x1 et x2 ; si fm est du mme signe que
f2 , la racine doit tre entre x1 et xm , et on reprend donc la bissection avec x2 = xm ; si par contre fm et
f2 sont de signes opposs, alors la racine est entre xm et x2 , et on reprend la bissection avec x1 = xm .
La valeur de xm correspond lestim de la racine, et lcart x2 x1 la prcision absolue de cet estim.
Un programme en Python effectuant une recherche de racine par bissection pour lq. (6.8) est donn
ci-dessous.
Code Python pour trouver une racine par bissection
1
#Ce programme calcule la racine dune fonction dune variable
2
#entre deux bornes x1 et x2, par la methode de la bissection.
3
4

from math import *

5
6
7

def fct(x):
#Definition de la fonction dont on cherche la racine
return x*cos(x)-sin(x)

8
9
10
11
12

x1=pi+0.1
#Borne gauche
x2=2*pi-0.1
#Borne droite
delta=x2-x1
epsilon=1.e-5 #Precision requise pour la racine

13
14
15
16
17
18

f1=fct(x1)
f2=fct(x2)
if f1*f2>0: #verification
print("Fonction non valide ou aucune racine dans lintervalle!")
delta=-1

19
20
21
22
23
24
25
26
27

while (delta>epsilon): #Boucle bissection


xm=0.5*(x1+x2) #Point milieu de lintervalle
fm=fct(xm)
f2=fct(x2)
if fm*f2>0:
#Une racine est a gauche
x2=xm
#Lintervalle devient la moitie gauche
else:
#Une racine est a droite
x1=xm
#Lintervalle devient la moitie droite

28
29
30

delta=x2-x1
#Estime de la precision
print(racine de la fonction: {}+/-{}.format(xm,delta))
La Figure 6.3 illustre lapplication de la bissection dans le cas de notre problme de recherche dextremum du patron de diffraction dune fente simple, tel que dcrit par lq. (6.8). Dans cette situation
le choix de lintervalle de dpart est facile, puisque, nous sommes en droit de supposer que lextremum
est situ quelque part entre les premier et second minima, dont nous connaissons les positions : x = et
x = 2. La partie du bas de la Figure illustre lvolution de la taille et position de lintervalle de recherche,
les itrations allant du haut vers le bas. Lalgorithme garantit que la largeur de lintervalle de recherche
diminue comme 1/2n , o n est le dcompte des itrations depuis le dbut du processus de bissection. Ceci
implique que le nombre total ditrations requises pour atteindre une tolrance est donn par,


x2 x1
,
(6.10)
n = log2

soit une quarantaine ditrations pour = 1012 et x2 x1 1.


La bissection offre plusieurs caractristiques avantageuses. Dabords, cette mthode ne requiert que la
capacit dvaluer la fonction f (x) toute valeur de x, mais nexige aucun calcul ou estim de la drive
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

6.2. LA BISSECTION

91

Figure 6.3 Fonctionnement de la mthode de la bissection pour la recherche du premier maximum


du patron de diffraction dune fente simple. La partie du haut montre la variation du f (x) dfini par
lq. (6.8) en fonction de x, et la partie du bas lvolution de lintervalle de bissection (en gris) pour le 10
premires itrations de lalgorithme (allant du haut vers le bas)

27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

92

CHAPITRE 6. RACINES ET OPTIMISATION

de cette fonction. De plus, elle garantit la dtection dune racine si une racine existe dans lintervalle
spcifi. Remarquez cependant que si plusieurs racines se retrouvent dans lintervalle initial, la mthode
convergera sur lune delles sans donner dindications que dautres racines sont prsentes. Si le changement
de signe entre x1 et x2 est d une discontinuit (comme pour tan x x = (n + 1/2), n = 0, 1, ...), la
bissection vous trouvera la discontinuit sans rechigner.
Notons finalement un de ses dsavantages, soit que cette mthode ne fonctionne que pour les racines
qui correspondent un point o la fonction change de signe, et en tant que telle nest pas applicable
la recherche de racines pour toutes les fonctions, ou pour toutes les racines dune fonction. Par exemple,
essayez de trouver la racine de la fonction (x 0.3)2 dans lintervalle [x1 , x2 ] = [0, 1] avec lalgorithme
ci-dessus, chec garanti !

6.3

La mthode de Newton

Si vous navez pas la patience dattendre une quarantaine ditrations, il existe toute une gamme de
mthodes de recherche de racines qui, quand tout va bien, convergent beaucoup plus rapidement que la
bissection. La mthode dite de Newton (oui, le mme que F = ma) est une grande classique parmi ces
mthodes, mais elle nest applicable efficacement quaux situations o la drive de la fonction dont les
racines sont recherches est calculable analytiquement. Son point de dpart est encore une fois notre trs
fameux dveloppement en srie de Taylor dune fonction f (x) dans le voisinage de x = x0 :



(x)2 d2 f
(x)3 d3 f
df
+
+ ...
(6.11)
f (x0 + x) = f (x0 ) + (x) +
dx x0
2! dx2 x0
3! dx3 x0
Si lon suppose maintenant que f (x) a une racine x = r, et que cette racine nest pas trop loigne
de x0 , alors on peut dfinir un x tel que x0 + x = r, et tronquer le dveloppement au second terme :

df
f (r) = f (x0 ) + (r x0 ) .
(6.12)
dx x0
Mais le membre de gauche est nul si r est une racine, et donc r devrait tre donn par
r = x0

f (x0 )
.
df /dx

(6.13)

videmment, la racine r ainsi calcule ne sera pas exactement gale la racine relle, puisque son calcul
rsulte de lutilisation dun dveloppement tronqu, ce qui introduit automatiquement une erreur dans
le calcul de la racine. Mais le processus peut tre rpt en rvaluant f et sa drive x = r, et en
rutilisant lq. (6.13) pour recalculer un nouvel estim de r, et ainsi de suite itrativement jusqu ce que
la racine ait t localise au niveau de prcision numrique dsire. Un programme en Python effectuant
une recherche de racine par la mthode de Newton est montr ci-bas, toujours pour notre problme de
recherche des maxima du patron de diffraction. Notez que lon doit spcifier une valeur de dpart pour
x0 , et que lon doit dfinir deux fonctions, la premire calculant f (x), et la seconde sa drive df /dx. Ce
code est une implmentation minimale de la mthode de Newton ; en ralit il faudrait au moins ajouter
un test pour limiter la grandeur du pas delta, pour se protger de situations o lon atterrit une valeur
de x pour laquelle df /dx ' 0. Ici, on a aussi introduit une variable pour compter le nombre ditrations,
que lon limite une certaine valeur spcifie par lusager.

1
2

Code Python pour trouver une racine par Newton


#Ce programme calcule la racine dune fonction dune variable
#par la methode de Newton.

3
4

from math import *

5
6
7

def fct(x):
#Definition de la fonction dont on cherche la racine
return x*cos(x)-sin(x)

8
9
10

def fctDer(x): #Definition de la derivee de la fonction fct


return -x*sin(x)
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

93

6.3. LA MTHODE DE NEWTON

Figure 6.4 Les quatre premires itrations de la mthode de Newton pour la recherche de racines, ici
la racine r = 1 du polynme quartique f (x) = x4 1.

11
12
13
14
15

epsilon=1.e-6
iterMax=20
x0=1.5*pi
prec=1.

#Precision requise pour la racine


#Nombre maximum diterations permises
#Point de depart
#Estime de la precision, initialise a >epsilon

16
17
18
19
20
21
22
23

k=0 #compteur diterations


while (prec>epsilon) and (k<iterMax): #Boucle Newton
dx=-fct(x0)/fctDer(x0)
#increment en x
x0+=dx
#nouvelle valeur de x0 (la racine)
prec=abs(dx)
#estime conservateur de la precision
k+=1
print(racine de la fonction: {}+/-{}.format(x0,prec))
La Figure 6.4 illustre les premires 4 itrations de ce processus, dans le cas de la recherche dune
racine du polynme f (x) = x4 1 ; ce polynme compte quatre racines distinctes (1, et i), et pour
une position de dpart x0 = 1.8 la mthode de Newton converge trs rapidement sur la racine r = 1. Tel
quillustr sur la figure, on notera que la mthode de Newton revient utiliser la drive de f (x) pour
construire une extrapolation linaire vers f (r) = 0.
La Figure 6.5 illustre le taux de convergence de la mthode de Newton (), maintenant applique la
recherche du premier pic (non-central) dans le patron de diffraction dune fente simple. La convergence
est ici extrmement rapide, avec lerreur sur r chutant 105 aprs seulement 2 itrations (et 1016
la quatrime !). La bissection (4), en comparaison, converge beaucoup plus lentement.
On pourrait tre tent de conclure, aprs tude de la Figure 6.5, que la mthode de Newton devrait tre
prfre la bissection. En fait ce nest pas le cas. La mthode de Newton est beaucoup plus rapide, mais
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

94

CHAPITRE 6. RACINES ET OPTIMISATION

100
10-1
10-2
10-3
10-4
10-5
10-6
10-7
10-8
10-9
10-10

10

itration

15

20

25

Figure 6.5 Convergence de la mthode de Newton () et de la bissection (4) sur la recherche du


premier maxima du patron de diffraction dune fente simple. Les symboles indiquent les erreurs exactes
chaque itration, alors que les lignes indiquent les prcisions estimes par les deux mthodes.
beaucoup moins robuste, que la bissection. Pour une fonction monotoniquement croissante ou dcroissante,
sans trop de changement de signe de la drive seconde (comme pour le polynme quartique de la Fig. 6.4),
la mthode de Newton est imbattable. Mais imaginez maintenant une fonction de forme plus complexe, et
o une itration de la mthode de Newton vous fait atterrir une valeur de x o df /dx ' 0 ; lq. (6.13)
garantit que votre prochaine estim de r se retrouvera quelque part dans la galaxie dAndromde (
moins davoir eu la gniale ide dajouter un test de divergence lalgorithme de base list ici). Ou mme
avec une fonction telle que celle que nous avons considre pour les pics dintensit de diffraction, si vous
choisissez mal votre point de dpart la mthode pourrait foirer (essayez par exemple dutiliser x0 = +0.1
comme point de dpart plutt que x0 = 1.5). De plus, la mthode de Newton applique une fonction
prsentant un profil antisymtrique sur rflexion par rapport la racine peut se coincer dans un cycle
non-convergent. Ces problmes ne se posent pas avec la bissection.
Une stratgie trs judicieuse consiste dbuter la recherche de racine laide de la bissection, et une
fois la racine localise approximativement, de passer la mthode de Newton afin daller chercher deux
ou trois chiffres de prcision supplmentaires sans trop defforts. Ou encore, effectuer une ou deux tapes
de bissection entre deux itrations de la mthode de Newton, si la convergence semble trop lente 2 . Ce
genre de mthode hybride est souvent optimal, et on verra quil peut ltre galement en optimisation,
sujet des prochaine sections.

6.4

Maximisation (et minimisation)

La maximisation dune fonction f (x) consiste trouver le (ou les) point(s) x tel que
f (x ) > f (x) ,

x 6= x .

(6.14)

Vous comprendrez jespre que trouver le ou les maxima dune fonction f (x) est absolument quivalent
trouver les minima de f (x), en consquence de quoi nous allons nous restreindre aux problmes de
maximisation sans aucune perte de gnralit.
Pour une fonction dune seule variable et exprimable analytiquement, la maximisation est souvent
convertie en problme de recherche de racine, comme nous lavions fait la 6.1 pour la recherche des
maxima dintensit du patron de diffraction produit par une fente simple. En plus dune variable cependant, cette approche est rarement utilise. Considrons par exemple le patron de diffraction du une
2. Vous trouverez un algorithme de ce genre au chapitre 9 du Numerical Recipes.

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

95

6.5. MTHODES DE GRIMPE

Figure 6.6 Le patron dintensite I(x, y) produit par la diffraction dune onde plane travers une
ouverture carre, reprsent sous la forme dune surface dans le plan [x, y]. Le maximum est I(0, 0)/I0 =
1.
ouverture carre de cot d ; lintensit I(x, y) est alors donne par une expression du genre :
2

I(x, y)
sin x sin y
,
=
I0
x
y

(6.15)

avec x et y donns par des expressions semblables lq. (6.4). La Figure 6.6 illustre la surface correspondant cette fonction de deux variables. Un maximum dans ce paysage bidimensionnel correspond un
point (x , y ) tel que
I(x, y)

I(x, y)
I(x, y)
x +
y = 0 .
e
e
x
y

(6.16)

Comme loprateur gradient est un oprateur vectoriel, chacune des deux drives doit valoir zro sparment pour un maximum de I(x, y). La substitution de (6.15) dans (6.16) produit donc un systme de
deux quations algbriques nonlinaires couples, o chacune des quations dcrit une courbe ou famille
de courbes (souvent topologiquement complexe) dans le plan [x, y], et les maxima correspondent aux intersections de ces familles de courbes. Trouver ca numriquement, cest du costaud. Il est habituellement
prfrable de rechercher directement les maxima. Voyons comment.

6.5

Mthodes de grimpe

Les bouquins danalyse numrique dbordent de techniques, habituellement affubles de noms imprononables, pour la maximisation (ou minimisation) de fonctions de plusieurs variables. Fondamentalement,
la vaste majorit de ces mthodes sont bases sur la grimpe, et fonctionnent de la manire illustre allgoriquement la Figure 6.7, dans le contexte dune fonction de deux variables. On commence par se
placer quelque part un point (x, y) (possiblement choisi alatoirement) dans le paysage bidimensionnel
(Fig. 6.7A) ; latterissage (en B) nest habituellement pas problmatique numriquement si la fonction est
27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

96

CHAPITRE 6. RACINES ET OPTIMISATION

continue en x et y. Une fois remis sur pied, on explore le voisinage local du point (x, y) et on se dplace
dans une direction ascendante (en C). Le processus est rpt squentiellement jusqu ce quon se retrouve un point (x , y ) o toutes les directions partant de ce point soient descendantes. Le maximum
est alors localis (D). Caramba ! Pour traduire la Figure 6.7 en un algorithme exprimable en Python, nous
devons dabord faire plusieurs choix pratiques :
1. Comment choisir la position de dpart ;
2. Comment calculer la direction du dplacement ;
3. Comment calculer la grandeur du pas ;
4. Comment utiliser linformation accumule aux pas prcdents ;
5. Comment dcider que le maximum est bel et bien localis.
Ce sont les diffrentes rponses possibles ces questions qui sont responsables de leffrayante multiplicit dalgorithmes disponibles dans les bouquins. Nous allons ici en dvelopper un qui est simple coder,
relativement robuste, et facilement gnralisable des problmes de maximisation pour des fonctions de
plus de deux variables. Il est bas sur lutilisation du gradient de la fonction maximiser pour choisir la
direction du dplacement. Le gradient dune fonction scalaire (comme dans le cas de lquation (6.16))
indique la direction de pente maximale dans un espace des paramtres dont ne nombre de dimensions
correspond au nombre de variables indpendantes de la fonction maximiser. Dans les cas de la diffraction
de la lumire par une ouverture carre, le gradient est un vecteur contenu dans le plan [x, y], dont les
composantes x et y sont donnes par I/x et I/y, avec I(x, y) donn par lq. (6.15). partir dune
position (x0 , y0 ), on pose simplement
x = x0 +

f
,
|f | x

y = y0 +

f
,
|f | y

o mesure la longueur du pas dans le plan [x, y], et


s 
 2
2
f
f
|f | =
+
,
x
y

(6.17)

(6.18)

est la norme du vecteur gradient. Si vous ne lavez pas dj devin, cet algorithme est lquivalent dun
double dveloppement en srie de Taylor, tronqu aux seconds termes en x et y ! Les composantes du
gradient peuvent tre calcules soit analytiquement, soit par diffrences finies ; par exemple, lordre
O(h2 ),
f
f (x + , y) f (x , y)
=
,
x
2

f
f (x, y + ) f (x, y )
=
.
y
2

(6.19)

Le bout de code Python ci-dessous utilise cet algorithme pour la recherche des maxima du patron de
diffraction dune ouverture carre, avec valuation des composantes du gradient par diffrences finies
centres. tudiez bien ce bout de code, et notez bien quun test a t ajout pour rduire la grandeur
du pas dun facteur deux si le pas conduit une position o f (x, y) < f (x0 , y0 ), afin dempcher
de sauter par dessus le maximum et/ou de se coincer dans un cycle non-convergent. Examinez bien, et
comprenez, le canevas if ... else ... contrlant lacceptation ou le rejet du pas (et de la nouvelle
valeur de x) en fonction des valeurs de la fonction produite la nouvelle position. Notez aussi que dans ce
code le dnominateur des expressions de diffrences finies ont t omis du calcul des gradients, car ceux-ci
sannulent exactement lors du calcul de la nouvelle valeur de la coordonne par lq. (6.18).

Code Python pour trouver un maximum par la mthode de grimpe


#Maximisation dune fonction de deux variables par methode de grimpe

2
3

from math import *

4
5
6

def fct(x,y): #la fonction a maximiser


return (sin(x)*sin(y)/x/y)**2

7
8

epsilon=1.e-5

#precision desiree (en terme de variation de f)

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

97

6.5. MTHODES DE GRIMPE

Figure 6.7 Mthode de grimpe (allgorie).

27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

98

9
10
11

CHAPITRE 6. RACINES ET OPTIMISATION

iterMax=100
#nombre maximum diterations permises
h=0.1
#taille initiale du pas
delta=2*epsilon #variation de la fonction, initialisation a >epsilon

12
13
14

x,y=-0.6,0.75
f=fct(x,y)

#point de depart
#valeur initiale de la fonction

15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

k=0 #compteur diterations


while (delta>epsilon) and (k<iterMax):
dx=fct(x+h,y)-fct(x-h,y) #composante x du gradient
dy=fct(x,y+h)-fct(x,y-h) #composante y du gradient
grad=sqrt(dx*dx+dy*dy)
#norme du gradient
xn=x+h*dx/grad
#on fait le pas en x
yn=y+h*dy/grad
#on fait le pas en y
fn=fct(xn,yn)
if fn>f:
#on accepte le pas
x,y=xn,yn
delta=abs(fn-f)
f=fn
else:
#on rejette le pas
h/=2
#et on reduit sa taille
k+=1

31
32
33

print(Maximum a x={:8.5f} et y={:8.5f}, .format(x,y))


print("Nombre diterations: {}, valeur de la fonction: {}".format(k,fn))
La Figure 6.8 montre les trajectoires conduisant aux maxima, pour une srie de points de dpart
(x0 , y0 ) (indiqus par des colors) choisis alatoirement. Lespace des paramtres a t restreint ici
x , y , soit le pic central dintensit du patron de diffraction 2D, et les pseudo-cercles
en noir correspondent des courbes de niveau I(x, y) = constante. Quel que soit le point de dpart,
lalgorithme aboutit (0, 0), comme il se doit. Dpendant du (x0 , y0 ) initial, de 10 20 itrations sont
requises pour que lerreur sur lvaluation de f (0, 0) = 1 atteigne 104 ou moins. De toute vidence, a
marche !
Mais il ne fait pas trop vite crier victoire... La Figure 6.9 montre le rsultat de notre mthode de grimpe,
avec lintervalle de recherche maintenant largi 2 x 2, 2 y 2. Il y a maintenant 50
points de dpart, tous choisis alatoirement mais distribus uniformment dans lintervalle. Dans tous
les cas la mthode de grimpe fait son travail et livre la marchandise, dans le sens que les grimpes se
terminent toutes sur un maximum, mais dans bien des cas il ne sagit pas du maximum le plus lev
(0, 0), mais plutt de lun ou lautre des 8 autres maxima secondaires prsents ici dans lespace des
paramtres. Le maximum sur lequel converge la grimpe devient fonction de sa position de dpart, une
situation embarrassante puisque dans bien des cas nous navons pas ide de la position du maximum
global, et donc ne sommes pas en mesure de fournir lalgorithme un bon point de dpart.
Les Figures 6.8 et 6.9 offrent conjointement une excellente illustration de la distinction entre un
problme doptimisation locale versus loptimisation globale. Cette dernire, qui consiste trouver le
maximum absolu dans tout lespace des paramtres, est beaucoup plus coriace numriquement. lheure
actuelle il nexiste aucun algorithme qui garantisse la dtection dun maximum global.
La grimpe itre est une approche simple permettant daborder loptimisation globale, et en fait son
mode de fonctionnement est dj illustr sur la Figure 6.9. La grimpe itre consiste simplement faire
rouler rptition une mthode de grimpe, chaque fois avec un point de dpart diffrent (habituellement
choisi alatoirement), et on accumule une liste des maxima ainsi dtects, et ce jusqu ce quon ne trouve
plus de nouveau maximum. Dcider quand arrter est videmment laspect crucial de cette approche. Dans
bien des situations relles, le calcul de la fonction f et/ou de ses drives peut en soi tre une opration trs
couteuse numriquement, et donc il existe souvent des limites purement pratiques au nombre de grimpes
successives qui puissent tre effectues.
On peut imaginer que la grimpe itre puisse tre acclre si les grimpeurs ont accs linformation
accumule par les grimpeurs antrieurs relative la structure de lespace des paramtres, ou encore si les
PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

6.5. MTHODES DE GRIMPE

99

Figure 6.8 Application de notre mthode de grimpe la recherche du pic central du patron de diffraction
dune ouverture carre. Les traits noirs sont des courbes de niveau de la fonction maximiser, soit
lq. (6.15) ; son maximum est (x , y ) = (0, 0), o I(x, y)/I0 = 1. Les points colors correspondent 10
positions de dpart (x0 , y0 ) choisies alatoirement, et les trajectoires en manant rsultent de lapplication
rpte des qs. (6.17), avec ajustement du pas (voir texte). Quel que soit le point de dpart, lalgorithme
localise sans difficult le maximum recherch.

27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

100

CHAPITRE 6. RACINES ET OPTIMISATION

Figure 6.9 Mme chose que la Figure 6.8, sauf que lespace des paramtres couvre maintenant lintervalle
2 x 2, 2 y 2, et 50 points de dpart ont t choisis alatoirement. Plusieurs de ces
points de dpart convergent vers un maximum secondaire.

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

101

6.6. LA GRIMPE STOCHASTIQUE

grimpeurs peuvent communiquer entre eux durant la grimpe. On verra comment au chapitre ??.

6.6

La grimpe stochastique

Lapproche Monte Carlo sapplique galement la recherche dextrema, sous la forme de la grimpe
stochastique. Lide gnrale est la mme que pour la mthode de grimpe classique considre la 6.5,
avec limportante diffrence que les direction et grandeur du pas, plutt que dtre choisies sur la base du
gradient de la fonction, le sont de manire alatoire.
Alatoire, mais quand mme pas nimporte comment. On aimerait produire des pas qui puissent avoir
une taille comparable celle de lespace des paramtres, de manire pouvoir explorer et se dcoincer
dun extremum local ; dun autre cot, une bonne localisation dun extremum demande un pas dune taille
de lordre du niveau de prcision requis. En rsum, on veut gnrer une distribution de pas couvrant
la fois les grandes et les petites tailles. Une distribution ayant cette proprit est la distribution dite
gaussienne (q. (5.2) et Fig. 5.7), que nous utiliserons donc ici.
videmment, si les pas de la grimpe sont choisis alatoirement, plusieurs conduiront une diminution
de la valeur de la fonction f maximiser (dans le contexte dune maximisation), donc seul les pas
conduisant une augmentation de f sont accepts. Le code Python prsent ci-dessous effectue une telle
grimpe stochastique. Comparez bien ce code au code montr plus haut pour la grimpe classique. Mis
part quelques initialisations, la seule diffrence se trouve au niveau du calcul du pas. Examinez bien la
srie dinstructions lintrieur de la boucle extrieure. La premire boucle while peut gnrer jusqu
25 pas alatoires, et si (et seulement si !) tous ces pas conduisent une diminution de la fonction, alors la
variance de la distribution gaussienne de taille de pas est diminue de moiti, et on passe une nouvelle
itration. Cette situation correspond essentiellement au cas o, peu importe la direction quon emprunte
on voit la fonction diminuer : on doit donc se trouver prs du sommet et il est appropri de rduire la
taille du pas pour chercher le sommet plus prcisment. Mais si un des 25 pas a augment la valeur de
la fonction alors on passe litration suivante sans toucher . Notez enfin lutilisation de la fonction
random.gauss(0,h) pour la gnration de nombres alatoires selon une gaussienne de moyenne 0 et de
variance h2 (dviation standard h).

1
2
3

Code Python pour trouver un maximum par la mthode de grimpe stochastique


#Maximisation dune fonction de deux variables par methode de grimpe
from math import *
from random import gauss

4
5
6

def fct(x,y): #la fonction a maximiser


return (sin(x)*sin(y)/x/y)**2

7
8
9
10
11

epsilon=1.e-6
iterMax=100
essaiMax=25
h=pi

#precision desiree (en terme de variation de f)


#nombre maximum diterations permises
#nombre maximum dessais Monte Carlo
#largeur initiale de la Gaussienne

x,y=3,5
f=fct(x,y)
fn=f/2
delta=2*epsilon

#point de depart
#valeur initiale de la fonction
#initialisation a <f
#initialisation a >epsilon

12
13
14
15
16
17
18
19
20
21
22
23
24
25

k=0 #compteur diterations


while (delta>epsilon) and (k<iterMax):
j=0
#compteur de pas aleatoires
while (fn<=f) and (j<essaiMax): #boucle Monte Carlo
xn=x+gauss(0,h)
#on fait le pas en x
yn=y+gauss(0,h)
#on fait le pas en y
fn=fct(xn,yn)
j+=1

26

27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

102

27
28
29
30
31
32
33

CHAPITRE 6. RACINES ET OPTIMISATION

if fn>f:
x,y=xn,yn
delta=abs(fn-f)
f=fn
else:
h/=2
k+=1

#on accepte le dernier pas


#variation de la fonction
#on rejette le dernier pas
#et on reduit la largeur de la Gaussienne

34
35
36

print(Maximum a x={:8.5f} et y={:8.5f}, .format(x,y))


print("Nombre diterations: {}, valeur de la fonction: {}".format(k,fn))
La Figure 6.10 montre le rsultat de 10 grimpes stochastiques dans le cadre de notre dsormais familier
problme de recherche du maximum central du patron de diffraction dune ouverture carre. Pour des
points de dpart choisis alatoirement entre 3 et +3, on sattendrait ce que la grimpe classique
produise un taux de succs de 1/10. Avec la grimpe stochastique, on obtient ici un trs honorable
8/10. Remarquez comment certaines solutions se coincent pendant quelques itrations sur un extremum
secondaire, mais finissent par atterrir sur le pic central suite laction dun pas de taille substantiel ; on
voit ici lavantage davoir utilis une distribution gaussienne de taille de pas ; bien que leur probabilit soit
faible, de temps en temps un pas de taille substantiellement plus grand que la variance de la distribution
sera produit, ce qui permet de mieux chantillonner lespace environnant, tout en ne freinant pas trop la
convergence vers lextremum (quil soit local ou global).
Pour ce problme doptimisation de dimension 2, la grimpe stochastique nest pas particulirement
avantageuse par rapport la grimpe itre, du point de vue du nombre requis dvaluations de f (x)
pour en arriver un niveau de prcision donn. Comme dans le cas de lintgration, lapproche Monte
Carlo loptimisation ne devient vraiment comptitive que pour des espace de recherche de plus haute
dimension. La situation est comparable celle que nous avions rencontr avec le calcul des intgrales par
Monte Carlo ; valuer numriquement les composantes du gradient dune fonction de N variables via une
diffrence finie centr dordre deux requiert 2N valuations de la fonction.

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014

6.6. LA GRIMPE STOCHASTIQUE

103

Figure 6.10 Recherche du maximum central du patron de diffraction 2D par grimpe stochastique (ici
itre sur plusieurs positions de dpart). Remarquez comment certaines grimpes se coincent temporairement sur un extremum secondaire, mais parviennent sen dptrer suite la production dun pas de
longueur substantielle. Le taux de succs est ici de 8/10, ce qui se compare trs avantageusement la
grimpe itre, pour laquelle on sattendrait 1/10 pour le mme espace de paramtres.

27 octobre 2014

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

104

CHAPITRE 6. RACINES ET OPTIMISATION

Exercices:
1. Le code minimal pour la bisection prsent la 6.2 peut tre restructur de manire telle quun
seul appel la fonction fct(x) soit requis par itration. Faites-le.
2. crivez un petit bout de code qui, partir dun vecteur x contenant N lments ordonns de
manire croissante, utilise lide de la bissection pour localiser la plage dinterpolation associe
une valeur x . Dmontrez que le nombre ditration requis pour trouver cette plage varie en
moyenne comme log2 N , dans la limite o N est grand.
3. crivez une version du code pour la recherche de racine par la mthode de Newton qui sassure
que la racine demeure lintrieur dun intervalle [x1 , x2 ] spcifi par lusager (comme pour la
bissection).
4. La mthode de grimpe, telle que code ci-dessus, risque fort de vous pter au nez vers la fin du
processus de convergence, puisque trs prs du maximum on sattend ce que f 0, ce qui
conduira des trucs du genre zro-divis-par-zro. R-crivez lalgorithme en terme dun angle
dcrivant lorientation du gradient dans le plan [x, y]. Est-ce-que cela fonctionne mieux que lalgorithme original ? Pourquoi ?
5. Modifiez le code pour la grimpe stochastique (Figure ??) pour en faire un code de grimpe stochastique itre, avec points de dpart de chaque grimpe choisis alatoirement.

Bibliographie:
Sur la recherche de racine et loptimisation, je ne peux vraiment faire gure mieux que vous recommander les chapitres 9 et 10 de louvrage Numerical Recipes.
Pour tout ce qui concerne la modlisation de donnes, les erreurs de mesure, les 2 , etc, je trouve louvrage suivant absolument magnifique tous les points de vue, allant de la photo en couverture jusquaux
aspects plus philosophique du sujet :
Taylor, J.R., An introduction to error analysis, University Science Books (1982).

PHY1234, Paul Charbonneau/David Lafrenire, Universit de Montral

27 octobre 2014