Méthodes numériques pour équations différentielles
Méthodes numériques pour équations différentielles
Objectifs du cours 3
Méthodes à un pas 6
Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Définition implicite de Φ . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Analyse d’erreur 9
Erreur de troncature locale . . . . . . . . . . . . . . . . . . . . . . . . 9
Consistance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Condition nécessaire et suffisante de consistance . . . . . . . . . . 10
Condition nécessaire et suffisante de consistance d’ordre ≥ p . . . 12
Stabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Stabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Condition suffisante de stabilité . . . . . . . . . . . . . . . . . . . 14
Convergence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Convergence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Théorème de Lax . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Condition suffisante de convergence . . . . . . . . . . . . . . . . . 15
Erreurs d’arrondi et pas optimal . . . . . . . . . . . . . . . . . . . . . 16
∗ Ce document est un des produits du projet m boisgera/CDIS, initié par la collaboration de
1
Annexe – Choix du pas de temps 16
Pas fixe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Adaptation du pas de temps . . . . . . . . . . . . . . . . . . . . . . . . 17
Projet numérique 19
Exercices 21
Consistance et ordre de schémas . . . . . . . . . . . . . . . . . . . . . 21
Convergence de schémas . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Explicite ou implicite ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Euler symplectique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Corrections 23
Consistance et ordre de schémas . . . . . . . . . . . . . . . . . . . . . 23
Convergence de schémas . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Explicite ou implicite ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Euler symplectique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Références 29
Introduction
Ce chapitre est consacré à la résolution numérique d’équations différentielles
ẋ = f (t, x) , x(t0 ) = x0 .
2
Même si la méthode d’Euler suffit dans les cas simples, elle exige parfois de
recourir à des pas très faibles pour obtenir une précision acceptable sur des
temps longs (voir Systèmes raides (p. 4)). Parfois, le compromis entre précision à
chaque itération et accumulation des erreurs d’arrondis devient même impossible.
De plus, cette méthode n’est pas adaptée à la simulation de certains systèmes
dont certaines propriétés cruciales (comme la conservation de l’énergie) ne sont
pas préservées (voir Systèmes Hamiltoniens (p. 5)). Au cours des derniers siècles,
les scientifiques ont donc progressivement développé des méthodes de plus en
plus complexes et performantes : schémas multi-pas d’ordre supérieur, méthodes
implicites, variation du pas, schémas symplectiques etc.
En fait, dans l’histoire des équations différentielles, c’est souvent la mécanique
céleste qui a été motrice des plus grandes avancées. Au milieu du XIXe siècle,
les astronomes Adams et Le Verrier prédisent mathématiquement l’existence
et la position de la planète Neptune et l’on entend parler pour la première
fois de méthodes multi-pas. Ensuite, les progrès se sont enchaînés au rythme
des modèles physiques. La première tendance a été de rechercher des schémas
permettant toujours plus de précision à pas plus grand. Parmi les dates clés, on
peut citer la publication en 1895 de la première méthode de Runge-Kutta par
Runge, puis en 1901, de la populaire méthode de Runge-Kutta d’ordre 4 par
Kutta, et ensuite en 1910, de l’extrapolation de Richardson permettant la montée
en ordre et donc le recours à des pas plus grand pour une même précision. Mais
au milieu du XXe siècle, on découvre des systèmes, dits raides (Hirschfelder,
1952), pour lesquels cette montée en ordre ne suffit pas et pour lesquels il faut
repenser de nouveaux schémas (Dalquist, 1968). Enfin, à partir des années 80,
les scientifiques développent l’intégration numérique géométrique, c’est-à-dire
qui préservent les propriétés structurelles du système (symétrie, conservation
d’énergie etc.), utile en particulier pour la simulation des systèmes hamiltoniens.
Objectifs du cours
Ce cours a pour but de sensibiliser aux problèmes apparaissant lors de la
simulation numérique des solutions d’équations différentielles, et de donner les
bases d’analyse d’erreur numérique. Pour un exposé plus approfondi, on pourra
par exemple se référer à (Demailly 2006).
En première lecture :
— comprendre les limites d’un schéma d’Euler.
— comprendre qu’un schéma numérique à un pas consiste à discrétiser une
intégrale, en connaître quelques-uns autres que le schéma d’Euler.
— comprendre les notions de consistance/convergence d’un schéma et leur
ordre. Savoir montrer que le schéma d’Euler explicite est convergent
d’ordre 1.
En deuxième lecture :
3
— comprendre comment fonctionne un schéma implicite et comment l’implé-
menter.
— comprendre que la convergence est la combinaison de deux concepts : la
consistance et la stabilité ; savoir utiliser ces notions pour évaluer l’impact
des erreurs d’arrondi.
— savoir calculer l’ordre de consistance et montrer la convergence de schémas
de base.
— comprendre l’apport de schémas symplectiques pour les systèmes hamil-
toniens.
Systèmes raides
4
qui explose lorsque mk
ρ2 tend vers 0. Par exemple, lorsque les frottements sont
très grands par rapport à la raideur du ressort, ou bien lorsque ρ et k sont du
même ordre de grandeur et très grands.
Plus généralement, la coexistence de dynamiques très lentes à très rapides
apparaît en cinétique chimique ou en biologie. La réaction de Robertson (1966)
0.04
A −→ B (lente)
3×107
B + B −→ B + C (très rapide)
4
10
B + C −→ A + C (rapide)
modélisée par
en est un exemple classique, souvent utilisée pour tester les schémas numériques.
Il s’avère que pour ces systèmes, des schémas dits implicites performent beaucoup
mieux car ils autorisent l’utilisation de pas plus grands pour une même précision
et plus de stabilité (voir l’exercice Explicite ou Implicite? (p. 21)). Pour plus
de détails voir (Hairer and Wanner 1996). L’impossibilité de trouver un pas
approprié avec un schéma d’Euler explicite pour ce système est aussi illustré
dans le notebook Equations Differentielles [Link].
Systèmes hamiltoniens
1. Pour obtenir l’hamiltonien, on commence par définir le lagrangien L(t, q, q̇), puis la
quantité de mouvement p = ∇q̇ L(t, q, q̇), et enfin l’hamiltonien H(t, q, p) est obtenu par
transformée de Legendre. Notons que dans ce cas général où H peut dépendre explicitement
du temps (par exemple si de l’énergie est injectée ou prélevée par une action extérieure au
d
système), on a dt H(t, q(t), p(t)) = ∇t H(t, q(t), p(t)), donc l’hamiltonien varie selon cet effet
extérieur, et n’est plus constant.
5
où qi ∈ R3 désigne la position de chaque corps, mi sa masse, et pi = mi q̇i ∈ R3
sa quantité de mouvement. Le comportement de chaque corps est alors régi par
la dynamique hamiltonienne 2
1
q̇i = ∇pi H(q, p) = pi
mi
X mi mj
ṗi = −∇qi H(q, p) = −G (qi − qk )
kqi − qk k3
k6=i
Méthodes à un pas
Principe
Pour approximer les solutions d’une équation différentielle sur un intervalle [0, T ],
les méthodes numériques à un pas se basent sur la représentation intégrale
Z t J−1
X Z tj+1
x(t) = x0 + f (s, x(s))ds = x0 + f (s, x(s))ds
t0 j=0 tj
où Fk sont les forces de gravitation exercées par chaque corps k sur le corps i.
6
où t0 < t1 < . . . < tJ avec tJ = T . L’idée est d’approximer les intégrales
R tj+1
tj
f (s, x(s)) sur des intervalles [tj , tj+1 ] suffisamment petits.
Exemples
1. Méthodes explicites:
— Euler explicite: l’intégrale est approximée par l’aire d’un rectangle
déterminé par la valeur initiale de f à gauche de l’intervalle, i.e.
et on pose
F1 + 2F2 + 2F3 + F4
xj+1 = xj + ∆t .
6
7
2. Méthodes implicites:
— Euler implicite : l’intégrale est approximée par l’aire d’un rectangle
déterminé par la valeur finale de f à droite de l’intervalle, i.e.
tj + tj+1 xj + xj+1
xj+1 = xj + ∆tj f , .
2 2
On peut bien sûr construire des méthodes plus compliquées et plus précises pour
des méthodes de Runge–Kutta d’ordre supérieur (explicites ou implicites).
Définition implicite de Φ
Dans les schémas implicites, l’application Φ est définie de manière implicite. Par
exemple, pour le schéma d’Euler, on a :
Φ(tj , xj , ∆tj ) = f tj + ∆tj , xj + ∆tj Φ(tj , xj , ∆tj ) .
Il faut donc s’assurer que Φ est bien définie, c’est-à-dire qu’il existe bien xj+1
tel que
xj+1 = xj + ∆tj f (tj+1 , xj+1 ) .
Pour cela, nous pouvons voir xj+1 comme le point fixe de l’application Fj définie
par
Fj (x) = xj + ∆tj f (tj+1 , x) .
à xj , ∆tj , tj+1 fixés. L’existence (et l’unicité) de ce point fixe peut alors être
démontrée par le théorème de point fixe de Banach. Si x 7→ f (tj+1 , x) est
Lipschitzienne, c’est-à-dire s’il existe Lj tel que
8
En pratique, on peut utiliser la méthode itérative de construction de ce point
fixe donnée par la preuve du théorème pour approcher xj+1 . Une stratégie est
de partir de la valeur donnée par le schéma d’Euler explicite
xj,k+1 = F (xj,k )
xj,k+1 − xj,k
xj,0
devienne inférieure à un seuil choisi par l’utilisateur. Puisque la suite (xj,k )k∈N
est de Cauchy, on sait que cette algorithme s’arrête en un nombre fini d’itérations.
Un tel schéma est plus lourd en terme de calculs qu’un algorithme explicite mais
il apporte en général plus de stabilité et permet souvent d’utiliser un pas plus
grand. C’est en particulier utile pour les systèmes raides, comme illustré dans
l’exercice Explicite ou Implicite? (p. 21).
Analyse d’erreur
L’objectif de l’analyse d’erreur a priori est de donner une estimation de l’erreur
commise par la méthode numérique en fonction des paramètres du problème
(temps d’intégration, pas de temps, propriétés de f ). L’idée générale est de
remarquer qu’à chaque pas de temps, on commet une erreur d’intégration locale
(erreur de troncature dans la discrétisation de l’intégrale, à laquelle s’ajoutent
souvent des erreurs d’arrondi), et que ces erreurs locales s’accumulent au fil
des pas. Le contrôle de cette accumulation demande l’introduction d’une notion
de stabilité adéquate, alors que les erreurs locales sont liées à une notion de
consistance. L’alliance de stabilité et de consistante donne une propriété de
convergence qui est souhaitée lors de l’implémentation de méthodes numériques.
L’erreur de troncature locale à l’itération j est l’erreur que l’on commet en une
seule itération lors de l’approximation de l’intégrale pour passer de xj à xj+1 .
C’est donc l’erreur théorique que l’on obtiendrait si l’on appliquait le schéma
numérique à la solution exacte x(tj ). Elle est ainsi définie comme
9
Définition – Consistance
et qu’elle est consistante d’ordre ≥ p s’il existe une constante cs telle que, pour
tout 0 ≤ j ≤ J − 1,
kη j+1 k ≤ cs (∆tj )p .
Une méthode est donc consistante d’ordre p si elle est consistante d’ordre ≥ p,
mais pas ≥ p + 1.
Si le schéma est consistant alors cette erreur tend vers 0 lorsque ∆t tend vers 0
(pour n’importe quel système et n’importe quelle trajectoire). Or,
Z tj +∆t
1
lim f (s, x(s))−Φ(tj , x(tj ), ∆tj ) ds = f (tj , x(tj ))−Φ(tj , x(tj ), 0)
∆t→0 ∆tj tj
10
Donc Z tj+1
1
kη j+1 k ≤ ε + f (s, x(s)) − f (tj , x(tj )) ds .
∆tj tj
Puisque s 7→ f (s, x(s)) est continue sur l’intervalle fermé et borné [0, T ], elle y
est uniformément continue, donc il existe ∆2 > 0 tel que si ∆t ≤ ∆2 ,
Or, si f est C 1 , alors x est C 2 et par application la formule de Taylor avec reste
intégral, on a
Z 1
x(tj + ∆tj ) = x(tj ) + ∆tf (tj , x(tj )) + ∆t2j ẍ(tj + s∆tj )(1 − s)ds,
0
11
en utilisant ẋ(tj ) = f (tj , x(tj )). Ceci donne donc
Z 1
∆tj ∆tj
kη j+1 k ≤ ∆tj ẍ(tj +s∆tj )(1−s)ds ≤ max kẍ(t)k ≤ max kẍ(t)k .
0 2 t∈[tj ,tj+1 ] 2 t∈[0,T ]
Le schéma d’Euler explicite est donc consistant d’ordre ≥ 1 avec
maxt∈[0,T ] kẍ(t)k
cs = .
2
12
Il s’ensuit que
p−1
∆tkj ∂kΦ
X 1
η j+1 = f [k] (tj , x(tj )) − (t j , x(tj ), 0) + ∆tpj Rj
k=0
k! k+1 ∂∆tk
∂pΦ
où Rj est borné (uniformément en ∆tj ) par continuité de ∂∆tp et x(p+1) .
η j+1
Maintenant, si le schéma est d’ordre ≥ p, alors ∆tp
doit rester borné lorsque
j
∆tj tend vers 0 et on obtient bien la condition du théorème. Réciproquement, si
la condition du théorème est vérifiée, on obtient directement que η j+1 est borné
en ∆tpj .
Stabilité
Une fois que l’on a étudié l’erreur locale commise en une itération, on s’intéresse
à la manière dont elle va se propager au fur et à mesure des itérations. Pour cela,
la notion de stabilité quantifie la robustesse de l’approximation numérique par
rapport à l’accumulation des erreurs locales et perturbations.
Définition – Stabilité
On dit qu’une méthode numérique est stable s’il existe une constante S(T ) > 0
(indépendente des ∆tj ) telle que, pour toutes suites x = {xj }1≤j≤J et z =
{z j }1≤j≤J vérifiant
( j+1
x = xj + ∆tj Φ(tj , xj , ∆tj ),
z j+1 = z j + ∆tj Φ(tj , z j , ∆tj ) + δ j+1 ,
13
on ait
J
X
max kxj − z j k ≤ S(T ) kx0 − z 0 k + kδ j k .
1≤j≤J
j=1
Démonstration On a alors
Il s’ensuit que
j
!
X
j j TL 0 0 k
kx − z k ≤ e kx − z k + kδ k ,
k=1
Convergence
Définition – Convergence
14
lorsque x0 = x(t0 ). S’il existe p ∈ N>0 et cv > 0 (indépendent de ∆t) tel que
max kxj − x(tj )k ≤ cv (∆t)p
1≤j≤J
et par consistance
J
X
kxj − x(tj )k ≤ S(T ) cs ∆tj−1 (∆tj−1 )p ≤ cs S(T ) T (∆t)p .
j=1
L’inconvénient du théorème de Lax est qu’il faut prouver la stabilité pour obtenir
la convergence. Or la seule condition suffisante dont nous disposions à cet effet,
est le caractère globalement Lipschitzien de x 7→ Φ(t, x, ∆t). Mais il s’agit d’une
condition très forte. En fait, il est possible de prouver la convergence sous la
condition plus faible que x 7→ Φ(t, x, ∆t) est “localement Lipschitzienne” :
Si
Alors il existe un pas de temps maximal ∆tmax > 0 tel que le schéma est
convergent d’ordre p.
L’hypothèse 2. est en particulier vérifiée si x 7→ Φ(t, x, ∆t) est C 1 d’après une
version un peu plus générale du théorème des accroissement finis.
15
Exemple – Convergence du schéma d’Euler explicite On a déjà montré
que le schéma d’Euler explicite est consistant d’ordre 1. Par ailleurs, si f est C 1
par rapport à x, alors x 7→ Φ(t, x) = f (t, x, ∆t) est C 1 . Donc d’après le théorème
précédent, le schéma est convergent d’ordre 1.
au lieu de
xj+1 = xj + ∆tj Φ(tj , xj , ∆tj ) ,
où ρ modélise l’erreur commise sur le calcul de Φ et l’erreur sur l’addition
finale. La stabilité nous donne alors l’écart
J
X
j j
max kx − x̂ k ≤ S(T ) ∆tj−1 kρj k + kεj k .
0≤j≤J
j=1
16
mais il est difficile de savoir à l’avance quel pas est nécessaire. En particulier,
comment savoir si la solution obtenue est suffisamment précise, sans connaître la
vraie ?
Pas fixe
Une voie empirique est de fixer un pas, lancer la simulation, puis fixer un pas
plus petit, relancer la simulation, jusqu’à ce que les résultats ne semble plus
changer (au sens de ce qui nous intéresse d’observer). Notons que la connaissance
des constantes de temps présentes dans le système peut aider à fixer un premier
ordre de grandeur du pas. On pourrait aussi directement choisir le pas ∆topt
obtenu plus haut en prenant en compte les erreurs d’arrondis. Mais les constantes
cv et S(T ) sont souvent mal connues et conservatives.
17
En d’autre termes, Tolg nous fixe une erreur maximale locale sur η j ,
à chaque itération. Notons cependant que cette borne ne prend pas en
compte la propagation des erreurs d’arrondis : plus ∆t diminue, plus
l’erreur globale risque d’augmenter. Ce phénomène devrait donc en toute
rigueur aussi nous donner un pas de temps minimal ∆tmin . Notons que
tous ces calculs dépendent des constantes cv et S(T ) qui sont souvent
mal connues ou très conservatives.
— erreur (absolue) locale ? A chaque itération, une erreur locale est commise
dûe à l’approximation de l’intégrale. Cette erreur est donnée par
!
Z tj+1
ej+1 = x̃(tj+1 ) − xj+1 = xj + f (s, x̃(s))ds
tj
kej+1 k
≤ Tolrel .
kxj k
Par défaut, dans les solvers de Numpy, Tolabs = 10−6 et Tolrel = 10−3 .
Mais pour cela nous devons trouver un moyen d’estimer l’erreur locale. C’est
souvent fait en utilisant une même méthode à deux pas différents (par exemple
∆tj et ∆tj /2), ou bien en imbriquant des schémas de Runge-Kutta d’ordres
différents.
En fait, il est possible de montrer (exercice) que si f est C 1 , on a pour un schéma
d’Euler explicite
18
d’adaptation est de prendre
r
Tolabs
∆tnew = ∆tj
kej+1 k
(éventuellement avec une marge de sécurité)
La fonction correspondante
def solve_euler_explicit_variable_step(f, x0, t0, tf, dtmin, dtmax, atol):
...
return t, x
est fournie dans le notebook Equations Differentielles [Link].
Projet numérique
Les équations de Lotka-Volterra, ou “modèle proie-prédateur”, sont couramment
utilisées pour décrire la dynamique de systèmes biologiques dans lesquels un
prédateur et sa proie interagissent dans un milieu commun. Elles ont été proposées
indépendamment par A. J. Lotka en 1925 et V. Volterra en 1926 et s’écrivent de
la manière suivante :
ẋ1 = x1 (α − βx2 )
ẋ2 = −x2 (γ − δx1 )
19
On souhaite maintenant simuler numériquement les trajectoires.
20
Exercices
Convergence de schémas
Sous l’hypothèse que f est C 1 , montrer que les schémas de Heun et d’Euler
implicite sont convergents. (Solution p. 26.)
Explicite ou implicite ?
21
Question 2 Lorsqu’on modélise des systèmes chimiques ou biologiques, on
obtient souvent des réactions aux constantes de temps très différentes. Vaut-il
mieux utiliser un schéma d’Euler implicite ou explicite pour simuler
−1 0
ẋ = x
0 −µ
Euler symplectique
de condition initiale x(0) = (1, 0). On rappelle que pour une suite de la forme
xj+1 = Axj converge vers 0 si les valeurs propres de A sont à l’intérieur du cercle
unité et diverge si au moins une valeur propre est à l’extérieur.
Question 1 Montrer que pour n’importe quel pas ∆t fixé, un schéma d’Euler
explicite donne une solution divergente, et un schéma d’Euler implicite donne
une solution qui converge vers 0. Lequel a raison ? (Solution p. 28.)
On définit maintenant le schéma suivant qui “mélange’ ’ les schémas d’Euler
implicites et explicites :
xj+1
1 = xj1 + ∆t xj2
xj+1
2 = xj2 − ∆t ω 2 xj+1
1
q̇ = ∇p H(q, p)
ṗ = −∇q H(q, p)
22
où (q, p) ∈ RN × RN sont les positions généralisées et quantités de mouvement,
H est le Hamiltonien que l’on pourra vérifier être conservé le long des trajectoires.
(Solution p. 29.)
A noter que les conclusions de cet exercice sont les mêmes si l’on utilise un schéma
d’Euler implicite sur la première composante et un schéma d’Euler explicite sur
la deuxième. Ces deux schémas s’appellent respectivement Euler symplectique A
et B.
Corrections
d
ẍ(t) = f (t, x(t)) = ∂t f (t, x(t)) + ∂x f (t, x(t))ẋ(t)
dt
= ∂t f (t, x(t)) + ∂x f (t, x(t))f (t, x(t)).
On a donc
f [1] (t, x) = ∂t f (t, x) + ∂x f (t, x)f (t, x)
et la formule de Taylor le long des solutions donne
Or,
f tj+1 ,x(tj ) + ∆tf (tj , x(tj ))
= f (tj , x(tj )) + ∂t f (tj , x(tj ))(tj+1 − tj ) + ∂x f (tj , x(tj ))∆tf (tj , x(tj )) + O(∆t2 )
= f (tj , x(tj )) + ∆t ∂t f (tj , x(tj )) + ∂x f (tj , x(tj ))f (tj , x(tj )) + O(∆t2 ).
23
On en déduit que η j+1 = O(∆t2 ) en utilisant (1). Donc on a une consistance
d’ordre ≥ 2.
Sinon il suffit de constater que
∂Φ 1
Φ(t, x, 0) = f (t, x) , (t, x, 0) = f [1] (t, x) .
∂∆t 2
2
∂ Φ 1 [2]
Par contre, si f est C 3 , ∂∆t 2 (t, x, 0) 6= 3 f (t, x) donc le schéma n’est pas d’ordre
3 et donc il est d’ordre égal exactement à 2.
f (tj+1 , xj+1 ) = f (tj , x(tj )) + ∂t f (tj , x(tj ))(tj+1 − tj ) + ∂x f (tj , x(tj ))(xj+1 − x(tj )) + O(khk2 )
= f (tj , x(tj )) + O(∆t)
24
Question 3 Pour la méthode des trapèzes, on a l’erreur
∆t
x(tj+1 ) − x(tj ) − f (tj , x(tj )) + f (tj+1 , xj+1 )
η j+1 = 2
,
∆t
où xj+1 est solution de
∆t
xj+1 = x(tj ) + f (tj , x(tj )) + f (tj+1 , xj+1 ) .
2
Cette fois-ci on voudrait montrer que xj+1 = x(tj ) + ∆tf (tj , x(tj )) + O(∆t2 ).
Pour cela, on redéfinit
∆t
f (tj , x(tj )) + f (tj + ∆t, xj+1 )
F (x, ∆t) = x − x(tj ) +
2
qui est de classe C 1 . On a alors
Il s’ensuit que
f (tj+1 , xj+1 ) = f (tj , x(tj ))+∆t (∂t f (tj , x(tj )) + ∂x f (tj , x(tj ))f (tj , x(tj )))+O(∆t2 )
soit
∆t2
xj+1 = x(tj )+∆tf (tj , x(tj )+ (∂t f (tj , x(tj )) + ∂x f (tj , x(tj ))f (tj , x(tj )))+O(∆t3 )
2
25
où xj+1 est solution de
∆t x(tj ) + xj+1
j+1
x = x(tj ) + ∆tf tj + , .
2 2
On montre de la même façon qu’à la question précédente que pour ∆t suffisam-
ment petit, xj+1 = x(tj ) + ∆tf (tj , x(tj )) + O(∆t2 ) et donc
∆t x(tj ) + xj+1
f tj + ,
2 2
x(tj ) + xj+1
∆t
= f (tj , x(tj )) + ∂t f (tj , x(tj )) + ∂x f (tj , x(tj )) − x(tj ) + O(khk2 )
2 2
∆t
= f (tj , x(tj )) + (∂t f (tj , x(tj )) + ∂x f (tj , x(tj ))f (tj , x(tj ))) + O(∆t2 )
2
x(tj )+xj+1
avec l’incrément h = ∆t 2 , 2 − x(t j ) , soit
∆t2
xj+1 = x(tj )+∆tf (tj , x(tj )+ (∂t f (tj , x(tj ))+∂x f (tj , x(tj ))f (tj , x(tj )))+O(∆t3 )
2
On en déduit donc η j+1 = O(∆t2 ).
Question 5 On vérifie que le critère est vérifié pour 0 ≤ k ≤ 3 mais pas pour
k = 4!
Convergence de schémas
Tout d’abord, dans l’exercice précédent, nous avons montré que les schémas de
Heun et d’Euler implicite étaient consistants d’ordre 2 et 1 respectivement. Il ne
nous reste donc plus qu’à montrer que Φ est localement lipschitzienne (ou C 1 )
par rapport à x pour ∆t suffisamment petit, pour en déduire la convergence à
l’ordre 2 et 1 respectivement.
Pour le schéma de Heun,
1
Φ(t, x, ∆t) = f (t, x) + f t + ∆t, x + ∆tf (t, x)
2
donc Φ est C 1 par rapport à x si f l’est.
Prenons maintenant le schéma d’Euler implicite. Pour ∆t ≤ ∆tm , Φ est définie
par
Φ(t, x, ∆t) = f t + ∆t, x + ∆tΦ(t, x, ∆t) .
Soit B un compact de Rn . Soit B 0 un compact tel que x + ∆tΦ(t, x, ∆t) ∈ B 0
pour tout x ∈ B, tout t ∈ [0, T ] et tout ∆t ∈ [0, ∆tm ]. Puisque f est continue,
et C 1 par rapport à x, il existe Lf > 0 tel que
kf (t, xa ) − f (t, xb )k ≤ Lf kxa − xb k ∀(xa , xb , t) ∈ B 0 × B 0 × [0, T + ∆tm ] .
26
Ceci est vrai par le théorème des accroissements finis appliqué à x 7→ f (t, x) et
pour t dans un intervalle fermé et borné. Prenons maintenant (xa , xb ) ∈ B × B,
t ∈ [0, T ] et ∆t ∈ [0, ∆tm ], alors
soit
Lf
kΦ(t, xa , ∆t) − Φ(t, xb , ∆t)k ≤ kxa − xb k
1 − Lf ∆t
si ∆t < 1/Lf . Donc Φ est bien localement lipschitzienne par rapport à x.
Explicite ou implicite ?
soit λ
T T
xJ = (1 − λ∆t)J = (1 − λ∆t) ∆t = (1 − λ∆t) λ∆t .
On a bien
lim xJ = e−λT .
∆t→0
Cependant, il faut |1 − λ∆t| < 1 pour que la solution converge au moins vers
0. Sinon, pour λ∆t = 2, xJ = (−1)J , qui n’a rien à voir avec la solution. Pire,
pour λ∆t = 2, l’algorithme diverge. Il faut donc adapter ∆t à la constante de
temps λ du système. Ceci peut poser problème lorsque l’on simule des systèmes
sur des temps longs (par rapport à λ)
De l’autre côté, le schéma d’Euler implicite donne
xj+1 = xj − λ∆txj+1
soit
1 1
xJ = = T
(1 + λ∆t)J (1 + λ∆t) ∆t
qui tend vers 0 quelque soit le pas ∆t ! On parle de stabilité inconditionnelle.
Ceci est très pratique pour des simulations sur temps longs, où la condition
λ∆t < 1 est trop contraignante.
27
Prenons maintenant ẋ = λx, x(0) = 1, dont la solution exacte est x(t) = eλt .
Cette fois-ci, Euler explicite donne
T
xJ = (1 + λ∆t) ∆t
qui fait maintenant sens même pour des pas grands. Par contre, Euler implicite
donne
1
xJ = T
(1 − λ∆t) ∆t
qui n’est pas défini pour λ∆t = 1 et qui explose pour des valeurs proche de 1.
Euler symplectique
28
2 4
est constante. Pour ω 2 − ∆t4ω > 0, soit ω∆t < 2, cette matrice est définie
positive, donc les solutions restent sur une ellipse. Cette ellipse se rapproche
de la vraie solution lorsque ∆t tend vers 0. Ce schéma est donc approprié pour
simuler les trajectoires sur un temps long.
Références
Demailly, J.-P. 2006. Analyse Numérique et équations Différentielles. EDP
Sciences. Grenoble Sciences.
Hairer, E., C. Lubich, and G. Wanner. 2010. Geometric Numerical Integration :
Structure-Preserving Algorithms for Ordinary Differential Equations. Edited
by Springer Series in Computational Mathematics. 2nd ed. Springer-Verlag,
Berlin.
Hairer, E., and G. Wanner. 1996. Solving Ordinary Differential Equations II.
Stiff and Differential-Algebraic Problems. Edited by Springer Series in Com-
putational Mathematics. 2nd ed. Springer-Verlag, Berlin.
29