modélisation et simulation en physique qcd+qed prediction bmw 2014 ... u montpellier elisation mo...
TRANSCRIPT
Mod�elisation et simulation en physique
HMPH104, Facult�e des Sciences de Montpellier, 2017Felix Br�ummer ([email protected])
HMPH104, U Montpellier Mod�elisation et simulation en physique 1 / 206
1 Introduction
2 Limitations des m�ethodes num�eriques
3 Int�egration et d�eriv�ee num�erique
4 M�ethodes de Monte Carlo : Int�egration, �echantillonnage, optimisation
5 �Equations di��erentielles ordinaires
6 �Equations di��erentielles partielles
HMPH104, U Montpellier Mod�elisation et simulation en physique 2 / 206
Introduction
HMPH104, U Montpellier Mod�elisation et simulation en physique 3 / 206
La physique num�erique
Situation commune en physique : On conna�t les �equations qui g�erent un syst�eme, maison ne peut pas les r�esoudre analytiquement.
Des solutions exactes n'existent que pour tr�es peu de probl�emes(beaucoup de sym�etrie, peu de d�egr�es de libert�e, pas de dissipation. . . )
Approximations control�ees parfois possible pour des syst�emes qui sont su�sammentproches d'un syst�eme exactement soluble.
Pour un syst�eme g�en�erique on a typiquement besoin des m�ethodes num�eriques !
HMPH104, U Montpellier Mod�elisation et simulation en physique 4 / 206
La physique num�erique
Exemple : m�ecanique c�eleste
Probl�eme de Kepler : Deux points mat�eriels, potentiel V � 1r: exactement soluble
(trajectoires = coniques).
Syst�eme solaire : Probl�eme �a plus que deux corps, mais attraction gravitationnelleentre les plan�etes faible par rapport �a l'attraction par le soleil! th�eorie des perturbations permet d'obtenir des r�esultats analytiques.
Cas g�en�erique du probl�eme �a n > 2 corps, toutes masses comparables! il faut r�esoudre les �equations de mouvement num�eriquement
HMPH104, U Montpellier Mod�elisation et simulation en physique 5 / 206
La physique num�erique
Exemple : physique des particules �el�ementaires
Particules �el�ementaires (excitations des champs quantiques) sans interactions :th�eorie exactement soluble
Particules avec interactions faibles (�el�ectrodynamique quantique. . . ) :th�eorie des perturbations
Particules soumises �a la force forte �a �energies basses! m�ethodes num�eriques : th�eorie quantique des champs sur r�eseau
HMPH104, U Montpellier Mod�elisation et simulation en physique 6 / 206
Applications r�ecentes de la physique num�erique
Formation des structures cosmiques ! Springel et al. 2005
Simulation de la distribution de la mati�ere (galaxies et amas galactiques) dans l'universprimordial : 1010 \particules" sous l'in uence de la gravitation Newtonienne, 1 mois surun supercalculateur
HMPH104, U Montpellier Mod�elisation et simulation en physique 7 / 206
Applications r�ecentes de la physique num�erique
Relativit�e num�erique ! Ossokine/Buonanno/Dietrich/Haas, SXS project 2017
bh.mp4
Emission d'ondes gravitationnelles lors de la collision de deux trous noirs, �ev�enementGW170104 r�ecemment observ�e par l'exp�erience LIGO
HMPH104, U Montpellier Mod�elisation et simulation en physique 8 / 206
Applications r�ecentes de la physique num�erique
Th�eorie quantique des champs sur r�eseau ! Borsanyi et al. 2014
0
2
4
6
8
10
ΔM
[MeV
]
ΔN
ΔΣ
ΔΞ
ΔD
ΔCG
ΔΞcc
experimentQCD+QEDprediction
BMW 2014 HCH
Premier calcul ab initio de la di��erence des masses du proton et du neutron �N (60 TBde donn�ees num�eriques)
HMPH104, U Montpellier Mod�elisation et simulation en physique 9 / 206
Applications r�ecentes de la physique num�erique
Collision d'ions lourds ! Models and Data Analysis Initiative, https://madai-public.cs.unc.edu/
himovie.mov
Collision de deux nouyaux Au �a une �energie de 200 GeV au collisionneur r�elativiste d'ionslourds RHIC
HMPH104, U Montpellier Mod�elisation et simulation en physique 10 / 206
Aper�cu du cours
Contenu : Algorithmes pour la physique num�erique
Erreur num�erique et complexit�e
Int�egration et di��erentiation num�erique
Equations di��erentielles ordinaires
Equations di��erentielles partielles
M�ethodes de Monte Carlo
Pr�er�equis :
Physique et math�ematique au niveau de la licence en physique
Connaissances de base en programmation(Techniques avanc�ees ! cours de Herv�e Wozniak, en parall�ele)
Mati�ere �a revoir ind�ependamment si n�ecessaire !
Familiarit�e avec Python : avantageux mais pas essentiel (�ca s'apprend vite)
HMPH104, U Montpellier Mod�elisation et simulation en physique 11 / 206
Aper�cu du cours
Ressources :
Ces notes de cours sur Moodle
Autres notes de cours en ligne, p. ex. par A. Palacios@UM (ce cours jusqu'�a 2015)
R�ef�erence pour quelques commandes importantes : Reference.pdf sur Moodle
Livre p�edagogique : \Computational physics" par M. Newman, CreateSpace 2013.
Livre encyclop�edique : \Numerical recipes in C++ (3rd ed.)" par W. H. Press,S. A. Teukolsky, W. T. Vetterling, B. P. Flannery, Cambridge Univ. Pr. 2007
Informations compl�ementaires (programmation avec Python 3, algorithmique �el�ementaire,m�ethode de Newton, alg�ebre lin�eaire num�erique, Monte Carlo. . . ) :
Notes du cours de HLPH609 \Programmation pour la physique" en L3 physique etapplications.
HMPH104, U Montpellier Mod�elisation et simulation en physique 12 / 206
La physique num�erique avec Python
Le langage Python 3 :
simple �a apprendre
polyvalent : beaucoup de domaines d'application
\batteries included" : vaste fonctionnalit�e dans les biblioth�eques
interpr�et�e, pas compil�e ) programmes facilement portable
supporte plusieurs styles de programmation : proc�edurale, orient�ee objet,fonctionnelle. . .
D�esavantage principal : programmes pas tr�es vite, di�cile �a optimiser) pas l'outil id�eal pour le calcul num�erique �a haute performance
HMPH104, U Montpellier Mod�elisation et simulation en physique 13 / 206
Python 3 en 3 transparents
Si vous n'etes pas encore familier avec Python : �Etudiez surtout les exemples de codepour voir le fonctionnement !
Di��erences avec d'autres langages populaires
Pas de d�eclaration des variables, il su�t de leur donner une valeur :
x = 5 # Affecte la valeur 5 �a la nouvelle variable x
# Le type est int (entier), ce qui r�esulte
# de la forme de l'affectation
y = 5.0E-4 # y = 0.0005 , nouvelle variable du type float
# (nombre flottant , pr�ecision double)
Une instruction par ligne, pas de \ ;" pour les s�eparer.
Blocs d'instructions distingu�es par le niveau d'indentation (pas de \{ }" ni de \end") :
if answer == correct_answer:
for i in range (3):
print("Well done!")
celebrate ()
HMPH104, U Montpellier Mod�elisation et simulation en physique 14 / 206
Python 3 en 3 transparents
Structures de controle
Structure conditionnelle :
if CONDITION:
INSTRUCTION1
INSTRUCTION2
...
elif CONDITION2: # facultatif
...
else: # facultatif
...
CONTINUE_HERE
Boucle for :
for VAR in ITERABLE:
INSTRUCTION1
...
CONTINUE_HERE
HMPH104, U Montpellier Mod�elisation et simulation en physique 15 / 206
Python 3 en 3 transparents
Boucle while :
while CONDITION:
INSTRUCTION1
...
CONTINUE_HERE
D�e�nition de fonction :
def FUNCTION_NAME(ARGUMENT1 , ARGUMENT2 , ...):
INSTRUCTION1
INSTRUCTION2
...
return RETURN_VALUE # facultatif
Appel de fonction :
print("The answer is", abs(-42))
HMPH104, U Montpellier Mod�elisation et simulation en physique 16 / 206
Un programme exemplaireUn programme qui a�che les longueurs d'onde � qui apparaissent dans le spectred'�emission de l'hydrog�ene avec la formule de Rydberg :
1
�= R
�1
n2� 1
m2
�; R = 1:097 � 107m�1 :
#!/usr/bin/python3
# Affiche les longeurs d'onde du spectre d'�emission de H
R = 1.097E-2 # R en unit�es de 1/nm
n_max = 0 # nombre quantique principal maximal
while n_max <= 0:
user_input = input("Entrez n_max > 0: ")
n_max = int(user_input)
for n in range(1, n_max +1): # pour tous n entre 1 et n_max:
print("S�erie", n, ":")
for m in range(n+1, n+6): # afficher 5 valeurs de lambda
lambdainv = R * (1/n**2 - 1/m**2)
print("{:.2f} nm".format (1/ lambdainv))
HMPH104, U Montpellier Mod�elisation et simulation en physique 17 / 206
Limitations des m�ethodes num�eriques
HMPH104, U Montpellier Mod�elisation et simulation en physique 18 / 206
Dans ce chapitre
La repr�esentation des nombres en Python
L'erreur num�erique
La complexit�e des algorithmes
HMPH104, U Montpellier Mod�elisation et simulation en physique 19 / 206
Limitations des m�ethodes num�eriques
Un ordinateur ne dispose pas d'une puissance de calcul in�nie :
Repr�esentation des donn�ees avec une pr�ecision �nie! erreurs d'arrondi, instabilit�es num�eriques
Le temps de calcul, la m�emoire et la largeur de bande sont limit�es :! r�esultats approximatives, erreurs de troncature! restrictions de la taille maximale des taches faisables
HMPH104, U Montpellier Mod�elisation et simulation en physique 20 / 206
La repr�esentation des nombres en Python
Python conna�t trois types de donn�ees num�eriques de base :
les nombres entiers (int)
les nombres r�eels ottants (float)
les nombres complexes ottants (complex)
Contrairement aux langages de programmation plus traditionnels, la taille des int n'est(th�eoriquement) pas limit�ee en Python : arithm�etique multipr�ecision.En pratique la manipulation des entiers extr�emement grands est pourtant limit�ee par lam�emoire �nie de l'ordinateur.
Un float en Python est de pr�ecision �xe de normalement 8 octets, soit 64 bits,conformement �a la norme IEEE754 \pr�ecision double".
Un complex correspond �a deux float, un pour la partie r�eelle et un pour la partieimaginaire.
HMPH104, U Montpellier Mod�elisation et simulation en physique 21 / 206
Les nombres ottants �a pr�ecision double
R�epartition des 64 bits d'un float :
signe: 1 bit
exposant: 11 bitsmantisse: 52 bits
L'exposant E peut repr�esenter 211 = 2048 nombres di��erents, entre �1022 et 1023inclus, les deux valeurs restants ayant une signi�cation sp�eciale
Avec les bits b0 : : : b51 de la mantisse et s le bit du signe, la valeur est alors
(�1)s 1 +
52Xn=1
b52�n2�n!� 2E
Nombres ottants aux valeurs absolues entre 2�1022 � 10�308 et 21024 � 10308 avecune pr�ecision de 53 log10 2 � 16 d�ecimales.
Lorsqu'une variable devient plus grande que 10308 : d�epassement, elle obtient lavaleur sp�eciale inf (in�ni) en Python
Lorsqu'une variable devient plus petite que 10�308 : soupassement, elle est mise �az�ero
HMPH104, U Montpellier Mod�elisation et simulation en physique 22 / 206
Exercice
�Ecrire deux versions d'un programme qui calcule la factorielle d'un nombre x donn�e.Dans la premi�ere version, x sera represent�e par un int et dans la deuxi�eme par un float.Qu'est-ce qu'on obtient pour la factorielle de 200 avec les deux programmes ? Expliquerce que l'on observe.
Indications (pour ceux qui ne conaissent pas encore Python) :
Pour cr�eer une variable x du type int et lui donner la valeur 1 :x = 1
Pour cr�eer une variable x du type float et lui donner la valeur 1 :x = 1.0
La commande a *= b remplace la valeur de a par le produit a � b.Boucle sur i de 0 �a n-1 :for i in range(n):
...
Fonctions : voir p. 16. (Python supporte la r�ecursivit�e !)
HMPH104, U Montpellier Mod�elisation et simulation en physique 23 / 206
Erreur num�erique : Erreur d'arrondi
Niveau de pr�ecision = 16 d�ecimales
Exemple
En Python :p2 = 1:4142135623730951
En r�ealit�e :p2 = 1:4142135623730950488 : : :
Erreur d'arrondi : 0:0000000000000000512 : : :
3:0 et 2:999999999999999 sont le meme nombre en pr�ecision double !) il ne faut jamais tester si les valeurs de deux float sont �egales :
if x == y: # �a �eviter: faux pour x = 3.0 et y = 2.999...
print(x)
mais plutot si elles sont �egales �a une incertitude donn�ee pr�es :
epsilon = 1.0E-12
if abs(x - y) < epsilon: # mieux
print(x)
HMPH104, U Montpellier Mod�elisation et simulation en physique 24 / 206
Erreur num�erique : Perte d'information
Probl�eme lorsqu'il faut combiner plusieurs nombres dont les ordres de grandeur sont tr�esdi��erents.
Exemple : x = 1, y = 1 + 10�14p2, alors 1014(y � x) = p2.
En Python :p2 = 1:414213562373095 � ��x = 1:000000000000000 � ��y = 1:000000000000014 � ��
y � x = 1:4 � � � � � � � � � � � � � � � � � � � 10�14
En fait le code
x = 1.0
y = 1.0 + 1.0E-14 * 2**(1/2)
print (2**(1/2))
print (1.0 E14 * (x - y))
produit l'a�chage1.4142135623730951
1.4210854715202004
) l'erreur d'arrondi appara�t d�ej�a dans la 2�eme d�ecimale !
HMPH104, U Montpellier Mod�elisation et simulation en physique 25 / 206
Exercice
�Ecrire un programme qui calcule la solution de l'�equation du second d�egr�eax2 + bx+ c = 0 en utilisant la formule standard,
x =�b�p�
2a; � = b2 � 4ac :
Qu'est-ce qu'on obtient pour a = c = 0:001 et b = 1000 ?Montrer qu'on peut aussi �ecrire les racines comme
x =2c
�b�p� :
Modi�er votre programme pour les �egalement calculer avec la deuxi�eme formule, etl'appliquer au cas a = c = 0:001 et b = 1000. Qu'est-ce qu'on obtient ? Quelle estl'explication ?
HMPH104, U Montpellier Mod�elisation et simulation en physique 26 / 206
Erreur num�erique : Erreur de troncature
Pour un r�esultat d�e�ni par une limite : repr�esentation sur l'ordinateur toujours inexacte.
Exemple
e = limN!1
NXn=0
1
n!
Impossible de calculer une in�nit�e de termes en pratique
) erreur de troncature
En realit�e : e = 2:71828182845904 : : :Avec N = 10 : e � 2:71828180114638Erreur de troncature : 0:00000002731266 : : :
HMPH104, U Montpellier Mod�elisation et simulation en physique 27 / 206
Exercice
On va calculer l'int�egrale
I =
Z 1
�1f(x) dx f(x) =
p1� x2
avec une m�ethode num�erique simple et �etudier sa pr�ecision.Donner la valeur analytique de I (Indication : qu'est-ce que la signi�cationg�eometrique de cette int�egrale ?)�Ecrire un programme qui calcule une approximation de I par la N -�eme somme �adroite de Riemann.(Rappel : On divise l'intervalle [�1; 1] en N morceaux de largeur 2=N et poseI �PN
k=12Nfk avec fk = f(xk) et xk = �1 + 2k
N.)
Qu'est-ce qu'on obtient pour N = 100 ? Comparer avec la valeur analytique (ouplutot avec sa repr�esentation en Python).Si on augmente N tel que le temps de calcul reste inf�erieur �a 1s, par combienpeut-on reduire l'erreur de troncature ?
HMPH104, U Montpellier Mod�elisation et simulation en physique 28 / 206
Erreur num�erique : Erreur absolue et relative
Soit x un nombre et ~x une approximation de x. On d�e�nit l'erreur absolue �(x; ~x),
�(x; ~x) = jx� ~xjet l'erreur relative �r(x; ~x)
�r(x; ~x) =jx� ~xjjxj = �
�1;
~x
x
�:
On ne conna�t jamais les valeurs exactes des erreurs num�eriques �, �r (sinon il n'y auraitpas besoin d'approximation). Typiquement on suppose qu'il s'ag�t des variables al�eatoiresnormalement distribu�ees. Le symbole � d�esigne l'�ecart-type de � et C l'�ecart-type de �r,
� = Cjxj :Par exemple, pour l'erreur d'arrondi du aux limites de la pr�ecision double, C = 10�16.
L'objectif de l'analyse d'erreurs est de d�eterminer C (ou �) pour obtenir une estimationpour �r (ou �).
HMPH104, U Montpellier Mod�elisation et simulation en physique 29 / 206
Erreur num�erique : propagation des incertitudes
Selon la th�eorie des probablit�es :
Pour la somme y = x1 + x2 de deux nombres x1 et x2 avec incertitudes pascorrel�ees �1 et �2, on a �2y = �21 + �22 et donc
�y =q�21 + �22 :
Cas particulier : si les incertitudes r�elatives sont �egales, C1 = C2 � C, alors�y = C
px21 + x22.
Pour le produit y = x1x2 les carr�es des incertitudes relatives s'ajoutent, alors
Cy =qC21 + C2
2
Cas particulier : si C1 = C2 � C, alors Cy =p2C.
Cas g�en�eral : Soit y = y(x1; : : : xn), alors l'incertitude de y est
�y =
vuut nXi=1
�@y
@xi�i
�2
HMPH104, U Montpellier Mod�elisation et simulation en physique 30 / 206
Erreur num�erique : Stabilit�e d'un algorithme
Un algorithme est
instable : des petites variations des donn�ees d'entr�ee peuvent se traduire en grandesvariations des donn�ees de sortie) l'erreur num�erique est ampli��ee
stable : des petites variations des donn�ees d'entr�ee ne produisent pas de grandesvariations des donn�ees de sortie) l'erreur num�erique est att�enu�ee ou reste inchang�ee.
La stabilit�e d'un algorithme peut etre pr�ecis�e quantitativement selon la situation.�Evidemment, etre stable est un crit�ere d�esirable.
HMPH104, U Montpellier Mod�elisation et simulation en physique 31 / 206
Complexit�e d'un algorithme
Exemples des probl�emes num�eriques :
�Evaluer une fonction �a n d�ecimales de pr�ecision
R�esoudre une �equation avec une pr�ecision de 1 sur n
Diagonaliser une matrice n� nTrier une liste de n �el�ements
Trouver la position d'un �el�ement particulier dans une liste de n �el�ements
Mesure de la performance d'un algorithme :Comment le temps de calcul T (n) depend-il de la taille des donn�ees d'entr�ee n ?
(Autres mesures selon la situation : besoin de m�emoire M(n) ou de largeur de bande du r�eseau B(n). . . )
On est int�eress�e surtout par le comportement asymptotique de T (n) pour des grands n.
HMPH104, U Montpellier Mod�elisation et simulation en physique 32 / 206
Analyse de complexit�e : Croissance asymptotique
Soit f : R+ ! R+ une fonction. On d�e�nit l'ensemble des fonctions O(f) parO(f) = ffonctions g : R+ ! R+ j 9 c > 0; x0 > 0 8 x > x0 : g(x) � c f(x)g
= fonctions qui croissent au maximum aussi vite que f asymptotiquement(pour x su�samment grand).
De meme, on d�e�nit (f) par
(f) = ffonctions g : R+ ! R+ j 9 c > 0; x0 > 0 8 x > x0 : cg(x) � f(x)g= fonctions qui croissent au moins aussi vite que f asymptotiquement
et en�n�(f) = (f) \ O(f)
= fonctions avec le meme comportement asymptotique que f .
HMPH104, U Montpellier Mod�elisation et simulation en physique 33 / 206
Analyse de complexit�e : Exemple de croissance asymptotiqueExemple : Soit g(x) = 2x3 � 3x2 + 1.
g(x) 2 O(x3)(pour grands x on peut n�egliger tous les termes sauf 2x3 ; puis on choisit c � 2).
De meme, g(x) 2 (x3)(meme raisonnement ; ici il su�t de choisir c > 1=2).
Puisque g(x) 2 O(x3) et g(x) 2 (x3), alors g(x) 2 �(x3).
g(x) 2 O(exp(x)), mais g(x) 62 (exp(x))(croissance compar�ee : l'exponentielle cro�t plus vite que toute puissance).
g(x) 62 O(x2), mais g(x) 2 (x2)
zoom out !
HMPH104, U Montpellier Mod�elisation et simulation en physique 34 / 206
Exercice
Montrer que pour des constantes positives a; b; c on a
�(log(xa)) = �(logb x) = �(log(cx)) = �(log(x)) :
HMPH104, U Montpellier Mod�elisation et simulation en physique 35 / 206
Analyse de complexit�e
Objectif de l'analyse de complexit�e : trouver le comportement asymptotique de lafonction T (n) = temps de calcul en fonction de la taille des donn�ees d'entr�ee
) compter les op�erations simples n�ecessaires pour e�ectuer l'algorithme
Op�eration simple = a�ectation, op�eration arithm�etique sur float, comparaison. . .
Remarque 1 : En informatique la notation O(f(n)) est souvent utilis�ee au lieu de�(f(n)) meme si le sens est di��erent. Exemple : Si un algorithme est caract�eris�e par lacomplexit�e en temps T (n) 2 �(n logn), on dit commun�ement que� T (n) 2 O(n logn) � (ou meme, par abuse de notation, � T (n) = O(n logn) �) |juste par implication, mais strictement parlant une a�rmation plus faible. Ici nousutiliserons la notation plus pr�ecise � T (n) 2 �(n logn) �.
Remarque 2 : Pour l'analyse de complexit�e les symboles O, et � sont d�e�nis pour lalimite dans laquelle l'argument de la fonction tend vers in�ni. Par contre, en analyser�eelle on les d�e�nit normalement pour la limite dans laquelle l'argument tend vers z�ero(comme on verra quand on discute l'int�egration et la di��erentiation num�erique).
HMPH104, U Montpellier Mod�elisation et simulation en physique 36 / 206
Exemple : Recherche lin�eaire
Donn�ees d'entr�ee : une liste L de longueur n qui contient l'�el�ement x
R�esultat : la position de x dans L
Algorithme : parcourir L, comparer x avec chaque �el�ement, terminer lorsqu'on letrouve
def linear_search(L, x):
for index , item in enumerate(L):
if item == x:
return index
Analyse de complexit�e :
Dans le meilleur cas, 1�er �el�ement = x, alors T (n) = const., alors T (n) 2 �(1).
Dans le pire cas, il faut parcourir toute la liste et e�ectuer une comparaison par�el�ement : T (n) / n, alors T (n) 2 �(n).
En moyenne, il faut parcourir la moiti�e de la liste : T (n) / n2, alors T (n) 2 �(n).
HMPH104, U Montpellier Mod�elisation et simulation en physique 37 / 206
Deuxi�eme exemple : Recherche dichotomique
Donn�ees d'entr�ee : une liste L ordonn�ee de longueur n qui contient l'�el�ement x
R�esultat : la position de x dans L
Algorithme : comparer l'�el�ement m au milieu de la liste avec x. Si m > x, rep�eteravec la moiti�e de la liste �a la gauche de m. Sinon, rep�eter avec la moiti�e �a la droitede m. D�es que la sous-liste restante ne contient qu'un seul �el�ement, terminer.
def binary_search(L, x):
left , right = 0, len(L) # L[left:right] contient x
while right - left > 1: # il y a plus qu'un �el�ement?
mid = (right + left) // 2 # indice du milieu
if L[mid] > x: # x dans la moiti�e �a gauche?
right = mid # r�ep�eter avec L[left:mid]
else: # x dans la moiti�e �a droite?
left = mid # r�ep�eter avec L[mid:right]
return left
Analyse de complexit�e :
log2 n it�erations de la boucle ) T (n) / log2 n, alors T (n) 2 �(log(n)).
HMPH104, U Montpellier Mod�elisation et simulation en physique 38 / 206
Exercice
Le code suivant teste si un nombre n est premier par des essais successives de division.Analyser sa complexit�e : quel est le comportement asymptotique de T (n) en moyenne ?
def is_prime(n):
k = 2
while k**2 <= n:
if n % k == 0:
return False
k += 1
return True
Exercice
Rappel : Le produit matriciel de deux matrices A et B de dimension n� n est
(A �B)ij =nX
k=1
AikBkj :
Analyser la complexit�e d'un algorithme qui calcule le produit matriciel avec cette formule.
HMPH104, U Montpellier Mod�elisation et simulation en physique 39 / 206
Analyse de complexit�e
Exemple hypoth�etique : Supposons qu'un algorithme a besoin d'un temps de calculT (10) = 10 �s si les donn�ees d'entr�ee sont caract�eris�ees par n = 10. Alors en fonction desa complexit�e le temps de calcul sera approximativement, pour n > 10 :
n = 10 n = 20 n = 30 n = 100 n = 1000 n = 10 000
�(1) 10 �s 10 �s 10 �s 10 �s 10 �s 10 �s�(logn) 10 �s 13 �s 15 �s 20 �s 30 �s 40 �s�(pn) 10 �s 14 �s 17 �s 32 �s 100 �s 320 �s
�(n) 10 �s 20 �s 30 �s 100 �s 1 ms 10 ms�(n2) 10 �s 40 �s 90 �s 1 ms 100 ms 10 s�(n3) 10 �s 80 �s 270 �s 10 ms 10 s 3 h�(en) 10 �s 220 ms 1.5 h 1026 ans� 10417 ans� 104326 ans�
(� age de l'univers � 1010 ans)
Ordres de grandeur utiles : Un ordinateur moderne peut e�ectuer � une milliarded'op�erations simples dans un temps \raisonnable" (� secondes { minutes).
Temps pour une million d'op�erations simples = \instantan�ee" (< 1s)
Temps pour une billion d'op�erations simples = \in�ni" (> heures)
HMPH104, U Montpellier Mod�elisation et simulation en physique 40 / 206
Int�egration et d�eriv�ee num�erique
HMPH104, U Montpellier Mod�elisation et simulation en physique 41 / 206
Dans ce chapitre
La m�ethode des trap�ezes
La m�ethode de Simpson et les autres m�ethodes de Newton-Cotes
La m�ethode de Romberg
La quadrature de Gauss
La d�eriv�ee num�erique
HMPH104, U Montpellier Mod�elisation et simulation en physique 42 / 206
L'int�egration num�erique
Probl�eme : On chercheR baf(x) dx pour un f dont on ne conna�t pas la primitive.
L'int�egrale peut etre impropre (f pas d�e�nie en a ou b, ou a = �1 ou b =1)
L'int�egrande peut contenir des discontinuit�es ou des singularit�es
Int�egration multidimensionnelle ! m�ethodes de Monte Carlo, plus tard
D�e�nition de l'int�egrale par les sommes de Riemann :
Z b
a
f(x) dx = limN!1
NXk=1
h fk ; h =b� aN
; fk = f(xk) ; xk = a+ kh
Calcul de l'aire entre la courbe de f(x) et l'axe des x avec N rectangles d'aire h fk.
������������������������������������������������������������
������������������������������������������������������������
���������������������������������������������������������������������������
���������������������������������������������������������������������������
����������������������������������������������������������������������
����������������������������������������������������������������������
��������������������������������������������������
��������������������������������������������������
�������������������������������������������������������
�������������������������������������������������������
����������������������������������������������������������������������
����������������������������������������������������������������������
x x x x xx0 1 2 3 4 5 6
f(x)
xa = x
(Ici : sommes �a droite. Similaire pour les sommes �a gauche ou au milieu.)
HMPH104, U Montpellier Mod�elisation et simulation en physique 43 / 206
M�ethodes de Newton-Cotes : M�ethode des trap�ezes
Mieux : Au lieu des rectangles, utiliser des trap�ezes
�����������������������������������������������������������������
�����������������������������������������������������������������
���������������������������������������������������������������������������
���������������������������������������������������������������������������
���������������������������������������������������������������������������
���������������������������������������������������������������������������
����������������������������������������������������������������������
����������������������������������������������������������������������
������������������������������������������������
������������������������������������������������
����������������������������������������������������������������������
����������������������������������������������������������������������
x
f(x)
x x x x xx0 1 2 3 4 5 6a = x
R�egle des trap�ezes : Z xk+1
xk
f(x) dx � h
2(fk+1 + fk)
alors Z b
a
f(x) dx =N�1Xk=0
Z xk+1
xk
f(x) dx � h f(a)
2+f(b)
2+
N�1Xk=1
fk
!:
HMPH104, U Montpellier Mod�elisation et simulation en physique 44 / 206
M�ethodes de Newton-Cotes : M�ethode des trap�ezes
Fonction simple pour calculer des int�egrales avec la m�ethode des trap�ezes :
def int_trapez(f, a, b, N):
h = (b - a) / N
result = f(a)/2 + f(b)/2 # les points aux bornes
for k in range(1, N): # les points �a l'int�erieur
result += f(a + k*h)
result *= h
return result
Pour la tester :
from math import sin , pi
print("I =", int_trapez(sin , 0, pi, 10000))
HMPH104, U Montpellier Mod�elisation et simulation en physique 45 / 206
Estimation de l'erreur pour la r�egle des trap�ezes
Developpement limit�e de f(x) en xk :
f(x) = fk + (x� xk)f 0k + 1
2(x� xk)2f 00k + : : :
On int�egre entre xk et xk+1 :Z xk+1
xk
f(x) dx
= fk
Z xk+1
xk
dx+ f 0k
Z xk+1
xk
(x� xk) dx+ 1
2f 00k
Z xk+1
xk
(x� xk)2 dx+ : : :
= h fk +1
2h2 f 0k +
1
6h3 f 00k +O(h4)
De meme, pour un d�eveloppement limit�e de f(x) en xk+1,Z xk+1
xk
f(x) dx = h fk+1 � 1
2h2f 0k+1 +
1
6h3 f 00k+1 +O(h4) :
On ajoute ces deux �equations et divise par 2 :Z xk+1
xk
f(x) dx =1
2h (fk + fk+1) +
1
4h2�f 0k � f 0k+1
�+
1
12h3�f 00k + f 00k+1
�+O(h4)
HMPH104, U Montpellier Mod�elisation et simulation en physique 46 / 206
Estimation de l'erreur pour la r�egle des trap�ezesOn prend la somme sur toutes les tranches :Z b
a
f(x) dx =N�1Xk=0
Z xk+1
xk
f(x) dx
=1
2hN�1Xk=0
(fk + fk+1)| {z }r�egle des trap�ezes
+1
4h2�f 0(a)� f 0(b)�+ 1
12h3
N�1Xk=0
�f 00k + f 00k+1
�+O(Nh4)
Tous les termes / h2 se suppriment sauf 14h2(f 0(a)� f 0(b)).
On peut montrer : Pareil pour les termes / h4 ) le O(Nh4) est en fait O(h4).Les termes / h3 correspondent �a la r�egle des trap�ezes pour la fonction h2
6f 00(x) :
1
12h3
N�1Xk=0
�f 00k + f 00k+1
�=
Z b
a
�h2
6f 00(x)
�dx+O(h4) = h2
6
�f 0(b)� f 0(a)�+O(h4) :
En r�esum�e :Z b
a
f(x) dx =1
2hN�1Xk=0
(fk + fk+1)| {z }r�egle des trap�ezes
+1
12h2�f 0(a)� f 0(b)�| {z }
erreur �a premier ordre
+O(h4) :
HMPH104, U Montpellier Mod�elisation et simulation en physique 47 / 206
Estimation de l'erreur pour la r�egle des trap�ezesFormule d'Euler-MacLaurin pour l'erreur de troncature :
� � 1
12h2(f 0(a)� f 0(b)) :
M�ethode d'ordre h : r�esultat exact �a termes d'ordre h2 pr�es.
Comparaison avec erreur d'arrondi : avec une pr�ecision r�elative C � 10�16, leserreurs sont comparables lorsque
1
12h2(f 0(a)� f 0(b)) ' C
Z b
a
f(x) dx
ou avec h = (b� a)=N
N � (b� a)sf 0(a)� f 0(b)12R baf(x) dx
C�1=2 :
Si le facteur est O(1), alors pour N ' 108 it�erations l'erreur de troncature devientmoins important que l'erreur d'arrondi. Pour un nombre raisonnable d'it�erationsc'est l'erreur de troncature qui est dominant.
Complexit�e : pour une pr�ecision de 1 sur n, besoin de �(pn) op�erations simples.
HMPH104, U Montpellier Mod�elisation et simulation en physique 48 / 206
Estimation de l'erreur pour la r�egle des trap�ezes
Fa�con plus pratique d'estimer l'erreur : faire varier le nombre de points.
On d�enomme
I la valeur exacte de l'int�egrale, I =R baf(x) dx
N1 le nombre de tranches de largeur h1 = (b� a)=N1
I1 la valeur obtenue avec la m�ethode des trap�ezes
�1 l'erreur num�erique en premi�ere approximation, I � I1 + �1
Sachant que la m�ethode des trap�ezes est d'ordre h :
I = I1 + �1 +O(h41) = I1 + c h21 +O(h41) ; c = cte:
Si on redouble le nombre de points, N2 = 2N1 et h2 = h1=2 :
I = I2 + c h22 + : : :
alorsI2 � I1 = c (h21 � h22) � 3c h22
) �2 � 1
3(I2 � I1)
HMPH104, U Montpellier Mod�elisation et simulation en physique 49 / 206
M�ethodes de Newton-Cotes : M�ethode de Simpson
���������������������������������������������������������������������������������������������������������������������������������������
���������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������
������������������������������������������������������
������������������������������������������������������
������������������
������������������
���������������������������������������������������������������������������������������������������������������������������������������
���������������������������������������������������������������������������������������������������������������������������������������
�������������
�������������
�������������
�������������
������������������������������������������������������������������������
������������������������������������������������������������������������
���������������������������������������������
���������������������������������������������
x
f(x)
x x x x xx1 2 3 4 5 6x x x x xx0 1 2 3 4 5 60a = x
Meme mieux : approximer la courbe sur chaque tranche pas par une constante (sommede Riemann) ni par une droite (m�ethode des trap�ezes) mais par un polynome de 2ndd�egr�e : M�ethode de Simpson.
HMPH104, U Montpellier Mod�elisation et simulation en physique 50 / 206
M�ethodes de Newton-Cotes : M�ethode de Simpson
Fonction quadratique d�e�nie sur deux tranches cons�ecutives par (xk�1; fk�1), (xk; fk) et(xk+1; fk+1) :
a x2k�1 + b xk�1 + c = fk�1a x2k + b xk + c = fka x2k+1 + b xk+1 + c = fk+1
9=; 3 �equations lin�eaires, 3 inconnues a, b, c
Pour simplicit�e : xk�1 = �h, xk = 0, xk+1 = h :
a h2 � b h+ c =f(�h)c =f(0)
a h2 + b h+ c =f(h)
Solution :
c = f(0) ; b =f(h)� f(�h)
2h; a =
f(h) + f(�h)� 2 f(0)
2h2:
En tant que polynome, ax2 + bx+ c est facile �a int�egrer :Z h
�hax2 + bx+ c dx =
h
3(f(�h) + 4 f(0) + f(h)) :
HMPH104, U Montpellier Mod�elisation et simulation en physique 51 / 206
M�ethodes de Newton-Cotes : M�ethode de Simpson
���������������������������������������������������������������������������������������������������������������������������������������
���������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������
������������������������������������������������������
������������������������������������������������������
������������������
������������������
���������������������������������������������������������������������������������������������������������������������������������������
���������������������������������������������������������������������������������������������������������������������������������������
�������������
�������������
�������������
�������������
������������������������������������������������������������������������
������������������������������������������������������������������������
���������������������������������������������
���������������������������������������������
x
f(x)
x x x x xx1 2 3 4 5 6x x x x xx0 1 2 3 4 5 60a = x
On a trouv�e : Z xk+1
xk�1
f(x) dx � h
3(fk�1 + 4 fk + fk+1)
Alors Z b
a
f(x) dx =X
1�k�N�1k impair
Z xk+1
xk�1
f(x) dx
)Z b
a
f(x) dx � h
3
0BB@f(a) + f(b) + 4
X1�k�N�1k impair
fk + 2X
2�k�N�2k pair
fk
1CCA
R�egle de Simpson.
HMPH104, U Montpellier Mod�elisation et simulation en physique 52 / 206
Estimation de l'erreur de la m�ethode de Simpson
Calcul similare comme pour la m�ethode des trap�ezes : Formule d'Euler-MacLaurin,
� � 1
90h4�f 000(a)� f 000(b)�
M�ethode d'ordre h3 : exacte �a termes d'ordre h4 pr�es.
L'erreur d'arrondi devient comparable �a l'erreur de troncature pour seulementN ' 10 000 points. En g�en�eral un plus grand nombre de points n'augmentera pas lapr�ecision du calcul.
Convergence beaucoup plus vite que la m�ethode des trap�ezes pour des int�egrandesbien comport�ees (d�eriv�ees born�ees. . . )
Complexit�e : pour atteindre une pr�ecision de 1 sur n,
1
n!= � / h4 / 1
N4
alors il faut �evaluer f �a N / n1=4 points ) op�erations simples / n1=4 ) �(n1=4).
HMPH104, U Montpellier Mod�elisation et simulation en physique 53 / 206
M�ethode de Simpson
Exercices
Pour la m�ethode de Simpson, on peut aussi estimer l'erreur en premi�ereapproximation en redoublant le nombre de pas, comme avec la m�ethode des trap�ezes(voir p. 49). Montrer qu'on obtient ainsi l'estimation
�2 � 1
15(I2 � I1) :
R�ealiser une fonction int_simpson(f, a, b, N) similaire �a la fonctionint_trapez du cours, mais qui utilise la m�ethode de Simpson.Calculer
I =
Z �
0
x2 sinx dx
avec la m�ethode des trap�ezes et avec la m�ethode de Simpson pourN = 10; 100; 1000; 2000 et comparer avec le r�esultat exact I = �2 � 4. PourN = 2000, comparer l'estimation de l'erreur obtenue avec la formule ci-dessus (ouplutot avec la formule de p. 49 pour la m�ethode des trap�ezes) avec l'erreur r�eel.Impl�ementer un sch�ema adaptatif pour la m�ethode de Simpson (comme celuipr�esent�e ci-dessous pour la r�egle des trap�ezes).
HMPH104, U Montpellier Mod�elisation et simulation en physique 54 / 206
M�ethodes de Newton-Cotes de degr�e p
G�en�eralisation :
p tranches cons�ecutives entre xk et xk+p d�e�nissent un polynome de degr�e p
On peut alors approximerZ xk+p
xk
f(x) dx �Z xk+p
xk
�cpx
p + cp�1xp�1 + : : :+ c0
�dx
o�u les coe�cients ci sont d�etermin�es par les p+ 1 �equations lin�eaires
cpxpk + : : :+ c0 = fk
: : :
cpxpk+p + : : :+ c0 = fk+p
La primitive du polynome est facile �a calculer analytiquement.
R�esultat : R�egle d'int�egration de Newton-Cotes de degr�e p.
HMPH104, U Montpellier Mod�elisation et simulation en physique 55 / 206
M�ethodes de Newton-Cotes de degr�e p
p = 1 : R�egle des trap�ezes,Z b
a
f(x) dx � h�1
2f(a) + f1 + f2 + f3 + : : :+ fN�1 +
1
2f(b)
�:
p = 2 : R�egle de Simpson,Z b
a
f(x) dx � h�1
3f(a) +
4
3f1 +
2
3f2 +
4
3f3 +
2
3f4 + : : :+
4
3fN�1 +
1
3f(b)
�:
p = 3 : R�egle de Simpson 3=8,Z b
a
f(x) dx � h�3
8f(a) +
9
8f1 +
9
8f2 +
3
4f3 +
9
8f4 +
9
8f5 +
3
4f6 + : : :+
3
8f(b)
�:
p = 4 : R�egle de Boole,Z b
a
f(x) dx � h 14
45f(a) +
64
45f1 +
8
15f2 +
64
45f3 +
28
45f4
+64
45f5 +
8
15f6 +
64
45f7 + : : :+
64
45fN�1 +
14
45f(b)
!:
HMPH104, U Montpellier Mod�elisation et simulation en physique 56 / 206
M�ethodes de Newton-Cotes
La m�ethode de degr�e p donne le r�esultat exact si la fonction f est un polynome dedegr�e � p.(Meme mieux si p pair : m�ethode exacte pour polynomes de d�egr�e � p+ 1 ! plus di�cile �a montrer.)
En pratique : La vitesse de convergence augmente avec p si f \se comporte bien"(est bien approxim�ee par des polynomes ; pas de discontinuit�es et/ou singularit�es)
Pour des int�egrandes discontinues, rapidement uctuantes ou singulaires : r�egle destrap�ezes peut etre le meilleur choix
HMPH104, U Montpellier Mod�elisation et simulation en physique 57 / 206
M�ethode des trap�ezes adaptative
On retourne �a la r�egle des trap�ezes et on rappelle la notation de p. 49 :
I =
Z b
a
f(x) dx
= Ii + �i +O(h4i ) pour un calcul avec Ni sous-intervalles de largeur hi =b� aNi
= hi
f(a)
2+f(b)
2+
Ni�1Xk=1
fk
!+ �i +O(h4i ) ;
On rappelle aussi l'estimation de l'erreur : Si Ni+1 = 2Ni, alors
�i+1 � 1
3(Ii+1 � Ii) :
M�ethode adaptative pour atteindre une pr�ecision donn�ee � :
Calculer I1 avec N1 au choix
Successivement redoubler le nombre de points, Ni+1 = 2Ni, et calculer Ii+1.(On peut r�eutiliser les points d�ej�a calcul�es ! �economiser le temps de calcul.)
Calculer �i+1. Si j�i+1j < �, terminer.
HMPH104, U Montpellier Mod�elisation et simulation en physique 58 / 206
M�ethode des trap�ezes adaptative
Pour r�eutiliser les points d�ej�a calcul�es, on note que
Ii = hi
f(a)
2+f(b)
2+
Ni�1Xk=1
f(a+ khi)
!
= hi
0BB@f(a)2
+f(b)
2+
X1�k�Ni�1k impair
f(a+ khi) +X
2�k�Ni�2k pair
f(a+ khi)
1CCA
Or X2�k�Ni�2
k pair
f(a+ k hi) =
Ni=2�1X`=1
f(a+ 2`hi) =
Ni�1�1X`=1
f(a+ `hi�1)
o�u on a pos�e k = 2` et utilis�e que 2hi = hi�1 et Ni=2 = Ni�1. Alors
Ii =1
2hi�1
0@f(a)
2+f(b)
2+
Ni�1�1X`=1
f(a+ `hi�1)
1A
| {z }Ii�1
+hiX
1�k�Ni�1k impair
f(a+ khi) :
HMPH104, U Montpellier Mod�elisation et simulation en physique 59 / 206
M�ethode des trap�ezes adaptative
Ii =1
2Ii�1 + hi
X1�k�Ni�1k impair
f(a+ khi)
Code :
def int_trapez_ad(f, a, b, delta =1.0E-5, N=10):
oldI = 1.0 E308 # "infini"
h = (b - a) / N
newI = 0.5*f(a) + 0.5*f(b) # calcul de I_1
for k in range(1, N):
newI += f(a + h*k)
newI *= h # fin du calcul de I_1
while abs(oldI - newI)/3 > delta: # calcul de I_(i+1):
h /= 2 # d�edoubler incr�ement
N *= 2 # redoubler nombre de points
oldI = newI
newI *= 0.5 # valeur initiale: I_i / 2
for k in range(1, N, 2): # ajouter les f_k impairs
newI += h * f(a + k*h)
return newI
HMPH104, U Montpellier Mod�elisation et simulation en physique 60 / 206
M�ethode de Romberg
Id�ee : extrapolation de l'approximation en redoublant le nombre de points.On observe : Avec la m�ethode des trap�ezes, on a
�i =1
3(Ii � Ii�1)
alors
I = Ii +1
3(Ii � Ii�1) +O(h4i )
R�esultat exact �a termes d'ordre h4 pr�es, meme si calcul�e avec la r�egle des trap�ezes !
La m�ethode de Romberg se base sur une g�en�eralisation de cette observation.
HMPH104, U Montpellier Mod�elisation et simulation en physique 61 / 206
M�ethode de Romberg
Pour obtenir un r�esultat exact �a termes d'ordre h6 pr�es :
Notation
Ri;1 = Ii ; Ri;2 = Ii +1
3(Ii � Ii�1) = Ii +
1
3(Ri;1 �Ri�1;1)
On vient d'observer que
I = Ri;2 + c2 h4i +O(h6i ) ; c2 = cte:
Vrai aussi pour i� 1 :
I = Ri�1;2 + c2 h4i�1 +O(h6i�1) = Ri�1;2 + 16c2 h
4i +O(h6i )
On �elimine c2 de ces deux �equations :
I = Ri;2 +1
15(Ri;2 �Ri�1;2) +O(h6i )
Pr�ecision O(h5i ), erreur O(h6i ) .
HMPH104, U Montpellier Mod�elisation et simulation en physique 62 / 206
M�ethode de Romberg
En continuant ce processus, on peut atteindre une pr�ecision quelconque en utilisantseulement la m�ethode des trap�ezes. En g�en�erale :
Ri;m = r�esultat apr�es i� 1 redoublements, pr�ecision O(h2m�1) (erreur O(h2m))
I = Ri;m + cm h2mi +O(h2m+2i ) ; cm = cte:
I = Ri�1;m + 4mcm h2mi +O(h2m+2i )
Apr�es �elimination de cm :
I = Ri;m +1
4m � 1(Ri;m �Ri�1;m)| {z }
Ri;m+1
+O(h2m+2i )
Estimation de l'erreur :
j�ij .���ci�1h2(i�1)i
��� = 1
4i�1 � 1jRi;i�1 �Ri�1;i�1j :
HMPH104, U Montpellier Mod�elisation et simulation en physique 63 / 206
M�ethode de Romberg
En pratique : Algorithme
Calculer I1 = R1;1 avec la m�ethode des trap�ezes : pr�ecision O(h1).Calculer I2 = R2;1 avec la m�ethode des trap�ezes et poser
R2;2 = R2;1 +1
3(R2;1 �R1;1) ; pr�ecision O(h32) :
Calculer I3 = R3;1 avec la m�ethode des trap�ezes. Avec R3;1 et R2;1, calculer R3;2.Avec R3;2 et R2;2, calculer R3;3 : pr�ecision O(h53).It�erer : �A la i-�eme it�eration, calculer Ii = Ri;1 avec la r�egle des trap�ezes et lesautres Ri;m avec la formule de p. 63, jusqu'�a Ri;i : pr�ecision O(h2i�1i ).
Terminer lorsque l'erreur, estim�ee par
j�ij . 1
4i�1 � 1jRi;i�1 �Ri�1;i�1j ;
devient inf�erieur �a la pr�ecision d�esir�ee.
HMPH104, U Montpellier Mod�elisation et simulation en physique 64 / 206
M�ethode de Romberg
Sch�ema :I1 = R1;1
&I2 = R2;1 ! R2;2
& &I3 = R3;1 ! R3;2 ! R3;3
& & &I4 = R4;1 ! R4;2 ! R4;3 ! R4;4
etc.
\Extrapolation de Richardson"
HMPH104, U Montpellier Mod�elisation et simulation en physique 65 / 206
M�ethode de Romberg
from trapezium import int_trapez
def int_romberg(f, a, b, delta =1.0E-5, N=2):
eps = 1.0 E308 # erreur
i = 1 # it�eration
R = [int_trapez(f, a, b, N)] # R = liste des R_(i,m)
while eps > delta:
i += 1
N *= 2
R_old = R[:] # R_old = liste des R_(i-1,m)
R += [0.0] # allonger R par 1 �el�ement
R[0] = int_trapez(f, a, b, N) # calculer R_(i,1) ...
for k in range(i-1): # ... et les autres R_(i,m)
R[k+1] = R[k] + 1/(4**(k+1) - 1) * (R[k] - R_old[k])
eps = 1/(4**(i-1) - 1) * abs(R[i-2] - R_old[i-2])
return R[i-1], eps # renvoyer R_(i,i) et l'erreur
Ce code ne r�eutilise pas les points d�ej�a calcul�es. Optimisation ! exercices.
HMPH104, U Montpellier Mod�elisation et simulation en physique 66 / 206
M�ethode de Romberg
Exercices
Optimiser le code pour la m�ethode de Romberg, de la sorte que les points d�ej�acalcul�es sont r�eutilis�es �a chaque it�eration (comme avec la m�ethode adaptative).Calculez Z 2
0
cos(x)3 dx
�a une pr�ecision de 13 d�ecimales avec la m�ethode des trap�ezes adaptative et avec lam�ethode de Romberg. Comparez le temps de calcul.Calculez l'int�egrale d'exercice 1.3.3,
I =
Z 1
�1
p1� x2 dx
par la m�ethode de Romberg. Avec le r�esultat num�erique et la valeur analytique de I,calculez l'erreur num�erique et comparez avec l'estimation donn�e par le programme.Qu'est-ce qu'on observe ? Quelle est l'explication ?
HMPH104, U Montpellier Mod�elisation et simulation en physique 67 / 206
Quadrature de Gauss
Rappels :
Toutes les m�ethodes qu'on a discut�e jusqu'au pr�esent sont bas�ees sur unesubdivision de l'intervalle d'int�egration en N tranches de meme largeur h.
En particulier, c'est le cas pour la m�ethode de Newton-Cotes de degr�e p. Cettem�ethode n�ecessite que N soit un multiple de p.
La m�ethode de Newton-Cotes de degr�e p donne le r�esultat exact si l'int�egrande estun polynome de degr�e � p. En ce cas, N = p tranches sont su�sants.
Ces m�ethodes n�ecessitent l'�evaluation de f �a N + 1 points (noeuds).
M�ethode de Gauss : une m�ethode qui donne le r�esultat exact, avec N noeuds, sil'int�egrande est un polynome de degr�e � 2N � 1. Les noeuds ne seront pas �equidistants.
HMPH104, U Montpellier Mod�elisation et simulation en physique 68 / 206
Quadrature de Gauss
R�egle d'int�egration g�en�erale :
Z b
a
f(x) dx �NXk=0
wkfk
fk = f(xk), avec les noeuds xk 2 [a; b], pas forcement �equidistants, pas forcementx0 = a ou xN = b
fwkg = poids
Exemple : R�egle des trap�ezes, xk = a+ kh et poids w0 = wN = h2, w1�k�N�1 = h
Exemple : R�egle de Simpson, xk = a+ kh et w0 = wN = h3, autres wk = 4h
3ou 2h
3
HMPH104, U Montpellier Mod�elisation et simulation en physique 69 / 206
Quadrature de GaussPour trouver des poids wk pour N noeuds xk (1 � k � N) pas �equidistants, onconsid�ere les polynomes d'interpolation de degr�e N � 1 suivants :
�(k)(x) =Y
m=1:::Nm6=k
x� xmxk � xm =
x� x1xk � x1 � � �
x� xk�1xk � xk�1 �
x� xk+1xk � xk+1 � � �
x� xNxk � xN
Propri�et�e :
�(k)(xm) = �mk ��
1 ; m = k0 ; m 6= k
On d�e�nit
�(x) =NXk=1
f(xk)�(k)(x)
Propri�et�es :
Polynome de degr�e N � 1 (combinaison lin�eaire des polynomes de degr�e N � 1)
�(xm) = f(xm) car
�(xm) =NXk=1
f(xk)�(k)(xm) =NXk=1
f(xk)�km = f(xm)
Unique car N coe�cients determin�es par N contraintesHMPH104, U Montpellier Mod�elisation et simulation en physique 70 / 206
Quadrature de Gauss
En posantZ b
a
f(x) dx �Z b
a
�(x) dx =
Z b
a
NXk=1
f(xk)�(k)(x) dx =NXk=1
f(xk)
Z b
a
�(k)(x) dx
on note que
wk =
Z b
a
�(k)(x) dx :
On a identi��e les poids f!kg pour un ensemble fxkg de noeuds donn�eMalheureusement �(k)(x) n'est pas facile �a int�egrer analytiquement (polynome |mais d�e�ni par 2N�1 termes ! Trop pour N & 30).
Heureusement il faut les int�egrer seulement une fois pour un seul choix de a et b.Apres on peut les r�eutiliser pour int�egrer une fonction f(x) quelconque sur unintervalle [a; b] quelconque.
HMPH104, U Montpellier Mod�elisation et simulation en physique 71 / 206
Quadrature de Gauss
Pour l'intervalle [�1; 1] d'int�egration et un ensemble de N noeudsx1 : : : xN 2 [�1; 1] : Calculer une seule fois les poids
wk =
Z 1
�1�(k)(x) dx pour k = 1 : : : N
Pour un autre domaine d'int�egration [a; b] : Red�e�nition des noeuds,
x0k =1
2(b� a)xk + 1
2(b+ a) (transformation a�ne)
et des poids,
w0k =1
2(b� a)wk :
Ainsi on peut calculer pour un f(x) et [a; b] quelconque
Z b
a
f(x) dx �NXk=1
w0kf(x0k) :
HMPH104, U Montpellier Mod�elisation et simulation en physique 72 / 206
Quadrature de Gauss
Comment choisir les xk ?
Pour arriver �a l'ordre maximale, tel que le r�esultat est exact si f(x) est un polynome dedegr�e � 2N � 1 :
xk = z�eros du N -�eme polynome de Legendre PN (x)
wk =2
1� x2�dPNdx
��2�����x=xk
(Pas de demonstration ici.) Voir aussi TD 1.1.3 et 1.1.4.
Quadrature de Gauss-Legendre.
D'autres choix de xk et wk peuvent donner des r�esultats exacts pour
f(x) =W (x) � polynome
() r�esultats optimis�es si f est bien approxim�ee par une expression de cette forme) avec
W (x) = 1p1�x2
(Gauss-Chebychev), W (x) = x�e�x (Gauss-Laguerre), W (x) = e�x2
(Gauss-Hermite) etc.
HMPH104, U Montpellier Mod�elisation et simulation en physique 73 / 206
Quadrature de Gauss
Poids et noeuds pour la m�ethode de Gauss-Legendre :
N = 10 N = 100
(Figures par M. Newman)
HMPH104, U Montpellier Mod�elisation et simulation en physique 74 / 206
Quadrature de Gauss
def int_gauss(f, points , weights):
result = 0.0
for x, w in zip(points , weights):
result += w * f(x)
return result
Le �chier gaussxw.py contient une fonction gaussxw(N) pour calculer les noeuds etpoids de la quadrature de Gauss-Legendre pour un N donn�e. Exemple d'usage :
from gaussxw import gaussxw
N = 100
x, w = gaussxw(N)
# adapter x -> x' et w -> w' �a l'intervalle [a, b]:
a, b = 0, 1
xp = 0.5*(b - a)*x + 0.5*(b + a)
wp = 0.5*(b - a)*w
# calculer l'int�egrale d'une fonction sur [a, b]:
from math import atanh
print("R�esultat:", int_gauss(atanh , xp , wp))
HMPH104, U Montpellier Mod�elisation et simulation en physique 75 / 206
Quadrature de Gauss
Forces :
Convergence excellente pour des int�egrandes bien approxim�ees par un polynome (ouune fonction du type W (x)� polynome)
Tr�es peu d'�evaluations de fonction n�ecessaires
M�ethode ouverte : pas besoin d'�evaluer la fonction aux limites a et b
Faiblesses :
Convergence mauvaise pour des int�egrandes pas r�egulaires
Le calcul des poids et noeuds prend du temps (mais do�t etre e�ectu�e qu'une fois)
Impossible de r�eutiliser les points d�ej�a calcul�es lorsqu'on augmente N
HMPH104, U Montpellier Mod�elisation et simulation en physique 76 / 206
Quadrature de Gauss
Exercices
Selon la th�eorie de Debye, la capacit�e thermique d'un solide est donn�ee par la formule
CV = 9nV kB
�T
�D
�3 Z �D=T
0
x4 ex
(ex � 1)2dx
o�u V est le volume, n la densit�e num�erique, kB = 1:38 � 10�23 JK�1 la constante deBoltzmann, T la temp�erature et �D la temp�erature de Debye.
�Ecrire une fonction CV(T) qui calcule CV en fonction de la temp�erature, pour unbloc de (10 cm)3 d'aluminium (n = 6:022 � 1028 m�3, �D = 428 K). Utiliser laquadrature de Gauss avec N = 50 noeuds.Tracer CV (T ) entre T = 5 K et T = 500 K.
HMPH104, U Montpellier Mod�elisation et simulation en physique 77 / 206
Comparaison des m�ethodes d'int�egration
M�ethode des trap�ezes :
Facile �a impl�ementer
Pas tr�es pr�ecise
Bon choix pour les int�egrandes irr�egulaires
M�ethode de Simpson :
Facile �a impl�ementer
Plutot pr�ecise
Mauvais choix pour les int�egrandes irr�egulaires
M�ethode de Romberg :
Impl�ementation plus compliqu�ee
Tr�es pr�ecise
Mauvais choix pour les int�egrandes irr�egulaires
M�ethode de Gauss :
Impl�ementation n�ecessite calcul des noeuds et poids
Tr�es pr�ecise
Mauvais choix pour les int�egrandes irr�egulaires
HMPH104, U Montpellier Mod�elisation et simulation en physique 78 / 206
Int�egrales impropres
Pour calculer une int�egrale impropre, Z 1
0
f(x) dx
la proc�edure standard est de faire un changement de variable :
y =x
1 + x; x =
y
1� y :
Alors
dx =dy
(1� y)2 ;Z 1
0
f(x) dx =
Z 1
0
1
(1� y)2 f�
y
1� y�
dy :
Pour calculerR1af(x) dx : calculer
R10f(x) dx et soustraire
R a0f(x) dx.
Pour calculerR1�1 f(x) dx : calculer la somme de
R10f(x) dx et de
R 0�1 f(x) dx.
Selon le probl�eme d'autres changements de variable peuvent donner de meilleursr�esultats, par exemple,
y =x�
� + x�avec des constantes �; � :
HMPH104, U Montpellier Mod�elisation et simulation en physique 79 / 206
La d�eriv�ee num�erique
Probl�eme : Pour une fonction f(x) (qu'on peut �evaluer num�eriquement), calculer lad�eriv�ee f 0(x).Solution pr�ef�er�ee si possible : calculer f 0 analytiquement et l'�evaluer num�eriquement.
f 0 peut etre calcul�e analytiquement pour les fonctions �el�ementaires.
Techniques de base pour le calcul num�erique de la d�eriv�ee plutot impr�ecises
Mais souvent l'expression de f(x) n'est pas connue : f d�e�nie implicitement, comme unesolution d'�equation di��erentielle / alg�ebrique. Dans ce cas on a besoin de calculer f 0
d'une mani�ere compl�etement num�erique.
HMPH104, U Montpellier Mod�elisation et simulation en physique 80 / 206
D�eriv�ees : Di��erences progressives et r�egressives
D�e�nition de la d�eriv�ee :
f 0(x) = limh! 0
f(x+ h)� f(x)h
:
Approximation
f(x) � f(x+ h)� f(x)h
pour h su�samment petit : di��erence progressive.
�Equivalent :
f(x) � f(x)� f(x� h)h
;
pour h su�samment petit : di��erence r�egressive.
x−h x x+h
regressiveprogressive
HMPH104, U Montpellier Mod�elisation et simulation en physique 81 / 206
Erreur de la d�eriv�ee
Erreur pour le calcul de la d�eriv�ee en utilisant la di��erence progressive :
f(x+ h) = f(x) + hf 0(x) +1
2h2f 00(x) + : : : (d�eveloppement limit�e)
) f 0(x) =f(x+ h)� f(x)
h� 1
2h f 00(x) + : : :
Erreur O(h).Probl�eme : si on choisit h petit, on peut faire baisser l'erreur de troncature, mais enmeme temps �ca va faire monter l'erreur d'arrondi.
Raison : on soustrait f(x) de f(x+ h), deux quantit�es tr�es proches ! voir chap�tre 2 etTD1.3. Exemple extreme : f(x) = x2, d�eriv�ee �a x = 1 avec h = 10�16 :
h = 1.0E-16
print (((1.0+h)**2 - 1.0**2) / h)
a�che 0:0 alors que le vrai r�esultat est 2 !
Choix optimal avec cette m�ethode si f(x) = O(1) : h � 10�8, pas tr�es pr�ecis. Pareil pourdi��erence r�egressive.
HMPH104, U Montpellier Mod�elisation et simulation en physique 82 / 206
D�eriv�ee centrale
Moyenne des di��erences progressives et r�egressives avec pas h=2 :
f 0(x) � f�x+ h
2
�� f �x� h2
�h
D�eveloppement limit�e :
f
�x+
h
2
�= f(x) +
1
2hf 0(x) +
1
8h2f 00(x) +
1
48h3f 000(x) + : : :
f
�x� h
2
�= f(x)� 1
2hf 0(x) +
1
8h2f 00(x)� 1
48h3f 000(x) + : : :
On soustrait ces deux �equations :
f 0(x) =f�x+ h
2
�� f �x� h2
�h
� 1
24h2f 000(x) + : : :
Mieux que la di��erence progressive ou r�egressive : erreur O(h2).Choix optimal si f(x) = O(1) : h � 10�5, erreur � � 10�10.
HMPH104, U Montpellier Mod�elisation et simulation en physique 83 / 206
D�eriv�ee seconde
D�eriv�ee centrale :
f 00(x) � f 0�x+ h
2
�� f 0 �x� h2
�h
Avec
f 0�x+
h
2
�� f(x+ h
2+ h
2)� f �x+ h
2� h
2
�h
=f(x+ h)� f(x)
h
et
f 0�x� h
2
�� f(x)� f(x� h)
h
on trouve
f 00(x) � f(x+ h)� 2f(x) + f(x� h)h2
:
Erreur :
� = � 1
12h2 f 0000(x) + : : : (! exercices)
Choix optimal si f(x) = O(1) : h � 10�4, erreur � � 10�8.
HMPH104, U Montpellier Mod�elisation et simulation en physique 84 / 206
Exercices
Montrer que
f 00(x) =f(x+ h)� 2f(x) + f(x� h)
h2� 1
12h2 f 0000(x) +O(h3) :
R�ealiser une fonction f(x) qui retourne 1 + 12tanh(2x) (se servir de la fonction
math.tanh). Calculer �a la main l'expression analytique de f 0(x) et tracez-la,ensemble avec la d�eriv�ee num�erique de f(x) calcul�ee avec la d�eriv�ee centrale, surl'intervalle [�2; 2].
HMPH104, U Montpellier Mod�elisation et simulation en physique 85 / 206
M�ethodes de Monte Carlo : Int�egration,�echantillonnage, optimisation
HMPH104, U Montpellier Mod�elisation et simulation en physique 86 / 206
Dans ce chapitre
Int�egration Monte Carlo
�Echantillonnage avec Monte Carlo par cha�nes de Markov
Optimisation avec le recuit simul�e
HMPH104, U Montpellier Mod�elisation et simulation en physique 87 / 206
Les m�ethodes de Monte Carlo
Les m�ethodes de Monte Carlo (MC) sont des algorithmes non d�eterministes qui utilisentdes processus al�eatoires pour obtenir des approximations num�eriques. Pour certainsclasses de probl�emes ils sont beaucoup plus e�cients que ses �equivalents d�eterministes.On se sert des m�ethodes de MC pour trois classes de probl�emes (entre autres) :
Int�egration : calculer des int�egrales multidimensionnelles, int�egrandes pas r�eguli�eres,conditions aux limites compliqu�ees
�Echantillonnage : g�en�erer des �echantillons des lois de probabilit�e compliqu�ees enplusieurs dimensions
Optimisation : trouver l'optimum global d'une fonction de plusieurs variables avecun grand nombre d'optima locaux.
Les m�ethodes de MC comptent parmi les outils les plus importants de la physiquenum�erique contemporaine. Autres applications : ing�enierie, biologie, sciences �nanci�eres,math�ematique. . .
HMPH104, U Montpellier Mod�elisation et simulation en physique 88 / 206
La g�en�eration des nombres pseudoal�eatoires
Les m�ethodes de MC ont besoin d'un grand nombre des nombres al�eatoires.Probl�eme :
Il est impossible de g�en�erer des vrais nombres al�eatoirespar un algorithme d�eterministe.
Un ordinateur mis dans le meme �etat de memoire plusieurs fois va chaque fois produire lememe r�esultat.Solutions :
soit qu'on se sert d'un g�en�erateur physique de nombres al�eatoires, dont lem�ecanisme repose sur des e�ets de la m�ecanique quantique (vrais nombresal�eatoires : m�ethode lente, pas r�eproductible)
soit qu'on utilise un algorithme d�eterministe pour produire des suites de nombresavec approximativement les memes caract�eristiques stochastiques qu'une vraie suiteal�eatoire (nombres pseudoal�eatoires).
Nous nous servirons des nombres pseudoal�eatoires fournis par la biblioth�eque numpy :
numpy.random.random(n) produit n nombres pseudoal�eatoire dans [0:0; 1:0)(distribution uniforme)
numpy.random.choice(a) renvoie un des �el�ements de l'array a choisi au hasard.
HMPH104, U Montpellier Mod�elisation et simulation en physique 89 / 206
La loi des grands nombres
Soit Xi une suite des variables al�eatoires ind�ependentes ob�eissant la meme distribution,avec l'esp�erance hXi. La loi des grands nombres dit que le moyen sur n des Xi convergevers hXi quand n ! 1 avec probabilit�e 1 :
Pr
�lim
n!1X1 + : : :+Xn
n= hXi
�= 1 :
En pratique : Pour d�eterminer hXi il faut g�en�erer au hasard un nombre su�sant de Xi
et prendre leur moyen.
Plus pr�ecisement, la di��erence X1+:::+Xnn
� hXi tend vers z�ero comme 1pnen moyenne
(car les variances des variables al�eatoires ind�ependantes sont additives).
HMPH104, U Montpellier Mod�elisation et simulation en physique 90 / 206
Int�egration MC : int�egration en d� 1 dimensions
Le �eau de la dimension (\curse of dimensionality") :
Int�egration num�erique dans d dimensions d'une fonction f : D ! R d�e�nie sur D � Rd,
I =
ZD
f(x) ddx :
Convergence des m�ethodes d�eterministes (voir chapitre 3) tr�es lente si d est grand.Par exemple, en d = 100, il faut au moins N100 �evaluations de f pour unesous-division du domaine d'int�egration en N morceaux par dimension. D�ej�a pourN = 2 besoin de 2100 � 1030 �evaluations !
En physique, dimension de l'espace des phases = nombre de degr�es de libert�e dusyst�eme, souvent grande
Solution : algorithmes stochastiques de Monte Carlo dont la convergence ne dependpas directement de la dimension du syst�eme mais suit la loi de 1p
N.
HMPH104, U Montpellier Mod�elisation et simulation en physique 91 / 206
Int�egration MC : int�egrandes di�cilesConsid�erons l'int�egrale
I =
Z 1
0
sin2�
1
x(1� x)�dx :
Int�egrande continue et born�ee ) I existe (I = 0:61515 : : :). R�esultats pour � . 10�3 :
trap�ezes Simpson Gauss-Legendre
0:6158 0:7207 0:615 (?)�0:0001 �0:0002 �0:001 (?)
Meilleur r�esultat par m�ethode de Monte Carlo.HMPH104, U Montpellier Mod�elisation et simulation en physique 92 / 206
L'int�egration MC
Calculons I =R 10f(x) dx avec une m�ethode stochastique.
M�ethode naive :
On cr�ee N pairs (xi; yi) de nombres al�eatoires uniformement distribu�es sur(0; 1)� (0; 1).
On compte le nombre K de points avec f(xi) � yi.Si N est grand, alors la fraction des points qui tombent en dessous du graphe de fcorrespond �a la fraction de l'aire en dessous du graphe de f .
Alors I � K=N .
N = 1000000
K = 0
for i in range(N):
if f(np.random.random ()) > np.random.random ():
K += 1
I = K/N
HMPH104, U Montpellier Mod�elisation et simulation en physique 93 / 206
L'int�egration MCM�ethode am�elior�ee :
D�e�nition de la moyenne de f entre a et b :
hfi = 1
b� aZ b
a
f(x) dx
On estime hfi par
hfi � 1
N
NXi=1
f(xi)
avec les xi uniformement distribu�ees sur [a; b]. Alors
I � b� aN
NXi=1
f(xi) :
N = 10000000
favg = 0.0
for i in range(N):
favg += f(np.random.random ())
I = favg/N
R�esultat I = 0:6151� 0:0002.HMPH104, U Montpellier Mod�elisation et simulation en physique 94 / 206
L'int�egration MC
L'erreur r�elative pour les deux m�ethodes est de l'ordre 1=pN , mais le coe�cient est
plus petit pour la m�ethode am�elior�ee (et elle coute moins cher en temps de calcul).
Des m�ethodes d'int�egration de MC plus sophistiqu�ees existent pour des int�egrandestr�es in�egales (�echantillonnage pr�ef�erentiel avec des estimateurs biais�es, \importancesampling"). Erreur toujoirs O(1=pN).
Comparaison : l'erreur pour la m�ethode des trap�ezes �etait de l'ordre 1=N2, pour lam�ethode de Simpson de l'ordre 1=N4
Il faut pr�ef�erer les m�ethodes d�eterministes si possible (par exemple, pour desint�egrales simples dans . 3 dimensons).
En revanche, en d� 1 dimensions ou pour les int�egrandes mal comport�ees lesm�ethodes de MC peuvent etre les seuls outils utilisables malgr�e leur mauvaise vitessede convergence.
HMPH104, U Montpellier Mod�elisation et simulation en physique 95 / 206
L'int�egration MC
Exercices
R�ealiser un programme qui calcule le volume de la boule de rayon 1 dans d dimensions par
une int�egration MC. Comparer avec les valeurs exactes 4�3, 8�2
15et �5
120pour d = 3; 5; 10.
HMPH104, U Montpellier Mod�elisation et simulation en physique 96 / 206
�Echantillonnage
Rappel :
Une loi de probabilit�e P (x) sur un espace mesurable M est une applicationP : M ! [0; 1[ tel que
PRMP (x) = 1 (+ conditions techniques).
La probabilit�e d'une variable al�eatoire X distribu�ee selon P de prendre une valeurdans E �M est
Pr (X 2 E) =XZ
E
P (x) :
L'esp�erance hfi d'une fonction f(x) sur M selon la loi de probabilit�e P est
hfi =XZ
M
f(x)P (x) :
HMPH104, U Montpellier Mod�elisation et simulation en physique 97 / 206
�Echantillonnage
Examples des lois de probabilit�e en physique :
La densit�e de probabilit�eP (x) = j (x)j2
avec (x) une fonction d'onde en m�ecanique quantique.
La distribution de Boltzmann,
P (x) =1
Ze�E(x)kBT
de la physique statistique, qui d�ecrit un ensemble canonique en �equilibre thermique.T = temp�erature, kB = constante de Boltzmann, Z = normalisation,P (x) = probabilit�e d'etre dans l'�etat microscopique x avec �energie E(x).
P (xjd) = la probabilit�e post�erieure Bayesienne qu'un certain mod�ele avec certainsvaleurs de param�etres x d�ecrit les donn�ees exp�erimentales d.
P (xjd) � P (djx)P (x)P (djx) : qualit�e d'ajustement, P (x) : probabilit�e a priori = biais th�eorique.
HMPH104, U Montpellier Mod�elisation et simulation en physique 98 / 206
�Echantillonnage
Probl�eme : obtenir un �echantillon d'une loi de probabilit�e P (x) sur M
= une suite �nie de N variables al�eatoires distribu�ees selon P (x)
Motivations :
Avec un �echantillon de taille N pour N su�samment grand, on peut analyser lespropri�et�es de la loi de probabilit�e P (x) num�eriquement. Par exemple :
Calcul num�erique des esp�erances $ des observables physiques
Calcul num�erique des correlations
Marginalisation (int�egration/sommation d'un sous-ensemble des composantes de x)
HMPH104, U Montpellier Mod�elisation et simulation en physique 99 / 206
�EchantillonnageOn dispose d'un g�en�erateur de variables al�eatoires uniformement distribu�ees sur [0; 1).
Comment en obtenir un �echantillon de P (x) ?
M�ethode analytique : M�ethode de la transform�ee inverse en une dimension.
Soit y une variable distribu�ee uniformement sur [0; 1). On cherche x(y) tel que x estdistribu�e selon P (x). Or selon le th�eor�eme de la r�eciproque de la fonction de repartition :
P (x) dx = dy )Z x(y)
�1P (x0) dx0 =
Z y
0
dy0 = y
alors il faut calculer l'int�egrale �a gauche et r�esoudre l'�equation selon x(y).
Exemple : P (x) = 12sin(x) sur [0; �).
y =
Z x
0
1
2sin(x0) dx0 =
1
2(1� cos(x)) ) x = arccos(1� 2y)
Faisable seulement pour les P (x) dont on connait la primitive et qui permettent deresoudre l'�equation r�esultante. M�ethode tr�es limit�ee. D'autres m�ethodes analytiquesexistent pour des P (x) sp�eciales (p.ex. algorithme de Box-Muller pour la loi normale).HMPH104, U Montpellier Mod�elisation et simulation en physique 100 / 206
�Echantillonnage MC
M�ethode de MC : M�ethode de rejet.
On gen�ere des variables al�eatoires xi uniformement distribu�ees sur un domaine D de Mqui inclut le support de P . On les garde avec probabilit�e P (xi)=c (o�u c � maxP est uneconstante), on rej�ete les autres.
import numpy as np
def rejection_sampling(P, c, Dmin , Dmax):
while True:
# g�en�erer x uniformement distribu�e sur [Dmin , Dmax):
x = (Dmax - Dmin) * np.random.random () + Dmin
# accepter avec probabilit�e P(x) / c; sinon r�ep�eter
if P(x) / c > np.random.random ():
return x
Plutot ine�cace pour des P (x) �etroitement concentr�ees (il faut g�en�erer beaucoup depoints juste pour rejeter la plupart apr�es).
HMPH104, U Montpellier Mod�elisation et simulation en physique 101 / 206
�Echantillonnage MC : Cha�nes de Markov
Monte-Carlo par cha�nes de Markov
(MCMC, \Markov Chain Monte Carlo")
Id�ee : Une fois trouv�e la r�egion dans M ou la distribution P est localis�e, rester proche decette r�egion et l'explorer avec une marche al�eatoire : on construit une cha�ne de Markov= une suite des pas al�eatoires.
Algorithme de Metropolis-Hastings :
Partir avec x1 2M choisi al�eatoirement.
Choisir al�eatoirement un point y 2M proche de xn.
Si P (y) � P (xn), accepter y comme prochain point dans la cha�ne.
Si P (y) < P (xn), accepter y avec la probabilit�e P (y)=P (xn).
Si y a �et�e accept�e, repeter avec xn+1 = y. Sinon, repeter avec xn+1 = xn.
On peut montrer : Les fxng1�n�N forment un �echantillon de P (x) pour des grands N .
HMPH104, U Montpellier Mod�elisation et simulation en physique 102 / 206
�Echantillonnage MC : Cha�nes de Markov
HMPH104, U Montpellier Mod�elisation et simulation en physique 103 / 206
�Echantillonnage MC : Cha�nes de Markov
HMPH104, U Montpellier Mod�elisation et simulation en physique 103 / 206
�Echantillonnage MC : Cha�nes de Markov
HMPH104, U Montpellier Mod�elisation et simulation en physique 103 / 206
�Echantillonnage MC : Cha�nes de Markov
HMPH104, U Montpellier Mod�elisation et simulation en physique 103 / 206
�Echantillonnage MC : Cha�nes de Markov
HMPH104, U Montpellier Mod�elisation et simulation en physique 103 / 206
�Echantillonnage MC : Cha�nes de Markov
HMPH104, U Montpellier Mod�elisation et simulation en physique 103 / 206
�Echantillonnage MC : Cha�nes de Markov
Remarques :
Le d�eroulement de l'algorithme ne depend que des proportions des probabilit�es. Alorson peut l'utiliser meme si la normalisation absolue de P (x) est inconnue (situationcommune en pratique).
L'algorithme satisfait la condition du bilan d�etail�ee : Soit P (x) la probabilit�e d'etredans l'�etat x et W (x;x0) la probabilit�e de transition entre x et x0, alors
P (x)W (x;x0) = P (x0)W (x0;x) :
Cette condition, ensemble avec certains autres conditions techniques, garantie laconvergence de la distribution des fxng vers P (x).En g�en�eral la cha�ne va d�emarrer dans une r�egion �a basse probabilit�e. Les premiersit�erations, avant de trouver une r�egion �a haute probabilit�e qui est r�epr�esentativepour la distribution de limite, sont donc �a jeter. On parle du \burn-in" (rodage) dela cha�ne.
Si la distribution P (x) poss�ede plusieurs � �les � isol�ees de haute probabilit�e, il peutetre di�cile de faire une transition entre eux. Dans ce cas il vaut mieux d�emarrerplusieurs cha�nes aux points de d�emarrage al�eatoires.
HMPH104, U Montpellier Mod�elisation et simulation en physique 104 / 206
Application : Le mod�ele d'Ising
Le mod�ele d'Ising est tr�es important dans la physique statistique. Il peut d�ecrire, parexemple, un solide ferromagn�etique repr�esent�e par un r�eseau de N spins.
Tout spin est dans un des deux �etats j+i ou j�i : 2N possibles con�gurations.
L'�energie d'une telle con�guration d�epend des orientations des spins par rapport �aleurs premiers voisins dans le r�eseau. Le hamiltonien est
H = �JXhiji
SiSj :
Ici Si = �1 pour le spin i dans l'�etat j�i, la somme inclut tous pairs hiji de voisinsdans le reseau, et J > 0 est une constante dite l'�energie d'�echange.
La probabilit�e du syst�eme d'etre dans une con�guration � particuli�ere est donn�ee parla loi de Boltzmann :
P (�) =1
Ze�H(�)kBT
ou T est la temp�erature, kB est la constante de Boltzmann, et la normalisation Zest la fonction de partition
Z =X�
e�H(�)kBT :
HMPH104, U Montpellier Mod�elisation et simulation en physique 105 / 206
Le mod�ele d'IsingLa magn�etisation d'une con�guration � de N spins Si est
M = �Xi
Si (� = moment magn�etique par spin, constante)
La magn�etisation moyenne est l'esp�erance de la magn�etisation :
hMi =X�
M(�)P (�) =1
Z
X�
M(�)e�H(�)kBT
La susceptibilit�e magn�etique est li�ee aux uctuations de M :
� =N
kBT
�hM2i � hMi2�La capacit�e thermique est li�ee aux uctuations de l'�energie :
CV =1
NkBT 2
�hH2i � hHi2�On s'int�eresse �a l'�energie moyenne et la magnetisation moyenne, ainsi qu'�a lasusceptibilit�e et la capacit�e thermique, en fonction de la temp�erature et du couplage J .Prenons un r�eseau 2-dimensionnel comme exemple.HMPH104, U Montpellier Mod�elisation et simulation en physique 106 / 206
Le mod�ele d'Ising 2d
Reseau 2d des spins.
L’energie de chaque
depend de son orientationpar rapport a ses
spin
premiers voisins.
H = �JLXi=1
LXj=1
(SijSi+1;j + SijSi;j+1)
On d�e�nit SL+1;j � S1;j et Si;L+1 � Si;1 (conditions aux limites p�eriodiques).
Probl�eme : Le nombre de con�gurations cro�t tr�es vite avec la taille du syst�eme. Pour unr�eseau de N = L�L = 10� 10 spins on a d�ej�a 2N = 2100 � 1030 con�gurations, donc ilest impossible d'�evaluer les sommes pour Z, hMi, hHi, hM2i ou hH2i.Solution : On calcule les observables approximativement en utilisant un �echantillon de ladistribution de Boltzmann, obtenu avec la m�ethode MCMC.
HMPH104, U Montpellier Mod�elisation et simulation en physique 107 / 206
�Echantillonnage Monte Carlo pour le mod�ele d'Ising 2d
Algorithme de Metropolis pour le mod�ele d'Ising :
D�emarrer avec une con�guration soit al�eatoire (\d�emarrage �a chaud") soit ordonn�ee(\d�emarrage �a froid").
Choisir un spin par hasard et �evaluer �E = E0 � E, la di��erence d'�energies si lespin �etait chang�e.
Si �E < 0, changer le spin imp�erativement. Si �E > 0, changer le spin avec laprobabilit�e
1Ze� E0
kBT
1Ze� EkBT
= e� �EkBT
R�ep�eter jusqu'�a l'arriv�ee �a l'�equilibre thermique (\burn-in").
Ensuite, r�ep�eter autant de fois qu'il faut pour obtenir un �echantillon de tailleraisonnable, en gardant en m�emoire les valeurs des observables que l'on veut calculer.
En�n calculer les valeurs moyennes des observables.
Il convient de m�esurer les temp�eratures en unit�es de T0 � JkB
, les �energies en unit�es deJ , et les magn�etisations en unit�es de �. De plus, on va calculer avec des densit�esd'�energie E=N au lieu des �energies E.
HMPH104, U Montpellier Mod�elisation et simulation en physique 108 / 206
MCMC pour le mod�ele d'Ising 2d
Pour cr�eer un r�eseau de L� L spins, tous dans l'�etat 1, avec J = 1 et L = 16 :
import numpy as np
L = 16 # pour un r�eseau de L x L spins
norm = 1 / L**2 # constante de normalisation
lat = np.ones((L, L), dtype=int) # le r�eseau
coupling = 1.0 # la constante de couplage J
Initialiser d'autres constantes :
burnin_steps = 10000 # nombre de pas de burn -in
mcmc_steps = 100000 # longueur de chaque cha �ne de Markov
min_T = 0.1 # temp�erature minimale
max_T = 3 # T maximale
T_steps = 30 # nombre de valeurs de T pour le scan
filename = "ising.dat" # fichier pour enr�egistrer donn�ees
HMPH104, U Montpellier Mod�elisation et simulation en physique 109 / 206
MCMC pour le mod�ele d'Ising 2d
Voici quelques fonctions pour changer un seul spin. Le spin sera chang�e si �E < 0.Sinon, il sera chang�e avec la probabilit�e e��E=kBT .
# Changer le spin (i, j)
def flip(i, j):
lat[i, j] *= -1
# Changer le spin (i, j) si �energie gagn�ee ou par
# fluctuation thermique; renvoyer diff�erence d'�energies
def flip_maybe(T, i, j):
DeltaE = deltaE(i, j)
if DeltaE < 0: # �energie gagn�ee
flip(i, j)
return DeltaE
elif np.random.random () < np.exp(-DeltaE/T): # �en. perdue
flip(i, j) # changer spin tout de meme (fluctuation)
return DeltaE
else: # rien changer
return 0.0
HMPH104, U Montpellier Mod�elisation et simulation en physique 110 / 206
MCMC pour le mod�ele d'Ising 2d
Pour calculer �E :
E = � J (Si�1;j + Si+1;j + Si;j�1 + Si;j+1)Sij + (autres pairs de voisins)
E0 = � J (Si�1;j + Si+1;j + Si;j�1 + Si;j+1) (�Sij) + (autres pairs de voisins)
�E = 2 J (Si�1;j + Si+1;j + Si;j�1 + Si;j+1)Sij
# diff�erence d'�energies si spin (i, j) �etait chang�e
def deltaE(i, j):
prev_i , next_i = (i - 1) % L, (i + 1) % L
prev_j , next_j = (j - 1) % L, (j + 1) % L
DeltaE = 2 * coupling * lat[i, j] * \
(lat[prev_i , j] + lat[next_i , j]
+ lat[i, prev_j] + lat[i, next_j ])
return DeltaE
�A noter le \% L" pour prendre en compte les conditions aux limites p�eriodiques.
HMPH104, U Montpellier Mod�elisation et simulation en physique 111 / 206
MCMC pour le mod�ele d'Ising 2d�Energie et magnetisation totale : on rappelle
H = �JLXi=1
LXj=1
(SijSi+1;j + SijSi;j+1) ; M = �Xi
Si
# �energie totale
def energy ():
E = 0.0
for i in range(L):
next_i = (i + 1) % L # 0 si i == L-1, CL p�eriodiques
for j in range(L):
next_j = (j + 1) % L # CL p�eriodiques
E -= coupling * lat[i, j] * lat[next_i , j]
E -= coupling * lat[i, j] * lat[i, next_j]
return E
# magnetisation totale
def magnetisation ():
return lat.sum()
HMPH104, U Montpellier Mod�elisation et simulation en physique 112 / 206
MCMC pour le mod�ele d'Ising 2d
Quelques autres fonctions utiles :
# T -> infini: tous spins al�eatoires
def heat():
for i in range(L):
for j in range(L):
if np.random.choice ([True , False ]):
flip(i,j)
# T -> 0: tous spins �egaux , �etat fondamental
def freeze ():
spin = np.random.choice([-1, 1])
for i in range(L):
for j in range(L):
lat[i, j] = spin
# g�en�erer indice al�eatoire
def random_index ():
return np.random.randint(L)
HMPH104, U Montpellier Mod�elisation et simulation en physique 113 / 206
MCMC pour le mod�ele d'Ising 2d
M�ethode du \burn-in" pour atteindre l'�equilibre thermique :
def burnin(T, burnin_steps):
for n in range(burnin_steps):
i, j = random_index (), random_index ()
flip_maybe(T, i, j)
On commence le programme principale :
Epoints = np.zeros(T_steps) # points de <E>
Mpoints = np.zeros(T_steps) # points de <M>
E2points = np.zeros(T_steps) # points de <E^2>
M2points = np.zeros(T_steps) # points de <M^2>
T = min_T
dT = (max_T - min_T) / T_steps
Tpoints = np.arange(min_T , max_T , dT) # points pour scan
HMPH104, U Montpellier Mod�elisation et simulation en physique 114 / 206
MCMC pour le mod�ele d'Ising 2d
Boucle principale :
for step in range(T_steps):
freeze () # commencer en �etat fondamental
burnin(T, burnin_steps) # burn -in sans rien m�emoriser
en = energy () # �energie en �equilibre
magn = magnetisation () # magn�etisation en �equilibre
E = M = E2 = M2 = 0.0 # <E>, <M>, <E^2>, <M^2>
for n in range(mcmc_steps): # boucle MCMC
i, j = random_index (), random_index () # choisir spin
oldstate = lat[i, j] # enr�egistrer son �etat
en += flip_maybe(T, i, j) # le changer (ou pas)
E += en # mettre �a jour <E>
E2 += en**2 # mettre �a jour <E^2>
magn += lat[i, j] - oldstate # recalculer M
M += magn # mettre �a jour <M>
M2 += magn **2 # mettre �a jour <M^2>
HMPH104, U Montpellier Mod�elisation et simulation en physique 115 / 206
MCMC pour le mod�ele d'Ising 2dIl reste de normaliser les r�esultats et de les enregistrer :
# Continuation de la boucle principale:
E *= norm
M *= norm
M2 *= norm **2
E2 *= norm **2
E /= mcmc_steps
M /= mcmc_steps
E2 /= mcmc_steps
M2 /= mcmc_steps
Epoints[n] = E
E2points[n] = E2
Mpoints[n] = M
M2points[n] = M2
T += dT # fin de boucle principale
np.savetxt(filename , np.transpose( \
[Epoints , E2points , Mpoints , M2points , Tpoints ]))
HMPH104, U Montpellier Mod�elisation et simulation en physique 116 / 206
MCMC pour le mod�ele d'Ising 2dLe programme plot_ising.py trace les donn�ees :
import numpy as np
import matplotlib.pyplot as plt
filename = "ising.dat"
data = np.transpose(np.loadtxt(filename))
Epoints = data [0]
E2points = data [1]
Mpoints = data [2]
M2points = data [3]
Tpoints = data [4]
# Calcul de la susceptibilit�e et la capacit�e thermique:
chipoints = 256 * (M2points - Mpoints **2) / Tpoints
CVpoints = 256 * (E2points - Epoints **2) / Tpoints **2
plt.plot(Tpoints , CVpoints , 'm*') # trace CV(T)
plt.xlabel('T/T0')
plt.ylabel('Specific heat')
plt.show()
HMPH104, U Montpellier Mod�elisation et simulation en physique 117 / 206
R�esultats pour 100 points, 3M it�erations MC par point (�2h sur mon portable) :
HMPH104, U Montpellier Mod�elisation et simulation en physique 118 / 206
Le mod�ele d'Ising 2d, r�esultats
�A basses temp�eratures : magn�etisation spontan�ee
�A hautes temp�eratures : magn�etisation moyenne est z�ero
Transition de phase du deuxi�eme ordre �a la temp�erature de Curie Tc = 2:27T0
�A T > Tc : Loi de Curie-Weiss pour la susceptibilit�e, � � 1T�Tc (approximativement)
Simulation moins pr�ecise autour de Tc
HMPH104, U Montpellier Mod�elisation et simulation en physique 119 / 206
�Echantillonnage de MC
Exercices
R�ealiser une simulation MC d'un gaz parfait quantique dans une bo�te. Le gaz consiste de1000 atomes, chacun caract�eris�e par trois nombres quantiques nx, ny, nz = 1; 2; 3 : : :1.L'�energie cin�etique par atome est
E =�2~2
2mL2�n2x + n2y + n2z
�avec L la longueur de la bo�te et m la masse. Les atomes n'interagissent pas, doncl'�energie totale est la somme des �energies cin�etiques.
Montrer que, si on passe de nx �a nx � 1, alors l'�energie change par
�E =�2~2
2mL2(�2nx + 1) :
Utiliser l'algorithme de Metropolis-Hastings pour simuler le syst�eme. La loi deprobabilit�e est celle de Boltzmann,
P (�) =1
Ze�E(�)=kBT :
Tracer l'�energie par particule pour un �echantillon de N = 200 000 points �a T �xe.Tracer l'�energie moyenne en fonction de la temp�erature.
HMPH104, U Montpellier Mod�elisation et simulation en physique 120 / 206
Le recuit simul�e
Le recuit simul�e (\Simulated Annealing") : un algorithme dont le m�ecanisme est inspir�epar un processus physique, l'abaissement de la temp�erature dans le grille cristallin d'unsolide chau��e. Si le refroidissement dure su�samment longtemps, le solide va en�n setrouver dans l'�etat d'�energie minimale. Si on refroidit trop vite, on va probablementarriver dans un mimimum local avec des imperfections dans la grille.
Dans un contexte plus g�en�erale, l'objectif de l'algorithme est de trouver un minimumglobal approximatif d'une fonction compliqu�ee. Si il y a de multiples minima locaux, lesalgorithmes d�eterministes sont ine�cients, mais une m�ethode MC comme le recuit simul�epeut toujours etre employ�ee.
HMPH104, U Montpellier Mod�elisation et simulation en physique 121 / 206
Le recuit simul�e
Pour trouver l'�etat d'�energie minimale d'un syst�eme avec la m�ethode du recuit simul�e :
Explorer le syst�eme avec une marche al�eatoire construite par l'algorithme deMetropolis-Hastings et la loi de probabilit�e de Boltzmann.
Progressivement abaisser la temp�erature.
Lorsque T ! 0 les uctuations thermiques deviennent impossibles et le syst�eme vase trouver dans un �etat de basse �energie (pas forcement le minimum global, maissouvent une bonne approximation).
D'autres fonctions peuvent etre minimis�ees sur le meme principe.
HMPH104, U Montpellier Mod�elisation et simulation en physique 122 / 206
Le recuit simul�eProbl�eme exemplaire : Le voyageur de commerce
Un voyageur de commerce veut visiter N villes, s�epar�ees par des distances donn�ees, enprenant le chemin le plus court possible. Lequel est l'ordre optimale ?
On va placer les villes sur le plan (x; y) et leur donner les coordonn�ees (xi; yi)(i = 1 : : : N). On suppose en outre que le voyageur va �a la �n retourner �a son pointd'origine ; la fonction �a minimiser est alors
d =Xi
p(xi � xi+1)2 + (yi � yi+1)2
o�u on identi�e (xN+1; yN+1) ' (x1; y1) et on minimise sur l'ensemble des chemins = despermutations d'indices modulo surcomptage.
( , )x y
( , )x y
( , )x y
( , )x y
( , )x y
1 1
2 2
33
4 4
5 5
12(N � 1)! chemins in�equivalents ) tr�es ine�cient de les tous tester. Algorithmes connus
pour calculer la solution exacte ont un temps de calcul T (N) au moins exponentiel.HMPH104, U Montpellier Mod�elisation et simulation en physique 123 / 206
Le recuit simul�e
Recuit simul�e pour le probl�eme du voyageur de commerce :
Commencer avec un chemin quelconque.
�A chaque it�eration, proposer un nouveau chemin avec deux villes (choisies auhasard) �echang�ees. Calculer \l'�energie" = la longueur du nouveau chemin.
Accepter ou rejeter le nouveau chemin selon l'algorithme de Metropolis-Hastings etla loi de Boltzmann �avec \temp�erature" T .
Progressivement abaisser la temp�erature pour att�enuer les uctuations \thermiques".
HMPH104, U Montpellier Mod�elisation et simulation en physique 124 / 206
Le recuit simul�e
import numpy as np
N = 20 # nombre de villes �a visiter
Tstart = 10.0 # temp�erature de depart
Tend = 1.E-2 # temp�erature minimale
delta = 1.E-4 # taux de refroidissement
def length(p): # calcule la longueur d'un chemin
L = 0.0
for n in range(N-1):
L += np.sqrt((p[n, 0]-p[n+1, 0])**2 \
+ (p[n, 1]-p[n+1, 1]) **2)
# ajouter la distance du premier au dernier point:
L += np.sqrt((p[N-1, 0]-p[0, 0])**2 \
+ (p[N-1, 1]-p[0, 1]) **2)
return L
HMPH104, U Montpellier Mod�elisation et simulation en physique 125 / 206
Le recuit simul�e
path = np.random.random ([N, 2]) # N pairs de coordonn�ees
d = length(path) # longueur du chemin
T = Tstart # initialiser la temp�erature
while T > Tend: # boucle principale
city1 , city2 = np.random.randint(N), np.random.randint(N)
path[[city1 , city2],:] = path[[city2 , city1 ],:]
newd = length(path) # longueur du nouveau chemin
if np.exp(-(newd - d)/T) > np.random.random ():
d = newd
else: # annuler l'�echange
path[[city1 , city2],:] = path[[city2 , city1 ],:]
T *= (1 - delta) # refroidissement exponentiel
Ici le programme de refroidissement est d�e�ni par T ! (1� �)T �a chaque it�eration.Selon le probl�eme, d'autres sch�emas de variation de la temp�erature peuvent etre pluse�cace.
HMPH104, U Montpellier Mod�elisation et simulation en physique 126 / 206
Le recuit simul�e
Exemple pour N = 20 villes :
HMPH104, U Montpellier Mod�elisation et simulation en physique 127 / 206
Le recuit simul�e
Exercices
R�ealiser un programme qui calcule le nombre maximal de dim�eres que l'on peut placersur un pavage carr�e N �N . Chaque dim�ere va occuper deux carr�es voisins. (La reponse,bien sur, est N2=2 si N est pair o�u (N2 � 1)=2 si N est impair, mais supposons que nousne le savons pas.) Utiliser le recuit simul�e.
HMPH104, U Montpellier Mod�elisation et simulation en physique 128 / 206
�Equations di��erentielles ordinaires
HMPH104, U Montpellier Mod�elisation et simulation en physique 129 / 206
Dans ce chapitre
La m�ethode d'Euler
Les m�ethodes de Runge-Kutta
Les EDO d'ordre sup�erieur et les syst�emes d'�equations di��erentielles
Les m�ethodes adaptatives
HMPH104, U Montpellier Mod�elisation et simulation en physique 130 / 206
�Equations di��erentielles ordinaires
Rappel : EDO = �equation di��erentielle o�u la/les fonction(s) inconnue(s) d�epende(nt)d'un seul param�etre t.
Exemple : oscillateur harmonique,
d2
dt2x(t) + !2x(t) = 0 ; solution : x(t) = A cos!t+B sin!t :
On va d'abord se limiter aux EDO du premier ordre avec une seule fonction inconnue.Forme g�en�erale :
d
dtx(t) = f(x; t) :
Probl�eme de Cauchy : Soit une telle EDO avec la condition initiale
x(0) = x0 ;
quelle est la fonction x(t) qui satisfait les deux ?
HMPH104, U Montpellier Mod�elisation et simulation en physique 131 / 206
M�ethode d'Euler
On cherche la solution de
d
dtx(t) = f(x; t) ; x(0) = x0 :
D�eveloppement limit�e :
x(h) = x(0) + hdx
dt(0) +
1
2h2
d2x
dt2(0) +O(h3) = x(0) + h f(x; 0) +O(h2) :
Pour h petit on n�eglige les termes de O(h2) :x(h) � x(0) + h f(x(0); 0) :
On utilise cette approximation pour calculer x(2h) :
x(2h) � x(h) + h f(x(h); h)
puis successivement x(3h), x(4h) etc. M�ethode d'Euler. En g�en�erale :
x(t+ h) � x(t) + h f(x(t); t) :
HMPH104, U Montpellier Mod�elisation et simulation en physique 132 / 206
M�ethode d'EulerExemple : Soit l'EDO
dx
dt= �x3 + sin t
avec la condition initiale x(0) = 0. On calcule la solution �a 1000 points entre 0 et 10 :
import numpy as np
import matplotlib.pyplot as plt
def f(x, t):
return -x**3 + np.sin(t)
a, b, = 0.0, 10.0 # intervalle
N = 1000 # nombre de points
h = (b - a) / N # incr�ement
x = 0.0 # condition initiale
tpoints , xpoints = np.arange(a, b, h), []
for t in tpoints:
xpoints.append(x)
x += h * f(x, t)
plt.plot(tpoints , xpoints)
plt.show()
HMPH104, U Montpellier Mod�elisation et simulation en physique 133 / 206
M�ethode d'Euler
R�esultat :
HMPH104, U Montpellier Mod�elisation et simulation en physique 134 / 206
M�ethode d'Euler
Estimation de l'erreur :
�A chaque pas on n�eglige les termes O(h2). Terme d'erreur dominant : 12h2 d
2xdt2
.
Il y a N = (b� a)=h pas au total. Alors
N�1Xk=0
1
2h2
d2x
dt2(xk; tk) =
1
2hN�1Xk=0
h@f
@t(xk; tk) � 1
2h
Z b
a
@f
@tdt
=1
2h (f(x(b); b)� f(x(a); a)) :
On a pu approximer la somme par une int�egrale pour petit h. L'erreur num�eriquetotale est donc O(h).La m�ethode d'Euler est simple mais pas tr�es pr�ecise.
Elle est aussi facilement instable comme nous verrons de suite.
HMPH104, U Montpellier Mod�elisation et simulation en physique 135 / 206
M�ethode d'Euler
Stabilit�e num�erique
Exemple :dx
dt= ��x ; x(0) = 1
avec � > 0. Solution analytique :x(t) = e��t
Solution num�erique avec Euler :
x(h) = x(0)� h�x(0) = x(0)(1� h�) = 1� h�x(2h) = x(h)� h�x(h) = x(h)(1� h�) = (1� h�)2
: : :
x(nh) = (1� h�)n cf. ex = limn!1
�1 +
x
n
�n
Si 0 < h < 2�, alors j1� h�j < 1, alors limn!1(1� h�)n = 0 comme il faut
Mais si h > 2�, alors (1� h�)n diverge lorsque n ! 1.
Condition de stabilit�e : h < 2�.
HMPH104, U Montpellier Mod�elisation et simulation en physique 136 / 206
M�ethode d'Euler
Stabilit�e num�erique
dx
dt= ��x ; � > 0 ; x(0) = 1 :
Solution avec Euler pour � = 10 et h = 0:3, h = 0:15, h = 0:05 : Courbe bleue = e��t,points rouges = approximation num�erique
h = 0:3 h = 0:15 h = 0:05
HMPH104, U Montpellier Mod�elisation et simulation en physique 137 / 206
M�ethode d'Euler implicite
La m�ethode d'Euler que nous venons d'�etudier est une m�ethode explicite : en fonction del'�etat du syst�eme �a t on peut directement calculer l'�etat du syst�eme �a t+ h :
x(t+ h) � x(t) + h f(x(t); t)
Plus stable : m�ethode d'Euler implicite (retrograde) o�u
x(t+ h) � x(t) + h f(x(t+ h); t+ h)
Plus di�cile de mettre en oeuvre : il faut r�esoudre cette �equation selon x(t+ h).
Exemple comme avant : f(x) = ��x, x(0) = 1 :
x(h) = x(0)� h�x(h) = 1� h�x(h) ) x(h) =1
1 + h�
: : :
x(nh) = x((n� 1)h)� h�x(nh) = 1
(1 + h�)n�1� h�(nh) ) x(nh) =
1
(1 + h�)n
Converge vers 0 lorsque n ! 1 pour tout h > 0 (comme il faut : limx!1 e��x = 0).M�ethode stable.
HMPH104, U Montpellier Mod�elisation et simulation en physique 138 / 206
M�ethodes de Runge-Kutta : Second ordre
M�ethode d'Euler = m�ethode de Runge-Kutta du premier ordre.
M�ethode de Runge-Kutta du second ordre (\midpoint method", m�ethode du point demilieu) :
extrapolation au prochain point x(t+ h) avec la pente �a t+ h=2 plutot qu'�a t :
t t+h
x(t) t+h/2calculé avec pente à
calculé avec méthode de Euler (pente à )t
Meilleure approximation.
HMPH104, U Montpellier Mod�elisation et simulation en physique 139 / 206
M�ethodes de Runge-Kutta : Second ordre
D�eveloppement limit�e en t+ h2:
x(t+ h) = x(t+ h=2) +1
2hdx
dt(t+ h=2) +
1
8h2
d2x
dt2(t+ h=2) +O(h3) :
De meme :
x(t) = x(t+ h=2)� 1
2hdx
dt(t+ h=2) +
1
8h2
d2x
dt2(t+ h=2) +O(h3) :
On soustrait :
x(t+ h) = x(t) + hdx
dt(t+ h=2) +O(h3) = x(t) + hf(x(t+ h=2); t+ h=2) +O(h3) :
Plus de terme O(h2). L'erreur est O(h3).Probl�eme : On a besoin de x(t+ h=2) pour �evaluer le terme hf(x(t+ h=2); t+ h=2).Mais on n'a pas encore calcul�e x au-d�el�a de t.
Solution : On prend l'approximation de la m�ethode d'Euler,x(t+ h=2) � x(t) + 1
2hf(x; t). L'erreur reste d'ordre h3 car (apr�es d�eveloppement limit�e)
f�x(t) + 1
2h f(x; t); t+ h=2
�= f (x(t+ h=2); t+ h=2) +O(h2) :
HMPH104, U Montpellier Mod�elisation et simulation en physique 140 / 206
M�ethodes de Runge-Kutta : Second ordre
Algorithme pour la m�ethode de Runge-Kutta du second ordre :
Calculerk1 � h f(x; t):
Utiliser ce r�esultat pour approximer x(t+ h=2) � x(t) + 12hf(x; t) = x(t) + 1
2k1.
Ins�erer cette valeur dans f pour calculer
k2 � hf(x+ k1=2; t+ h=2) :
En�n, calculerx(t+ h) = x(t) + k2 :
HMPH104, U Montpellier Mod�elisation et simulation en physique 141 / 206
Exercices
Modi�er le programme de p. 133 pour calculer la solution de l'EDO
dx
dt= �x3 + sin t
avec la condition initiale x(0) = 0 par la m�ethode de Runge-Kutta du second ordre.Tracer la solution pour N = 10, N = 20, N = 100. Comparer avec le r�esultat du coursobtenu avec N = 1000 et la m�ethode d'Euler.
HMPH104, U Montpellier Mod�elisation et simulation en physique 142 / 206
M�ethodes de Runge-Kutta : RK4
M�ethode de Runge-Kutta du quatri�eme ordre
On peut g�en�eraliser ce sch�ema (avec plusieurs d�eveloppements limit�ees en plusieurspoints, prenont des combinaisons lin�eaires telles que les termes jusqu'�a un ordre �xe hn
se suppriment) : m�ethodes de Runge-Kutta.
Un bon compromis entre la performance de l'algorithme et l'e�ort de programmation estla c�el�ebre m�ethode de Runge-Kutta du quatri�eme ordre (RK4). Les �equations sont encorefaciles �a impl�ementer :
k1 = hf(x; t) ;
k2 = hf(x+ k1=2; t+ h=2) ;
k3 = hf(x+ k2=2; t+ h=2) ;
k4 = hf(x+ k3; t+ h) ;
x(t+ h) = x(t) +1
6(k1 + 2 k2 + 2 k3 + k4) :
HMPH104, U Montpellier Mod�elisation et simulation en physique 143 / 206
M�ethodes de Runge-Kutta : RK4
Code :
import numpy as np
def rk4(f, a, b, x0, N):
h = (b - a) / N # incr�ement
x = x0 # �a t=a, x=x0
tpoints = np.arange(a, b, h)
xpoints = []
for t in tpoints:
xpoints.append(x)
k1 = h * f(x, t)
k2 = h * f(x + k1/2, t + h/2)
k3 = h * f(x + k2/2, t + h/2)
k4 = h * f(x + k3, t + h)
x += (k1 + 2*k2 + 2*k3 + k4)/6
# renvoyer les listes des t et x(t)
return tpoints , xpoints
HMPH104, U Montpellier Mod�elisation et simulation en physique 144 / 206
Comparaison d'erreurOn consid�ere le probl�eme de Cauchy
dx
dt= x� x2
2; x(0) = 1 :
Solution exacte :
x(t) =2
1 + e�t
Solution num�erique avec N = 5000 pas entre 0 et 10
Erreur avec Euler :
aspect lisse ) erreur de troncature domine
Erreur avec RK4 :
aspect bruit�e ) erreur d'arrondiHMPH104, U Montpellier Mod�elisation et simulation en physique 145 / 206
Les EDO d'ordre sup�erieur
Une EDO du second ordre peut toujours etre reduite �a deux EDO du premier ordre.Exemple :
d2x
dt2x� xdx
dt� x2 � t = 0
On d�e�nit v(t) = dx= dt et on obtient le syst�eme �equivalent
dx
dt= v ;
dv
dt= v + x+
t
x:
Une EDO du n-�eme ordre peut toujours etre reduite �a n EDO du premier ordre.Meme principe : on d�e�nit v(t) = dx=dt, a(t) = dv=dt etc. et on trouve la solutiondu syst�eme coupl�e d'EDO du premier ordre avec les fonctions inconnues x; v; a; : : :
HMPH104, U Montpellier Mod�elisation et simulation en physique 146 / 206
Syst�emes d'�equations di��erentielles coupl�ees
Maintenant : Plusieurs fonctions inconnues (d�ependent toujours d'un seul param�etre t).
Forme g�en�erale pour une EDO du premier ordre avec deux fonctions inconnues :
dx
dt= fx(x; y; t) ;
dy
dt= fy(x; y; t) :
Avec n fonctions inconnues : en notation vectorielle
dr
dt= f(r; t)
o�u r = (x(t); y(t); : : :) et f(r; t) = (fx(r; t); fy(r; t); : : :)
Les m�ethodes num�eriques pour la solution ne sont pas plus compliqu�ees : simplesg�en�eralisations des m�ethodes pour une seule fonction inconnue.
HMPH104, U Montpellier Mod�elisation et simulation en physique 147 / 206
Syst�emes d'�equations di��erentielles coupl�ees
M�ethode de Runge-Kutta du 4�eme ordre pour n �equations coupl�ees :
Soitdr
dt= f(r; t)
avec r(0) = r0.
�A chaque pas on calcule
k1 = h f(r; t) ;
k2 = h f(r+ k1=2; t+ h=2) ;
k3 = h f(r+ k2=2; t+ h=2) ;
k4 = h f(r+ k3; t+ h) ;
et en�n on obtient le prochain point :
r(t+ h) = r(t) +1
6(k1 + 2k2 + 2k3 + k4) :
Memes �equations que pour le cas d'une seule fonction x(t).
HMPH104, U Montpellier Mod�elisation et simulation en physique 148 / 206
Exemple : Pendule simple
θ
y
x
l
Lagrangien : L = T � V = 12m�_x2 + _y2
��mgy = 12m`2 _�2 +mg` cos �
�Equations de mouvement : @L@�� d
dt@L
@ _�= 0, alors
d2�
dt2= �g
`sin �
�Equation di��erentielle ordinaire du second ordre pour � = �(t). Oscillateuranharmonique.
Avec ! = d�dt, �equivalent �a deux �equations du premier ordre :
d!
dt= �g
`sin � ;
d�
dt= ! :
HMPH104, U Montpellier Mod�elisation et simulation en physique 149 / 206
Exemple : Pendule simple
On cherche alors la solution de
d!
dt= �g
`sin � ;
d�
dt= ! :
avec les conditions initiales �(0) = �0, !(0) = !0.
On r�ealise d'abord la fonction f qui retourne les membres de droite des EDO :
import numpy as np
g = 9.81 # acc�el�eration gravitationnelle
L = 0.1 # longueur du pendule
def f(r, t):
theta = r[0]
omega = r[1]
ftheta = omega
fomega = -g / L * np.sin(theta)
return np.array ([ftheta , fomega ])
HMPH104, U Montpellier Mod�elisation et simulation en physique 150 / 206
Exemple : Pendule simpleEnsuite on impl�emente les conditions initiales :
theta0 = 1.5 # angle �a t=0
omega0 = 0. # vitesse angulaire �a t=0
a, b = 0, 3 # intervalle de temps
N = 300 # nombre de pas
h = (b - a) / N # pas d'incr�ement
tpoints = np.arange(a, b, h) # temps interm�ediaires
thetapoints = [] # on va mettre les theta(t) ici
omegapoints = [] # on va mettre les omega(t) ici
r = np.array([theta0 , omega0 ]) # conditions initiales
En�n on calcule la solution avec la m�ethode RK4 :
for t in tpoints:
thetapoints.append(r[0])
omegapoints.append(r[1])
k1 = h * f(r, t)
k2 = h * f(r + k1/2, t + h/2)
k3 = h * f(r + k2/2, t + h/2)
k4 = h * f(r + k3, t + h)
r += (k1 + 2*k2 + 2*k3 + k4)/6
HMPH104, U Montpellier Mod�elisation et simulation en physique 151 / 206
Exemple : Pendule simple
On trace x(t) = ` sin �(t) (ligne bleue) et, pour comparaison, la fonction sinuso��daleobtenue avec l'approximation harmonique (ligne verte) :
HMPH104, U Montpellier Mod�elisation et simulation en physique 152 / 206
Exemple : Pendule simple
On trace x(t) = ` sin �(t) versus _x(t) = `!(t) cos �(t) : diagramme d'espace des phases
HMPH104, U Montpellier Mod�elisation et simulation en physique 153 / 206
M�ethodes adaptatives : RK4 avec pas variableId�ee : faire varier h a�n d'obtenir une erreur approximativement constante �a chaque pas.
Motivation : dans les r�egions de x; t o�u le membre droite f(x; t) varie lentement, on peutobtenir une bonne pr�ecision avec un grand h. Par contre, si la variation de f(x; t) estimportante, h doit etre choisi petit.
Estimation de l'erreur locale : on calcule deux pas successifs d'inc�rement h, puis, �apartir du meme point de depart, un seul pas d'incr�ement 2h.
t t+h
x(t)
t+2h
x =
x = résultat après deux pas
résultat après un pas
de largeur h
de largeur 2h2
1
Puisque la m�ethode RK4 est exacte jusqu'�a l'ordre h4, on a
x(t+ 2h) = x1 + 2ch5 +O(h6) ; c = cte.
= x2 + c(2h)5 +O(h6)On conclut que l'erreur par pas, � � ch5, est donn�e par
� � 1
30(x1 � x2) :
HMPH104, U Montpellier Mod�elisation et simulation en physique 154 / 206
M�ethodes adaptatives : RK4 avec pas variable
On cherche l'incr�ement h0 tel que l'erreur num�erique par unit�e de temps est �egale �a unepr�ecision �xe � ) l'erreur locale �a chaque pas est �h0.
Si h < h0 : le calcul est plus pr�ecis que n�ecessaire ) on peut �economiser enaugmentant h
Si h > h0 : le calcul n'est pas assez pr�ecis ) il faut r�eduire h
Alors
�h0!= jch05j = jch5j
�h0
h
�5
=1
30jx1 � x2j
�h0
h
�5
On r�earrange :
h0 = h�1=4 ; � =30h�
jx1 � x2j :
HMPH104, U Montpellier Mod�elisation et simulation en physique 155 / 206
M�ethodes adaptatives : RK4 avec pas variable
Algorithme :
�A chaque point t on calcule x1 (avec deux pas d'incr�ement h) et x2 (avec un pasd'incr�ement 2h).
Avec x1, x2 et h on calcule �.
Si � > 1, alors h < h0, alors on peut augmenter h par un facteur �1=4. On continuedonc avec la nouvelle estimation x1 pour x au point t+ 2h, et on calcule le prochainpas avec h h�1=4.
Si par contre � < 1, on n'a pas obtenu la pr�ecision d�esir�ee. Alors on r�ep�ete toute laproc�edure avec h h�1=4.
Pour �eviter un accroissement trop important de l'incr�ement, au cas o�uaccidentellement �� 1, on limitera le facteur d'augmentation en pratique. Parexemple, on augmentera h au maximum par un facteur 3 �a chaque �etape, meme si�1=4 > 3.
On peut aussi utiliser cette m�ethode pour r�esoudre des syst�emes d'EDO coupl�ees.
HMPH104, U Montpellier Mod�elisation et simulation en physique 156 / 206
Exemple : Pendule simple avec RK4 adaptativeDans l'exemple ci-dessus : remplacer la boucle sur t par
t = a # temps initial
tpoints = [] # temps interm�ediaires
delta = 1.0E-5 # pr�ecision
while t < b:
thetapoints.append(r[0])
omegapoints.append(r[1])
tpoints.append(t)
r1 = rk4step(rk4step(r, t, h), t + h, h) # deux pas RK4
r2 = rk4step(r, t, 2*h) # un pas RK4 avec incr�ement 2h
rho = 30 * h * delta / abs(r2[0] - r1[0])
if rho < 1: # pas assez pr�ecis: diminuer h, r�ep�eter
h *= rho **(1/4)
r1 = rk4step(rk4step(r, t, h), t + h, h)
t += 2*h
else: # trop pr�ecis: augmenter h pour prochain pas
t += 2*h
h *= min(rho **(1/4) , 3.0) # (max. par un facteur 3)
r = r1
HMPH104, U Montpellier Mod�elisation et simulation en physique 157 / 206
Exemple : Pendule simple avec RK4 adaptative
La fonction rk4step() de l'exemple pr�ec�edent ex�ecute un pas de RK4 :
def rk4step(r, t, h):
k1 = h * f(r, t)
k2 = h * f(r + k1/2, t + h/2)
k3 = h * f(r + k2/2, t + h/2)
k4 = h * f(r + k3, t + h)
return r + (k1 + 2*k2 + 2*k3 + k4)/6
On a calcul�e l'erreur par rapport �a � seulement. Il peut convenir de le calculer par rapport�a � et ! (o�u toutes les fonctions inconnues en g�en�eral) selon le probl�eme.
HMPH104, U Montpellier Mod�elisation et simulation en physique 158 / 206
Exemple : Pendule simple avec RK4 adaptative
Avec une pr�ecision de � = 10�7 (on trace un point sur cinq en t) :
HMPH104, U Montpellier Mod�elisation et simulation en physique 159 / 206
RK4 avec pas variable
Exercices
On va utiliser la m�ethode RK4 adaptative pour calculer la trajectoire d'une com�ete. Onn�eglige l'attraction gravitationnelle exerc�ee par la com�ete au soleil, et on choisit un r�ep�ereavec le soleil au centre et les axes x et y dans le plan du mouvement. La constantegravitationnelle de Newton est G = 6:67408 � 10�11 m3 kg�1 s�2 et la masse du soleil estM = 1:989 � 1030 kg.
Trouver les deux �equations de mouvement pour les coordonn�ees de la com�ete enfonction du temps x(t) et y(t).Les transformer en un syst�eme de quatre �equations du premier ordre.R�ealiser un programme qui calcule la solution avec les conditions initialesx(0) = 4 � 109 km, y(0) = 0, _x(0) = 0, _y(0) = 500 m s�1 avec la m�ethode RK4 �apr�ecision �xe. Tracer x(y) ; choisir h su�samment petit que l'orbite ne change pasvisiblement �a chaque r�evolution.R�ealiser un programme qui e�ectue le meme calcul avec la m�ethode RK4 adaptative.La pr�ecision sera � =1 km/an. Comparer avec l'algorithme �a pr�ecision �xe.
HMPH104, U Montpellier Mod�elisation et simulation en physique 160 / 206
M�ethodes adaptatives : M�ethode de Bulirsch-Stoer
Id�ee : extrapolation de Richardson, similaire �a la m�ethode d'int�egration de Romberg.
Il faut d'abord introduire la m�ethode du point de milieu modi��ee (MPMM).
Algorithme de la MPMM : Avec x(t) donn�e, pour calculer x(t+H) o�u H = Nh, ond�e�nit
z0 = x(t) ;
z1 = z0 + h f(z0; t) ;
zm+1 = zm�1 + 2h f(zm; t+mh) ; m = 1; 2; : : : ; N � 1
En�n,
x(t+H) � 1
2(zN + zN�1 + h f(zN ; t+H)) :
Sauf pour le premier et dernier point cela correspond �a la m�ethode du point de milieu(RK2). M�ethode de deuxi�eme ordre avec une propri�et�e importante : si N est pair, alorsl'erreur locale est donn�ee par une s�erie enti�ere paire en h (\th�eor�eme de Gragg"). Lespuissances impaires se suppriment.
HMPH104, U Montpellier Mod�elisation et simulation en physique 161 / 206
M�ethodes adaptatives : M�ethode de Bulirsch-Stoer
Code pour la MPMM :
# Calcul de x(t+H) par m�ethode du point de milieu modifi�ee
# f = fonction du membre de droite de l'EDO
# x = point de d�epart
# H = largeur de l'intervalle
# N = nombre de pas partiels
def mmpm(f, x, t, H, N):
h = H/N # incr�ement par pas partiel
zold = x # z0
znew = zold + h*f(zold , t) # z1
for m in range(1, N):
znew , zold = zold + 2*h*f(znew , t + m*h), znew
return (znew + zold + h*f(znew , t+H))/2
HMPH104, U Montpellier Mod�elisation et simulation en physique 162 / 206
M�ethodes adaptatives : M�ethode de Bulirsch-Stoer
On n'utilise normalement pas la MPMM toute seule, mais elle est le fondement de lam�ethode de Bulirsch-Stoer.
Pour calculer x(t+H) :
On calcule x(t+H) avec N = 2 avec la MPMM : deux pas de h1 = H=2,r�esultat � R1;1.
On r�ecalcule x(t+H) avec N = 4 avec la MPMM : quatre pas de h2 = H=4,r�esultat � R2;1.
Puisque l'erreur est donn�ee par une s�erie enti�ere paire, on sait que
x(t+H) = R2;1 + c1 h22 +O(h42) ; c1 = cte.
etx(t+H) = R1;1 + c1 h
21 +O(h41) = R1;1 + 4 c1 h
22 +O(h42) :
On r�earrange :
x(t+H) = R2;1 +1
3(R2;1 �R1;1)| {z }�R2;2
+O(h42) :
L'erreur de l'approximation R2;2 est de l'ordre h42 !
HMPH104, U Montpellier Mod�elisation et simulation en physique 163 / 206
M�ethodes adaptatives : M�ethode de Bulirsch-StoerProchaine �etape : on calcule x(t+H) avec N = 6 avec la MPMM : six pas deh3 = H=6, r�esultat � R3;1.
Meme raisonnement qu'avant : l'erreur de
R3;2 = R3;1 +4
5(R3;1 �R2;1)
est de l'ordre h43, comme celle de R2;2. Alors
x(t+H) = R3;2 + c2 h43 +O(h63) = R2;2 +
81
16c2 h
43 +O(h63)
Donc
x(t+H) = R3;3 +O(h63) ; R3;3 � R3;2 +16
65(R3;2 �R2;2) :
It�eration : Rk;1 est l'approximation trouv�ee par la MPMM avec N = 2k pasinterm�ediaires, hk = h1=(2k). Rk;m est le r�esultat am�elior�e avec une erreur deO(h2m). Avec Rk;1 et les Rk�1;i on peut construire tous les Rk;m jusqu'�a Rk;k. Ona
�k;m � cmh2mk =Rk;m �Rk�1;m
(k=(k � 1))2m � 1
et la relation r�ecursive
Rk;m+1 = Rk;m +Rk;m �Rk�1;m
(k=(k � 1))2m � 1
HMPH104, U Montpellier Mod�elisation et simulation en physique 164 / 206
M�ethodes adaptatives : M�ethode de Bulirsch-Stoer
Sch�ema :R1;1
&R2;1 ! R2;2
& &R3;1 ! R3;2 ! R3;3
& & &R4;1 ! R4;2 ! R4;3 ! R4;4
etc.
Extrapolation de Richardson, comme pour l'int�egration de Romberg. Tous les Rk;1
calcul�es par la MPMM avec un incr�ement hk = h1=(2k). Tous les autres Rk;m calcul�espar r�ecurrence.
HMPH104, U Montpellier Mod�elisation et simulation en physique 165 / 206
M�ethodes adaptatives : M�ethode de Bulirsch-Stoer
Algorithme :
Pour k = 1; 2; 3 : : : :
Calculer Rk;1 avec la MPMM.
Calculer les autres Rk;m jusqu'�a Rk;k avec la relation r�ecursive
Rk;m+1 = Rk;m +Rk;m �Rk�1;m
(k=(k � 1))2m � 1
Si k > 1, estimer l'erreur sur Rk;k�1 avec la formule
�k;k�1 � Rk;k�1 �Rk�1;k�1(k=(k � 1))2k�2 � 1
(On ne peut pas estimer l'erreur �k;k sur le r�esultat �nal Rk;k parce que Rk�1;kn'existe pas, mais �k;k�1 est une estimation conservative pour �k;k).
Terminer lorsque �k;k�1 est plus petit que la pr�ecision d�esir�ee. Renvoyer Rk;k.
HMPH104, U Montpellier Mod�elisation et simulation en physique 166 / 206
M�ethodes adaptatives : M�ethode de Bulirsch-Stoer
En pratique :
Seul le point x(t+H) b�en�e�cie de la pr�ecision sup�erieure obtenue parl'extrapolation de Richardson. Les points interm�ediaires x(t+mh) ont �et�e calcul�esavec une pr�ecision plutot m�ediocre, celle de la MPMM.
De plus, la m�ethode fonctionne le mieux si le nombre d'it�erations ne d�epasse pas� 20 ) il faut que H soit su�samment petit
En pratique : pour r�esoudre une EDO sur un intervalle de temps [a; b], subdiviser[a; b] en morceaux de largeur H su�samment petits et appliquer la m�ethodesuccessivement �a chaque sous-intervalle.
On peut meme faire le programme d�eterminer le largeur de H : dans les r�egions o�uN & 20, subdiviser l'intervalle en deux moiti�es de largeur H=2 et r�eessayer.
HMPH104, U Montpellier Mod�elisation et simulation en physique 167 / 206
M�ethodes adaptatives : M�ethode de Bulirsch-Stoer
Projet : Le probl�eme �a n corps gravitationnel avec la m�ethode de Bulirsch-Stoer
�Ecrire un code qui permet de calculer le mouvement de n points mat�eriels dans le champgravitationnel cr�ee par eux-memes. On suppose que les masses ainsi que les vitesses etpositions �a t = 0 sont donn�ees. Utilisez la m�ethode de Bulirsch-Stoer. Possiblesapplications : voir enonc�e.
HMPH104, U Montpellier Mod�elisation et simulation en physique 168 / 206
M�ethodes adaptatives : M�ethode de Bulirsch-Stoer
Remarques :
Contrairement �a la m�ethode d'int�egration de Romberg, on ne redouble pas lenombre de pas �a chaque it�eration mais on ajoute 2. (Il se trouve que c'est pluse�cace ; de plus, contrairement �a l'int�egration, il n'y a pas de moyen de r�eutiliser lespoints d�ej�a calcul�es.)
En cons�equence, la formule de r�ecurrence de la m�ethode de Bulirsch-Stoer (voirp. 166) est di��erente de celle de la m�ethode de Romberg (voir p. 63).
La m�ethode de Bulirsch-Stoer est normalement plus vite que la m�ethode RK4adaptative parce qu'elle n�ecessite moins d'�evaluations de la fonction f .(Numerical Recipes : \RK4 = cheval de labour, BS = cheval de course". . . )
HMPH104, U Montpellier Mod�elisation et simulation en physique 169 / 206
R�esum�e : �Equations di��erentielles ordinaires
Euler :
facile �a impl�ementer
impr�ecis
instable sauf pour la variante implicite
Runge-Kutta d'ordre sup�erieur :
facile �a impl�ementer
plutot e�cace
plutot stable
Bulirsch-Stoer :
plus compliqu�ee
tr�es e�cace
plutot stable
convergence problematique si la solution n'est pas r�eguli�ere ( uctuations rapides,divergences).
HMPH104, U Montpellier Mod�elisation et simulation en physique 170 / 206
R�esum�e : �Equations di��erentielles ordinaires
On n'a pas trait�e :
m�ethodes pr�edicteur/correcteur
algorithmes sp�eciaux pour des probl�emes conservatifs
algorithmes sp�eciaux pour des probl�emes raides (des multiples �echelles tr�esdi��erentes)
probl�emes avec des conditions aux limites plutot que des conditions initiales(plusieurs fonctions inconnues avec valeurs sp�eci��ees �a plusieurs points t0, t1, . . . )
et encore beaucoup plus. . .
HMPH104, U Montpellier Mod�elisation et simulation en physique 171 / 206
�Equations di��erentielles partielles
HMPH104, U Montpellier Mod�elisation et simulation en physique 172 / 206
Dans ce chapitre
La classi�cation des EDP
Les m�ethodes des di��erences �nies
Probl�emes aux limites : M�ethode de Jacobi, m�ethode de surrelaxation successive
Probl�emes de Cauchy : M�ethode FTCS, m�ethode de Crank-Nicolson
HMPH104, U Montpellier Mod�elisation et simulation en physique 173 / 206
Classi�cation des EDPOn consid�ere une EDP quasi-lin�eaire et du second ordre
D�(t; xi) = f(�; t; xi)
avec D un op�erateur di��erentiel du second ordre.
Classi�cation en math�ematique selon la structure des coe�cients des d�eriv�eessecondes :
hyperbolique, exemple : �equation d'onde
D =@2
@t2� c2
Xi
@2
@x2i
parabolique, exemple : �equation de la chaleur
D =@
@t� a
Xi
@2
@x2i
elliptique, exemple : �equation de Laplace
D =Xi
@2
@x2i:
HMPH104, U Montpellier Mod�elisation et simulation en physique 174 / 206
Classi�cation des EDP
Classi�cation en num�erique selon le type de probl�eme :
Probl�eme de Cauchy pour les �equations hyperboliques et paraboliques. On sp�eci�edes valeurs initiales �a un t donn�e (ainsi que des valeurs aux limites du domainespatial), puis on calcule l'evolution du syst�eme en t. Probl�eme dynamique.
Probl�eme aux limites pour les �equations elliptiques : On sp�eci�e des valeurs auxlimites au bord du domaine spatial, puis on calcule les valeurs en int�erieur. Probl�emestatique.
Types de conditions aux limites/initiales :
Conditions de Dirichlet : on sp�eci�e les valeurs de la fonction inconnue �
Conditions de Neumann : on sp�eci�e ses d�eriv�ees.
HMPH104, U Montpellier Mod�elisation et simulation en physique 175 / 206
Les m�ethodes des di��erences �nies
On construit un maillage du domaine de d�e�nition de la fonction inconnue �, parexemple, un maillage r�egulier rectiligne en deux dimensions :
(x , y )(x , y )2
(x , y )1
y
x
a
a x
y
(x , y )31
21
1 2(x , y )
3 1(x , y )
1
2
Ensuite on approxime les d�eriv�ees �a chaque noeud par des expressions discr�etes, voirpp. 83, 84. On obtient un syst�eme d'�equations alg�ebriques pour les valeurs de � auxnoeuds du maillage.
Solution num�eriqe du probl�eme = solution de ce syst�eme d'�equations.
HMPH104, U Montpellier Mod�elisation et simulation en physique 176 / 206
Exemple d'un probl�eme aux limites : L'�equation de Laplace en 2D
On cherche la solution de l'�equation de Laplace en 2D�@2
@x2+
@2
@y2
��(x; y) = 0
dans un carr�e de 1� 1 m, o�u le potentiel � v�eri�e les conditions aux limites�(x; y = 1m) = 1V et �(x; y = 0) = �(x = 0; y) = �(x = 1m; y) = 0.
φ = 0
φ = 1 V
x
y
HMPH104, U Montpellier Mod�elisation et simulation en physique 177 / 206
Exemple d'un probl�eme aux limites : L'�equation de Laplace en 2D
Avec a la constante de r�eseau aux deux dimensions, la version discr�ete de l'op�erateur deLaplace est (voir p.84)�
@2
@x2+
@2
@y2
��(x; y)
� �(x+ a; y) + �(x� a; y)� 2�(x; y)
a2+�(x; y + a) + �(x; y � a)� 2�(x; y)
a2
=�(x+ a; y) + �(x� a; y) + �(x; y + a) + �(x; y � a)� 4�(x; y)
a2
alors l'�equation de Laplace devient
�(x; y) � 1
4(�(x+ a; y) + �(x� a; y) + �(x; y + a) + �(x; y � a)) (?)
Pour a = 1 cm, on a un r�eseau de 101� 101 points (x; y) (y compris ceux au bord), dont400 au bord qui v�eri�ent �(x; y) = 0 ou �(x; y) = 1 V selon leur position. Les autres9801 points doivent v�eri�er (?) ) syst�eme de 9801 �equations coupl�ees.
HMPH104, U Montpellier Mod�elisation et simulation en physique 178 / 206
Exemple d'un probl�eme aux limites : L'�equation de Laplace en 2D
Pour r�esoudre le syst�eme de 9801 �equations
�(x; y) � 1
4(�(x+ a; y) + �(x� a; y) + �(x; y + a) + �(x; y � a))
on peut se servir de la m�ethode de Jacobi :
Commencer avec une estimation pour �(x; y) �a chaque noeud (pas forcement tr�espr�ecise)
Calculer
�0(x; y) =1
4(�(x+ a; y) + �(x� a; y) + �(x; y + a) + �(x; y � a))
pour chaque noeud (x; y) �a l'int�erieur
Si jj�� �0jj < � avec � la pr�ecision d�esir�ee : terminer. Sinon, r�ep�eter avec � �0.
HMPH104, U Montpellier Mod�elisation et simulation en physique 179 / 206
Exemple d'un probl�eme aux limites : L'�equation de Laplace en 2D
import numpy as np
N = 100 # maillage = r�eseau de (N+1) x (N+1)
delta = 1.E-5 # pr�ecision souhait�ee
U = 1.0 # potentiel en haut
phi = np.zeros ((N+1, N+1))
phiprime = np.zeros((N+1, N+1))
phi[0, :] = U # conditions aux limites
eps = 1.0 E308
while eps > delta:
for i in range(N+1):
for j in range(N+1):
if i == 0 or i == N or j == 0 or j == N:
phiprime[i, j] = phi[i, j]
else:
phiprime[i, j] = (phi[i+1, j] + phi[i-1, j] \
+ phi[i, j+1] + phi[i, j-1]) / 4
eps = np.max(np.abs(phi - phiprime))
phiprime , phi = phi , phiprime
HMPH104, U Montpellier Mod�elisation et simulation en physique 180 / 206
Exemple d'un probl�eme aux limites : L'�equation de Laplace en 2D
Solution calcul�ee en � 2 min. avec un portable moderne.
HMPH104, U Montpellier Mod�elisation et simulation en physique 181 / 206
La m�ethode de Jacobi pour des probl�emes aux limites
Propri�et�es de la m�ethode de Jacobi :
M�ethode de relaxation : on cherche un point �xe �� de l'op�erateur a2
4�+ 1 en
l'applicant de fa�con r�ep�et�ee �a l'estimation initiale. Si�a2
4� + 1
��� = ��;
alors ��� = 0.
Proc�edure converge pour toute estimation initiale ) stable.
Deux sources d'erreur num�erique : 1. pr�ecision limit�ee de la solution it�erative et 2.assimilation des d�eriv�ees aux di��erences �nies.
D�esavantage principal : vitesse tr�es m�ediocre.
HMPH104, U Montpellier Mod�elisation et simulation en physique 182 / 206
La m�ethode de surrelaxation successive
Meme principe que pour la m�ethode de Jacobi mais deux am�eliorations :
Pour la m�ethode de Jacobi on avait assimil�e, �a chaque it�eration,
�0(x; y) =1
4(�(x+ a; y) + �(x� a; y) + �(x; y + a) + �(x; y � a))
alors le nouveau � au point (x; y) est la moyenne de l'ancien � aux 4 points voisins.Id�ee (\m�ethode de Gauss-Seidel") : calculer cette moyenne avec le nouveau � (pourles points voisins o�u il est d�ej�a connu) ) meilleure approximation
points qui restentà calculer
points déjà calculés
Surrelaxation : pour acc�el�erer la convergence, on choisit ! > 0 et on remplace
�(x; y) 1 + !
4(�(x+ a; y) + �(x� a; y) + �(x; y + a) + �(x; y � a))�!�(x; y)
HMPH104, U Montpellier Mod�elisation et simulation en physique 183 / 206
La m�ethode de surrelaxation successive
Algorithme pour la r�esolution de l'�equation de Laplace en 2D :
Commencer avec une estimation pour tous les �(x; y) (pas forcement tr�es pr�ecise)
�A chaque noeud �a l'int�erieur, successivement remplacer
�(x; y) 1 + !
4(�(x+ a; y) + �(x� a; y) + �(x; y + a) + �(x; y � a))� !�(x; y)
M�emoriser l'�ecart maximal �max.
Si �max < �, terminer. Sinon, r�ep�eter.
Remarques
Choix de ! : pour ! < 1 on peut montrer que la m�ethode est stable. Plus ! estgrand, plus la convergence est acc�el�er�ee. Alors on choisira ! < 1 mais proche de 1.
Gauss-Seidel : on n'a plus besoin du tableau �0 ! algorithme plus �economique enm�emoire
Surrelaxation sans Gauss-Seidel ) possibles instabilit�es
HMPH104, U Montpellier Mod�elisation et simulation en physique 184 / 206
La m�ethode de surrelaxation successive
Exercices
R�ealiser un programme qui calcule la solution du probl�eme de p. 177 avec lam�ethode de surrelaxation successive. Exp�erimenter avec plusieurs valeurs de ! et�etudier l'e�et sur la vitesse. Tracer la solution.R�ealiser un programme qui calcule la solution de l'�equation de Poisson en deuxdimensions, �
@2
@x2+
@2
@y2
��(x; y) = ��(x; y)
�0
ou � est une densit�e de charge et �0 est la permittivit�e du vide. Le domaine desolution est un carr�e de 1 m � 1 m dont les bords sont mis �a terre (potentiel 0). �Al'int�erieur � est nulle sauf pour deux carr�es de 20 cm � 20 cm homog�enementcharg�es avec densit�e de charge �1 C m�2. Utiliser la m�ethode de surrelaxationsuccessive.
HMPH104, U Montpellier Mod�elisation et simulation en physique 185 / 206
�Equation matricielle pour les EDP elliptiques
Pour notre exemple l'�equation de Laplace : on �ecrit l'�equation discr�etis�ee de Laplace
�i+1; j + �i�1; j + �i; j+1 + �i; j�1 � 4�i;j = 0 (i; j = 0 : : : N)
On construit un vecteur u = (un) dont les composantes sont les (N � 1)2 inconnues�i; j :
n = i(N + 1) + j
�Equation discr�ete de Laplace (valid�ee par les points �a l'int�erieur, 1 � i � N � 1 et1 � j � N � 1) :
un+N+1 + un�N�1 + un+1 + un�1 � 4un = 0
ou en notation matricielleAu = b
o�u le vecteur b d�epend des conditions aux limites et la matrice A a une structuresp�eciale, voir page suivante.
HMPH104, U Montpellier Mod�elisation et simulation en physique 186 / 206
�Equation matricielle pour les EDP elliptiques
�Equation matricielle :Au = b
o�u
A =
0BBBBB@
T 1
1 T 1
1 T 1
. . .
1 T
1CCCCCA :
Ici 1 = la matrice d'identit�e (N + 1)� (N + 1), et la matrice T est tridiagonale :
T =
0BBBBB@�4 11 �4 1
1 �4 1. . .
1 �4
1CCCCCA
D�eterminer �(x; y) �a l'int�erieur $ r�esoudre cette �equation matricielle
HMPH104, U Montpellier Mod�elisation et simulation en physique 187 / 206
�Equation matricielle pour les EDP elliptiques
On obtient une �equation de structure similaire pour toute autre �equation elliptiqueen d dimensions, discr�etis�ee sur un maillage rectangulaire de N1 � : : :�Nd
Strat�egies :
m�ethodes de relaxation comme Jacobi ou Gauss-Seidel
m�ethodes directes de l'alg�ebre lin�eaire num�erique, sp�ecialis�ees en matrices creuses
analyse de Fourier (d�eveloppement en fonctions propres de l'op�erateur di��erentiel)
HMPH104, U Montpellier Mod�elisation et simulation en physique 188 / 206
Les probl�emes de Cauchy
Probl�eme dynamique pour les �equations paraboliques et hyperboliques :
On sp�eci�e des conditions initiales au temps t = 0, puis on cherche la solution �a0 � t � T .Aux limites spatiales du domaine de solution, on sp�eci�e �egalement des conditionsaux limites.
Ceci su�t (normalement) pour uniquement d�eterminer la solution. Contrairementaux �equations elliptiques, pas de conditions au bord entier du domaine de solution :pas de conditions �a t = T .
Existence/unicit�e/r�egularit�e d'une solution : trouver des conditionsn�ecessaires/su�santes peut etre un probl�eme math�ematique dur (p.ex. �equation deNavier-Stokes. . . )
HMPH104, U Montpellier Mod�elisation et simulation en physique 189 / 206
La m�ethode FTCSExemple d'une EDP parabolique : �equation de chaleur en 1 + 1 dimensions
@�
@t�D@2�
@x2
D = coe�cient de di�usion.
Maillage sur x : N points (xn) �equidistants dans le domaine de solution (distance a).
1 2 3(x , t) (x , t)
1a
2 3
x
t
(x , t)
Approximation des di��erences �nies en espace :
@2�
@x2� �(x+ a; t) + �(x� a; t)� 2�(x; t)
a2
alors il faut r�esoudre le syst�eme de N �equations di��erentielles ordinaires (�n � �(xn))@�n@t
(t) =D
a2(�n+1(t) + �n�1(t)� 2�n(t))
HMPH104, U Montpellier Mod�elisation et simulation en physique 190 / 206
La m�ethode FTCS
@�n@t
(t) =D
a2(�n+1(t) + �n�1(t)� 2�n(t))
Solution avec m�ethode d'Euler. Impr�ecis mais l'erreur est souvent domin�ee par ladiscr�etisation en espace ! pas besoin d'employer une m�ethode d'ordre sup�erieur.(Sinon : m�ethode de Crank-Nicolson, plus tard.)
Pour un incr�ement h en temps :
�n(t+ h) � �n(t) + hD
a2(�n+1(t) + �n�1(t)� 2�n(t))
M�ethode dite foward-time centered-space (FTCS).
HMPH104, U Montpellier Mod�elisation et simulation en physique 191 / 206
Exemple d'un probl�eme de Cauchy : l'�equation de la chaleur
Dans un bateau �a vapeur, la chaudi�ere �eclate et le fond de la chau�erie est couvert avecde l'eau de temp�erature 100� C. Il est construit des panneaux d'acier d'epaisseur 1 cm ; �al'ext�erieur est l'oc�ean de temp�erature 10� C. On cherche le pro�le de temp�erature del'acier en fonction du temps. Initialement �a t = 0 la temp�erature est uniforme et donn�eepar celle de l'eau de mer. Le coe�cient de di�usion de chaleur de l'acier est 4:25 � 10�6m2 s�1.
acier
eau de mer
eau bouillante
1 cmx
On subdivise x en 100 sous-intervalles. On a alors 101 points x0 : : : x100 avecT (x0) = 10� C et T (x100) = 100� C ind�ependemment du temps (conditions aux limites).La temp�erature des points �a l'int�erieur est de 10� C �a t = 0 (conditions initiales).
HMPH104, U Montpellier Mod�elisation et simulation en physique 192 / 206
Exemple d'un probl�eme de Cauchy : l'�equation de la chaleur
import numpy as np
import matplotlib.pyplot as plt
D = 4.25E-6 # coefficient de diffusion
w = .01 # largeur de l'intervalle en x
T0 = 283 # temp�erature �a x=0
T1 = 373 # temp�erature �a x=w
N = 100 # subdivision de l'intervalle
a = w/N # constante de reseau
tmax = 10 # on cherche la solution pour t <= tmax
h = 1.E-3 # incr�ement en temps
t = 0
c = h * D / a**2
# initialiser temp�erature �a t=0
T = np.ones(N+1)
T *= T0
T[N] = T1
# temps interm�ediaires pour trace le profile de T
tplot = [.01, .1, 1, 10]
HMPH104, U Montpellier Mod�elisation et simulation en physique 193 / 206
Exemple d'un probl�eme de Cauchy : l'�equation de la chaleur
# boucle principale
while t < tmax:
T[1:N] = T[1:N] + c * (T[:N-1] + T[2:] - 2 * T[1:N])
for tp in tplot:
if abs(t - tplot) < 0.1 * h:
plt.plot(T)
t += h
plt.show()
�A noter la commandeT[1:N] = T[1:N] + c * (T[:N-1] + T[2:] - 2 * T[1:N])
qui augmente tous les T[n] �a l'int�erieur par c * (T[n-1] + T[n+1] - 2 * T[n]) d'unseul coup.
HMPH104, U Montpellier Mod�elisation et simulation en physique 194 / 206
Exemple d'un probl�eme de Cauchy : l'�equation de la chaleur
HMPH104, U Montpellier Mod�elisation et simulation en physique 195 / 206
Instabilit�e de la m�ethode FTCS
La m�ethode FTCS marche bien pour des simples probl�emes paraboliques, mais elle estinstable pour d'autres probl�emes de Cauchy, par exemple, ceux pour l'�equation d'ondes.Essayons de l'appliquer �a l'�equation d'ondes en une dimension,
@2
@t2�(t; x) = c2
@2
@x2�(x; t) :
Meme strat�egie que pour l'�equation de la chaleur :
discr�etiser l'espace, remplacer @2
@x2par une di��erence �nie �a N points
@2
@x2� � �(x+ a; t) + �(x� a; t)� 2�(x; t)
a2
obtenir alors N EDO coupl�ees en temps (maintenant du second ordre)
@2
@t2�n(t) =
c2
a2(�n+1(t) + �n�1(t)� 2�n(t))
transformer en syst�eme de 2N EDO du premier ordre :
n(t) =@
@t�n(t) ;
@
@t n(t) =
c2
a2(�n+1(t) + �n�1(t)� 2�n(t))
HMPH104, U Montpellier Mod�elisation et simulation en physique 196 / 206
Instabilit�e de la m�ethode FTCS�Equations FTCS :
�n(t+ h) = �n(t) + h n(t)
n(t+ h) = n(t) +hc2
a2(�n+1(t) + �n�1(t)� 2�n(t))
Application : corde vibrante de longueur L avec les deux extr�emit�es �xes (conditions auxlimites) et une forme donn�ee �a t = 0 (condition initiale). On trace la solution �a 4 tempsdi��erents :
Visiblement instable.HMPH104, U Montpellier Mod�elisation et simulation en physique 197 / 206
Analyse de stabilit�e de von Neumann
D�ecomposer �(x; t) en modes de Fourier,
�(x; t) =Xk
ck(t)eikx :
Pour les op�erateurs di��erentiels qui sont diagonaux en espace de Fourier, les modes ne sem�elangent pas et
ck(t+ h) = �k(h; a)ck(t)
Si les facteurs d'ampli�cation �k v�eri�ent j�kj < 1 8 k alors la m�ethode est stable.
C'est le cas, par exemple, pour l'�equation de la chaleur si h < a2
2Dcar
�k = 1� h4Da2
sin2ka
2:
Si pour au moins un k on a j�kj > 1, alors la m�ethode est instable (mode croissantexponentiellement).
Pour un syst�eme de EDP coupl�ees, les �k sont des matrices et les conditions de(in)stabilit�e s'appliquent �a ses valeurs propres. Exemple : �equation d'ondes, les �ksont des matrices 2� 2 agissant sur les modes de Fourier de (�(x; t); (x; t)).Valeurs propres 1� i 2hc
asin ka
2) instable.
HMPH104, U Montpellier Mod�elisation et simulation en physique 198 / 206
M�ethode implicite
Avec la m�ethode d'Euler implicite : �Equations \BTCS" (backward-time centered-space)
�n(t+ h) = �n(t) + h n(t+ h)
n(t+ h) = n(t) +hc2
a2(�n+1(t+ h) + �n�1(t+ h)� 2�n(t+ h))
�n(t+ h) et n(t+ h) ne plus donn�es explicitement en fonction de l'�etat du syst�eme autemps t, mais par un syst�eme de 2N �equations lin�eaires qu'il faut r�esoudre :
0BBBBBBBB@
. . .
�� 0 2� 1 ��1 �h
�� 0 2� 1 ��1 �h
. . .
1CCCCCCCCA�
0BBBBBBBBBBBB@
...�n�1 n�1�n n�n+1 n+1...
1CCCCCCCCCCCCAt+h
=
0BBBBBBBBBBBB@
...�n�1 n�1�n n�n+1 n+1...
1CCCCCCCCCCCCAt
o�u � = hc2=a2. Solution p.ex. avec m�ethode de Gauss, o�u avec des m�ethodes sp�ecialis�eesdes matrices creuses.
HMPH104, U Montpellier Mod�elisation et simulation en physique 199 / 206
M�ethode de Crank-Nicolson
On peut montrer : La m�ethode implicite est toujours stable. Ses d�esavantages sont safaible vitesse (maintenant il faut r�esoudre un syst�eme lin�eaire �a chaque pas) et, pourl'�equation d'ondes, l'amortissement des modes de Fourier (facteurs d'ampli�cation < 1) d�ecroissance exponentielle des modes, toujours pas la solution physique).
Plus e�cace (ordre h2 en temps) et sans ce dernier probl�eme : sch�ema de Crank-Nicolson,on prend la moyenne des formules FTCS et BTCS. Pour l'equation d'ondes :
�n(t+ h) = �n(t) + h1
2( n(t+ h) + n(t))
n(t+ h) = n(t) +hc2
a21
2
��n+1(t+ h) + �n�1(t+ h)� 2�n(t+ h)
+ �n+1(t) + �n�1(t)� 2�n(t)�
Comme pour la m�ethode implicite, il faut r�esoudre ce syst�eme d'�equations lin�eaires a�nde trouver �n(t+ h) et n(t+ h).
HMPH104, U Montpellier Mod�elisation et simulation en physique 200 / 206
M�ethode de Crank-Nicolson�Equations de Crank-Nicolson pour l'�equation d'ondes en forme matricielle : On pose
u(t) =
0BBBBBBBBB@
�0(t) 0(t)�1(t) 1(t)...
�N (t) N (t)
1CCCCCCCCCA
�Equations de CN :A � u(t+ h) = B � u(t)
o�u
A =
0BBBBBBBB@
. . .
�� 0 2� 1 ��1 �h=2
�� 0 2� 1 ��1 �h=2
. . .
1CCCCCCCCA;
� = hc2=2a2, et B = A avec les remplacements h ! �h, � ! ��.HMPH104, U Montpellier Mod�elisation et simulation en physique 201 / 206
M�ethode de Crank-Nicolson
�Equations de Crank-Nicolson pour l'�equation d'ondes en forme matricielle :
A � u(t+ h) = B � u(t)Les matrices A et B ont une structure creuse : presque tous les �el�ements sont z�ero saufceux proche de la diagonale. Des m�ethodes sp�ecialis�ees peuvent donc r�esoudre les�equations de CN en temps de calcul �(N) (plutot que �(N3) pour des m�ethodesg�en�erales, par exemple l'�elimination de Gauss).
Parce qu'on n'a pas discut�e les m�ethodes d'alg�ebre lin�eaire num�erique, on va pourtant seservir de la m�ethode numpy.linalg.solve() (ine�cace pour des matrices creuses) pourr�esoudre les �equations de CN dans notre exemple.
Algorithme :
Initialiser le vecteur u et construire les matrices A et B
�A chaque t, r�esoudre les �equations de CN pour obtenir u(t+ h). Les �el�ements �0, 0, �N et N sont toujours donn�es par les conditions aux limites.
HMPH104, U Montpellier Mod�elisation et simulation en physique 202 / 206
M�ethode de Crank-Nicolson
Initialisation :
import numpy as np
import matplotlib.pyplot as plt
L = .3 # longueur de la corde
c = 100. # vitesse de phase
N = 100 # subdivision de l'intervalle
a = L/N # constante de reseau
tmax = .1 # on cherche la solution pour t <= tmax
h = 1.E-4 # incr�ement en temps
hbar = 1.0545718E-34
alpha = h * c**2 / 2 / a**2
# profil initial
u = np.zeros (2*N + 2)
for k in range(1, N+1):
u[2*k] = np.sin(k / N * np.pi) * k / N / 100
tplot = [0, .01, .02, .03] # temps pour tracer profile
HMPH104, U Montpellier Mod�elisation et simulation en physique 203 / 206
M�ethode de Crank-NicolsonConstruction des matrices :
A = np.zeros ([2*N + 2, 2*N + 2])
B = np.zeros ([2*N + 2, 2*N + 2])
# Blocs 2x2 en haut �a gauche et en bas �a droite = identit�e
# (conditions aux limites)
A[0, 0] = A[1, 1] = A[2*N, 2*N] = A[2*N + 1, 2*N + 1] = 1.0
B[0, 0] = B[1, 1] = B[2*N, 2*N] = B[2*N + 1, 2*N + 1] = 1.0
# Les autres �el�ements:
for i in range(2, 2*N):
A[i, i] = 1.0
B[i, i] = 1.0
if i % 2 == 0: # �el�ements pairs = phi_n
A[i, i+1] = -h/2
B[i, i+1] = h/2
else: # �el�ements impairs = psi_n
A[i, i+1] = -alpha
B[i, i+1] = alpha
A[i, i-1] = 2* alpha
B[i, i-1] = -2*alpha
A[i, i-3] = -alpha
B[i, i-3] = alpha
HMPH104, U Montpellier Mod�elisation et simulation en physique 204 / 206
M�ethode de Crank-NicolsonBoucle principale :
t = 0.0
while t < tmax:
# �a d�efaut d'un r�esolveur efficace des syst�emes creuses:
# utiliser numpy.linalg.solve () pour la demonstration
u = np.linalg.solve(A, np.dot(B, u))
t += h
R�esultat : plus d'instabilit�e (mais on note l'erreur num�erique apr�es 5 p�eriodes !)
HMPH104, U Montpellier Mod�elisation et simulation en physique 205 / 206
�Equations di��erentielles partielles
On n'a pas trait�e :
Presque tout | des livres et biblioth�eques enti�eres existent sur ce sujet.
Autres m�ethodes dans la classe des m�ethodes des di��erences �nies : \staggeredleapfrog", m�ethodes de Lax et Lax-Wendro�, . . .
Autres classes de m�ethodes : �El�ements �nis, m�ethodes spectrales, . . .
Applications �a la dynamique des uides, l'�electrodynamique, la relativit�e g�en�erale,. . .
HMPH104, U Montpellier Mod�elisation et simulation en physique 206 / 206