Problème de Cauchy, méthode d'Euler explicite et implicite, méthodes de Runge-Kutta, erreur locale et globale, consistance, stabilité et convergence.
Objectifs du chapitre
À la fin de ce chapitre, vous serez capable de:
énoncer le problème de Cauchy et la condition de Lipschitz qui en garantit l'existence et l'unicité, et distinguer en permanence la valeur calculée yn de la valeur exacte y(tn);
construire la méthode d'Euler explicite de trois manières — différence finie, développement de Taylor, quadrature de la forme intégrale — et dire laquelle des trois se généralise;
écrire et programmer Euler implicite, la méthode du trapèze, Heun et RK4, avec leur tableau de Butcher, et chiffrer ce que coûte un pas de chacune;
définir l'erreur locale de troncature et l'erreur globale, démontrer que consistance et stabilité entraînent la convergence, et en déduire l'ordre 1 d'Euler;
lire un ordre de convergence sur un tableau de rapports et sur un graphique log–log, et reconnaître qu'un rapport de 1,90 est la signature d'un ordre 1, non d'un défaut;
contrôler le pas par une paire emboîtée, et ramener un système ou une équation d'ordre supérieur — l'oscillateur amorti d'Analyse II, par exemple — à un problème du premier ordre vectoriel.
Le problème de Cauchy
Vous avez rencontré les équations différentielles ordinaires en Analyse II, chapitre 1, du point de vue de la résolution exacte: variables séparables, équations linéaires du premier ordre, équations linéaires du second ordre à coefficients constants. Ce chapitre commence là où celui-là s'arrête, c'est-à-dire presque tout de suite: la très grande majorité des équations différentielles issues de la physique, de la chimie ou de la biologie n'admettent aucune solution en termes de fonctions élémentaires. Pour celles-là — et elles sont la règle — on calcule.
Avant de calculer quoi que ce soit, il faut savoir qu'il y a quelque chose à calculer: une solution, et une seule. C'est l'objet du théorème suivant, dont l'hypothèse porte sur la régularité de f par rapport à sa seconde variable.
Ce théorème est admis, et il faut dire pourquoi. Sa démonstration réécrit (9.1) sous la forme intégrale y(t)=y0+∫atf(s,y(s))ds, puis construit la solution comme point fixe de l'opérateur qui à une fonction continue associe le membre de droite; la condition (9.2) fait de cet opérateur une contraction sur un espace de fonctions continues, et le théorème du point fixe de Banach conclut. L'outil est donc le même que celui du chapitre 2 de ce cours — le théorème du point fixe — mais appliqué dans un espace de fonctions, ce qui relève d'un cours d'équations différentielles ou d'analyse fonctionnelle. La version locale de ce théorème est énoncée, avec la même justification, au théorème 1.2 d'Analyse II.
Retenez plutôt ce que l'hypothèse fait. La seconde inégalité du théorème 9.1 est le fait décisif pour tout ce chapitre: deux solutions issues de données voisines peuvent s'écarter, mais au plus exponentiellement, avec l'exposant L. Le facteur eL(b−a) va réapparaître, identique, dans la majoration de l'erreur numérique — et pour la même raison, car une méthode numérique ne fait rien d'autre que de redémarrer, à chaque pas, depuis une donnée légèrement fausse.
Le problème témoin de ce chapitre
Tout ce chapitre s'appuie sur un problème dont on connaît la solution exacte — c'est la seule manière d'exhiber des erreurs vraies plutôt que des estimations:
y′=y−t2+1,y(0)=0,5,t∈[0,2],(9.3)
dont la solution, que l'on obtient par la méthode des équations linéaires du premier ordre d'Analyse II, est
y(t)=(t+1)2−21et,avecy(2)=5,305471950534675…
Vérifions l'hypothèse: ∂f/∂y=1 partout, donc f est lipschitzienne en y avec L=1, et le théorème 9.1 s'applique sur [0,2] tout entier. Notons au passage y′′=2−21et, dont le module maximal sur [0,2] vaut ∣2−21e2∣=1,694528, atteint en t=2: ces deux constantes, L=1 et M=1,694528, sont tout ce dont la théorie de l'erreur aura besoin.
Discrétiser: la grille, et deux suites qu'il ne faut jamais confondre
Une méthode numérique ne calcule pas une fonction: elle calcule un nombre fini de nombres. On découpe donc [a,b] en n intervalles égaux.
Par convention, y0=y0 — la valeur calculée au premier nœud est la donnée initiale, exacte. L'erreur initiale e0 est donc nulle, ce qui simplifiera les majorations; nous verrons dans la démonstration du théorème 9.3 que l'hypothèse n'est pas nécessaire, et ce qu'il advient si la donnée elle-même est entachée d'erreur.
La forme (9.5) dit tout de suite quelque chose d'utile: une méthode à un pas est une récurrence, elle n'a besoin d'aucun démarrage particulier, et l'on peut changer h d'un pas à l'autre sans rien réorganiser. Cette dernière propriété est ce qui rendra possible le contrôle automatique du pas, plus loin dans le chapitre.
La méthode d'Euler explicite, dérivée trois fois
Vous avez déjà croisé cette méthode en Analyse II (chapitre 1), comme illustration géométrique du champ des directions. Nous la reprenons ici parce que la manière dont on l'obtient détermine ce que l'on saura en faire ensuite, et parce que la troisième des trois dérivations qui suivent est celle qui engendre tout le reste du chapitre.
Première dérivation: le quotient de différences
Le chapitre 8 a construit l'approximation de la dérivée par différence finie progressive:
y′(tn)≈hy(tn+1)−y(tn).
En remplaçant y′(tn) par f(tn,y(tn)) selon l'équation, puis les valeurs exactes par les valeurs calculées, on obtient
yn+1=yn+hf(tn,yn).(9.6)
C'est la méthode d'Euler explicite, de fonction d'incrément Φ(t,y,h)=f(t,y). La dérivation est courte et elle rattache immédiatement la méthode au chapitre 8 — le prix à payer est qu'elle n'indique pas comment faire mieux: passer à une différence centrée donnerait un schéma qui a besoin de deux valeurs passées, donc une méthode multipas.
Deuxième dérivation: Taylor
La formule de Taylor avec reste de Lagrange (Analyse I, chapitre 9), appliquée à la solution exacte entre tn et tn+1=tn+h, donne, si y est deux fois dérivable,
avec ξn∈]tn,tn+1[. Euler explicite consiste à jeter le reste. Cette lecture-là est celle qui donne le contrôle de l'erreur: le terme négligé est explicitement 2h2y′′(ξn), et il se majore. Elle suggère aussi une famille de méthodes — garder le terme en h2, celui en h3, etc. — au prix de dérivées de f que l'on n'a généralement pas: pour un second membre un peu compliqué, y′′=∂tf+f∂yf et les ordres supérieurs deviennent inutilisables à la main comme en machine.
Troisième dérivation: la quadrature de la forme intégrale
C'est celle qu'il faut retenir. Intégrons l'équation y′=f(t,y) entre tn et tn+1; le théorème fondamental du calcul intégral (Analyse I, chapitre 10) donne l'identité exacte
y(tn+1)=y(tn)+∫tntn+1f(s,y(s))ds.(9.8)
Aucune approximation n'a encore été faite. Toute méthode à un pas s'obtient maintenant en choisissant une formule de quadrature pour l'intégrale de droite — et le chapitre 8 en a fourni un catalogue.
Le rectangle à gauche, ∫tntn+1g≈hg(tn), redonne exactement Euler explicite (9.6).
Le rectangle à droite, ≈hg(tn+1), donnera Euler implicite.
Le trapèze, ≈2h(g(tn)+g(tn+1)), donnera la méthode du trapèze.
Le point milieu, ≈hg(tn+h/2), donnera la méthode du point milieu.
Et Simpson, avec ses trois points, est le germe de RK4.
Euler explicite en Python
def euler(f, t0, y0, h, n): """n pas d'Euler explicite; renvoie la liste des couples (t_k, y_k).""" points = [(t0, y0)] t, y = t0, y0 for k in range(n): y = y + h * f(t, y) t = t0 + (k + 1) * h points.append((t, y)) return points
Le coût est de une évaluation de f par pas, soit n évaluations pour parcourir [a,b], plus une multiplication et une addition. C'est le minimum absolu: aucune méthode ne peut se contenter de moins d'une évaluation du second membre par pas. Notez que t est recalculé par t0+(k+1)h et non accumulé par t += h: accumuler n additions flottantes ferait dériver la grille elle-même, d'une quantité bornée par nεmach∣t∣ d'après le chapitre 1. Sur 106 pas, la différence est visible.
Figure 9.1. Euler explicite sur le problème témoin y′ = y − t² + 1, y(0) = 0,5, pour trois pas. La courbe noire est la solution exacte; les trois lignes brisées sont calculées en exécutant la méthode. Chacune reste sous la courbe, parce que la solution est convexe sur la première partie de l'intervalle et que la tangente d'une fonction convexe passe sous son graphe. L'écart final, matérialisé par le trait vertical en t = 2, vaut 0,868 pour h = 0,5 (la ligne brisée la plus basse), 0,526 pour h = 0,25 (en bleu) et 0,242 pour h = 0,1 (en brun): diviser le pas divise l'erreur d'à peu près autant.
Question 9.1
Appliquez la méthode d'Euler explicite au problème y′=y−t2+1, y(0)=0,5, avec le pas h=0,5. Quelle valeur approchée obtenez-vous en t=1?
Question 9.2
Complétez la fonction euler(f, t0, y0, h, n) pour qu'elle exécute n pas d'Euler explicite et renvoie la liste des couples (tk,yk). Le programme doit reproduire le tableau de l'exemple 9.1: cinq lignes, tk à deux décimales puis yk à six.
euler.py
1
def euler(f, t0, y0, h, n):
2
"""Renvoie la liste des couples (t_k, y_k) pour k = 0, ..., n."""
3
points = [(t0, y0)]
4
t, y = t0, y0
5
for k in range(n):
6
# a completer: un pas d'Euler explicite
7
t = t0 + (k + 1) * h
8
points.append((t, y))
9
return points
10
11
12
def f(t, y):
13
return y - t * t + 1.0
14
15
16
for t, y in euler(f, 0.0, 0.5, 0.5, 4):
17
print("%.2f %.6f" % (t, y))
L'ordre d'Euler, lu dans un tableau
Faisons ce que le chapitre 8 nous a appris à faire: mesurer l'erreur pour une suite de pas et regarder le rapport entre erreurs consécutives.
h
n
yn en t=2
erreur
rapport
0,5
4
4,437500
0,86797
—
0,25
8
4,779652
0,52582
1,65
0,1
20
5,063500
0,24197
—
0,05
40
5,178006
0,12747
1,90
0,025
80
5,239977
0,06550
1,95
0,0125
160
5,272264
0,03321
1,97
La colonne des rapports est la seule qui apprenne quelque chose, et elle ne dit pas 2. Elle dit 1,65, puis 1,90, puis 1,95, puis 1,97: elle tend vers 2 sans jamais l'atteindre.
Question 9.3
Vous mesurez, pour une méthode inconnue, les erreurs 4,1⋅10−3, 1,1⋅10−3 et 2,8⋅10−4 aux pas h, h/2 et h/4. Quel est son ordre?
Euler implicite, et ce que coûte un pas
Reprenons (9.8) et choisissons cette fois le rectangle à droite: ∫tntn+1g≈hg(tn+1). Il vient
yn+1=yn+hf(tn+1,yn+1).(9.9)
C'est la méthode d'Euler implicite (ou rétrograde). L'inconnue yn+1 apparaît des deux côtés: (9.9) n'est plus une formule, c'est une équation à résoudre à chaque pas.
Que coûte un pas implicite? Il faut résoudre, en l'inconnue z, l'équation
F(z)=z−yn−hf(tn+1,z)=0.
C'est le sujet du chapitre 2, et la réponse y est la méthode de Newton:
initialisée par z(0)=yn, ou mieux par le prédicteur d'Euler explicite z(0)=yn+hf(tn,yn), qui est déjà à O(h2) de la réponse. Deux ou trois itérations suffisent alors, chacune coûtant une évaluation de f et une de ∂f/∂y. Un pas implicite coûte donc de trois à dix fois un pas explicite, et il exige en plus une dérivée que l'on n'a pas toujours.
Notons aussi, avec le chapitre 2, que si hL<1 l'application z↦yn+hf(tn+1,z) est une contraction de rapport hL, donc l'itération de point fixe la plus naïve converge déjà. C'est pourquoi la condition hL<1 revient partout dans la littérature des méthodes implicites: elle garantit que le pas est bien défini et calculable.
Explorateur 9.1 · Une méthode, un pas, une erreur
Réglez le pas et la méthode, et regardez la ligne brisée s'approcher de la courbe exacte. Divisez le pas par deux: l'erreur d'Euler est divisée par un peu moins de 2, celle de Heun par un peu moins de 4, celle de RK4 par un peu moins de 16. Comparez aussi à coût égal — RK4 au pas 0,25 coûte 32 évaluations de f et fait mieux qu'Euler au pas 0,025, qui en coûte 80.
Pas h0,250
MéthodeEuler explicite
Valeur calculée yn en t = 2
4,779652
Valeur exacte y(2)
5,305472
Erreur globale en t = 2
5,26·10⁻¹
Ordre / évaluations de f
1 / 8
Le trapèze, Crank-Nicolson, et Heun comme prédicteur-correcteur
Retour à (9.8), avec cette fois la formule du trapèze du chapitre 8:
∫tntn+1g(s)ds≈2h(g(tn)+g(tn+1)).
On obtient la méthode du trapèze, appelée schéma de Crank-Nicolson dans le contexte des équations aux dérivées partielles:
yn+1=yn+2h(f(tn,yn)+f(tn+1,yn+1)).(9.10)
Elle est implicite, comme (9.9), et pour la même raison. Mais elle est d'ordre 2, ce qui compense largement: le chapitre 8 a établi que l'erreur de la formule du trapèze sur un intervalle de longueur h vaut −12h3g′′(η), d'où une erreur locale en h3 et, par le théorème 9.3 ci-dessous, une erreur globale en h2.
L'idée de Heun consiste à supprimer le caractère implicite en remplaçant l'inconnue yn+1 du membre de droite par une prédiction, fournie par Euler explicite:
Le prédicteur commet une erreur en O(h2); elle entre dans le correcteur multipliée par 2h∂yf, donc contribue en O(h3) à l'erreur du pas — l'ordre 2 est conservé. C'est là tout le mécanisme prédicteur-correcteur: on a le droit d'être grossier dans la prédiction, parce que l'erreur de prédiction entre dans le résultat affectée d'un facteur h supplémentaire.
Question 9.4
La méthode du trapèze (9.10) est implicite alors que Heun (9.11) ne l'est pas. Quelle est la conséquence la plus exacte?
Runge-Kutta: échantillonner la pente plusieurs fois
Le principe est maintenant visible. Sur le pas [tn,tn+1], la formule (9.8) demande la moyenne de f(s,y(s)); une seule évaluation, au bord gauche, donne l'ordre 1; deux évaluations bien placées donnent l'ordre 2. Il est naturel de continuer.
Les méthodes à deux étages
Avec s=2, le tableau se réduit à trois paramètres c2, a21=c2, b1, b2, et
Un développement de Taylor à deux variables (Analyse II, chapitre 5) montre que la méthode est d'ordre 2 si et seulement si
b1+b2=1etb2c2=21.(9.14)
C'est une famille à un paramètre. Le choix c2=1, b1=b2=21 donne Heun; le choix c2=21, b1=0, b2=1 donne le point milieu; le choix c2=32 donne la méthode de Ralston, qui minimise la constante d'erreur. Leurs tableaux de Butcher:
01121210212101
Question 9.5
Remettez dans l'ordre les opérations d'un pas de la méthode de Heun, du point (tn,yn) vers yn+1.
Glissez les éléments pour les mettre dans le bon ordre
1.
Évaluer la pente au point de départ: k1=f(tn,yn)
2.
Avancer de la moyenne des deux pentes: yn+1=yn+2h(k1+k2)
3.
Évaluer la pente à l'arrivée prédite: k2=f(tn+1,y~n+1)
4.
Passer au pas suivant en posant tn+1=tn+h
5.
Prédire la valeur d'arrivée par un pas d'Euler explicite: y~n+1=yn+hk1
RK4, la méthode classique
Avec quatre étages, le choix devenu canonique est celui de Kutta (1901), qui reproduit la formule de Simpson lorsque f ne dépend pas de y:
Les poids 61,31,31,61 sont ceux de Simpson, avec le point milieu compté deux fois parce qu'il est évalué deux fois: k2 à partir de k1, puis k3 à partir de k2. Cette double évaluation du milieu est ce qui fait passer de l'ordre 3 à l'ordre 4.
def rk4(f, t0, y0, h, n): """n pas de Runge-Kutta d'ordre 4; renvoie la valeur finale.""" t, y = t0, y0 for k in range(n): k1 = f(t, y) k2 = f(t + h / 2.0, y + h / 2.0 * k1) k3 = f(t + h / 2.0, y + h / 2.0 * k2) k4 = f(t + h, y + h * k3) y = y + h / 6.0 * (k1 + 2.0 * k2 + 2.0 * k3 + k4) t = t0 + (k + 1) * h return y
Le coût est de quatre évaluations de f par pas, plus une dizaine d'opérations arithmétiques, négligeables devant une évaluation de f dès que celle-ci est un tant soit peu compliquée. Un pas de RK4 coûte donc quatre pas d'Euler.
Figure 9.2. Un pas de RK4 sur le problème témoin, depuis (0; 0,5) avec h = 0,5. La courbe noire est la solution exacte. Les quatre segments bleus sont les pentes k₁ à k₄, tracées à leur point d'évaluation; les traits gris en pointillés sont les lignes de construction qui mènent du point de départ à chacun des trois points d'essai. Le segment qui mène au point yₙ₊₁ est la seule avancée réellement effectuée, de pente moyenne 1,8503. Tout est calculé par le composant en exécutant la méthode. Trois points se superposent en t = 0,5 et c'est la leçon de la figure: le point d'essai de k₄ vaut 1,4453, le résultat y₁ vaut 1,425130 et la valeur exacte y(0,5) vaut 1,425639 — les deux derniers ne diffèrent que de 5·10⁻⁴, soit un dixième de pixel à cette échelle.
Question 9.6
Effectuez un pas de RK4 sur y′=y−t2+1 depuis (0;0,5) avec h=0,5. Quelle valeur y1 obtenez-vous? Donnez quatre décimales.
Question 9.7
Complétez rk4(f, t0, y0, h, n): le squelette n'évalue qu'une seule pente et l'utilise quatre fois, ce qui en fait un Euler déguisé. Écrivez les quatre étages de (9.15). Le programme affiche le pas puis la valeur obtenue en t=2, à sept décimales, pour h=0,5 et h=0,25.
rk4.py
1
def rk4(f, t0, y0, h, n):
2
"""n pas de Runge-Kutta d'ordre 4; renvoie la valeur finale."""
Le nombre d'étages et l'ordre cessent de coïncider
Jusqu'à quatre étages, le nombre d'évaluations et l'ordre coïncident: une évaluation donne l'ordre 1, deux l'ordre 2, trois l'ordre 3, quatre l'ordre 4. Cela s'arrête là. Butcher a montré qu'une méthode de Runge-Kutta explicite à s étages ne peut pas dépasser l'ordre s, et surtout que l'ordre s n'est atteignable que pour s≤4: il faut 6 étages pour l'ordre 5, 7 pour l'ordre 6, 9 pour l'ordre 7 et 11 pour l'ordre 8. Le rendement décroît donc brutalement à partir du cinquième étage.
C'est la raison pour laquelle RK4 est resté, plus d'un siècle après Kutta, la méthode par défaut des cours et de beaucoup de programmes: elle est le dernier point où l'on obtient un ordre entier pour le prix d'une évaluation. Au-delà, les méthodes d'ordre élevé existent et sont excellentes — mais elles ne se justifient que pour des tolérances très serrées, où leur ordre finit par l'emporter sur leur coût par pas.
Figure 9.3. Erreur globale en t = 2 contre le pas h, en échelles logarithmiques, pour Euler, Heun (bleu) et RK4 (brun), sur le problème témoin, chaque nuage étant nommé à droite. Chaque point est obtenu en exécutant la méthode dans le composant. Les trois nuages sont des droites, ce qui est la signature d'une erreur en C·hᵖ: en passant au logarithme, log(erreur) = p·log(h) + log C, et la pente est l'ordre. Les deux triangles gris portent les pentes de référence 1 et 4. Sur cette plage de pas l'erreur d'arrondi reste invisible, y compris pour RK4 dont l'erreur descend à 4·10⁻⁹; c'est au chapitre 8 que l'on a vu la courbe en V qui apparaîtrait si l'on continuait à raffiner.
Question 9.8
Écrivez la méthode de Heun (9.11) sous forme prédicteur-correcteur, puis produisez le tableau des erreurs en t=2 pour quatre pas successivement divisés par deux, avec la colonne des rapports. Chaque ligne affiche h à quatre décimales, l'erreur en notation scientifique à trois décimales, puis le rapport à deux décimales, un tiret pour la première ligne.
heun.py
1
def heun(f, t0, y0, h, n):
2
"""Predicteur d'Euler, correcteur du trapeze."""
3
t, y = t0, y0
4
for k in range(n):
5
k1 = f(t, y)
6
# a completer: la prediction, la seconde pente, puis la correction
Erreur locale, erreur globale, et le théorème qui relie les deux
Nous avons maintenant un catalogue de méthodes et une observation empirique: leur erreur se comporte comme hp avec un p qui dépend de la méthode. Il est temps de démontrer pourquoi.
La division par h dans (9.16) est une convention, mais elle est universelle et il faut savoir la lire: l'erreur du pas vaut hτn, donc une méthode consistante d'ordre p commet une erreur en hp+1 à chaque pas et il y a N=(b−a)/h pas. Le compte naïf — «N erreurs de taille hp+1, donc une erreur totale de (b−a)hp» — donne le bon exposant, et c'est déjà rassurant. Mais il est faux comme raisonnement, car il oublie que chaque erreur passée est transportée par les pas suivants, comme l'exemple 9.1 l'a montré. Le théorème de convergence est précisément ce qui répare ce raisonnement.
Le lemme d'accumulation
Tout le travail tient dans une inégalité de récurrence, qui est la version discrète du lemme de Grönwall.
Démonstration. Récurrence sur n. Pour n=0, le membre de droite de (9.18) vaut ε0 et l'inégalité est une égalité. Supposons (9.18) vraie au rang n. Alors
ce qui est (9.18) au rang n+1. Le cas A=0 est immédiat. □
La forme (9.18) est encore un peu opaque; on la rend lisible avec l'inégalité 1+x≤ex, valable pour tout réel x (elle exprime la convexité de l'exponentielle, dont la tangente en 0 est 1+x). Il vient (1+A)n≤enA, donc
εn≤enAε0+AB(enA−1).(9.19)
On reconnaît déjà le facteur exponentiel du théorème 9.1: il ne s'agit pas d'une coïncidence, mais de la même propagation, vue une fois sur la solution exacte et une fois sur la solution discrète.
Consistance et stabilité entraînent la convergence
Cette définition mérite d'être commentée avant d'être utilisée. La stabilité ne dit rien sur la qualité de l'approximation: elle dit que la méthode ne fabrique pas d'amplification supplémentaire, que deux exécutions parties de données voisines restent voisines sur un intervalle borné. C'est une condition de continuité de la récurrence par rapport à ses données, exactement comme (9.2) l'est pour l'équation elle-même. Pour Euler explicite, Φ=f et (9.20) est vérifiée avec Λ=L; pour Heun, un calcul de deux lignes donne Λ=L+2hL2≤L+2h0L2; pour RK4, Λ=L(1+2hL+6h2L2+24h3L3). Toute méthode de Runge-Kutta explicite dont le second membre est lipschitzien est donc stable au sens de (9.20), ce qui rend cette hypothèse peu contraignante — et c'est justement ce que le chapitre 10 remettra en cause, sous un autre sens du mot «stabilité».
Démonstration. Écrivons côte à côte ce que fait la méthode et ce que fait la solution exacte. La méthode:
yn+1=yn+hΦ(tn,yn,h).
La solution exacte, par la définition (9.16) de l'erreur locale de troncature, réarrangée:
y(tn+1)=y(tn)+hΦ(tn,y(tn),h)+hτn(h).
Cette seconde ligne est une identité, pas une approximation: τn a été défini pour qu'elle le soit. Soustrayons, avec en=yn−y(tn):
C'est l'équation centrale du chapitre, et elle se lit ainsi: l'erreur nouvelle est l'erreur ancienne, transportée par la méthode, plus l'erreur fraîchement commise. Le crochet est le transport, le terme hτn est la fraîche.
Majorons. L'inégalité triangulaire, puis la stabilité (9.20) appliquée au crochet avec u=yn et v=y(tn), puis la consistance (9.17):
Nous sommes exactement dans les hypothèses du théorème 9.2, avec εn=∣en∣, A=hΛ>0 et B=Chp+1. La conclusion (9.19) donne
∣en∣≤enhΛ∣e0∣+hΛChp+1(enhΛ−1).
Il ne reste qu'à simplifier: nh=tn−a, et le facteur h du dénominateur absorbe une puissance de h du numérateur, laissant Chp/Λ. On obtient (9.21).
Si e0=0, le premier terme disparaît; et comme tn≤b, l'exponentielle est majorée par eΛ(b−a), d'où ∣en∣≤Khp avec la constante annoncée, indépendante de h et de n. □
L'ordre 1 d'Euler explicite, en entier
Démonstration. Nous vérifions les deux hypothèses du théorème 9.3, puis nous appliquons (9.21).
Stabilité. Pour Euler explicite, Φ(t,y,h)=f(t,y), et (9.20) est exactement l'hypothèse de Lipschitz (9.2) sur f: la méthode est stable avec Λ=L, pour tout h.
Consistance d'ordre 1. La solution exacte étant C2, la formule de Taylor avec reste de Lagrange (Analyse I, chapitre 9) donne, pour chaque n, l'existence d'un ξn∈]tn,tn+1[ tel que
y(tn+1)=y(tn)+hy′(tn)+2h2y′′(ξn).
Comme y est solution, y′(tn)=f(tn,y(tn))=Φ(tn,y(tn),h). En reportant dans la définition (9.16):
Donc ∣τn(h)∣≤2Mh pour tout n: la méthode est consistante d'ordre p=1 avec C=M/2.
Accumulation. On pourrait invoquer le théorème 9.3 et conclure. Refaisons-le ici en entier, car c'est le cas où l'on voit tout. L'identité fondamentale s'écrit, avec Φ=f:
d'où, par l'inégalité triangulaire et la condition de Lipschitz (9.2),
∣en+1∣≤∣en∣+hL∣en∣+2h2M=(1+hL)∣en∣+2Mh2.
C'est le lemme 9.2 avec A=hL et B=Mh2/2, et ε0=∣e0∣=0 puisque y0=y(a). Il donne
∣en∣≤2Mh2⋅hL(1+hL)n−1=2LMh[(1+hL)n−1].
Enfin 1+hL≤ehL, donc (1+hL)n≤enhL=eL(tn−a), ce qui donne (9.22). □
Question 9.9
Une méthode à un pas a une erreur locale de troncature τn(h) bornée par Ch3. De quel ordre est-elle globalement convergente, si elle est stable?
Contrôler le pas: les paires emboîtées
Tout ce qui précède suppose un pas fixe, décidé à l'avance. Ce n'est presque jamais ce que l'on veut. La solution d'une équation différentielle a rarement la même échelle de temps du début à la fin: une réaction chimique démarre vite puis se calme, un projectile passe par un choc, un système mécanique traverse une phase transitoire avant son régime permanent. Un pas assez fin pour la phase rapide serait du gaspillage partout ailleurs.
Il faut donc estimer l'erreur commise pendant le calcul, sans connaître la solution exacte. L'idée, aujourd'hui universelle, est simple: on calcule le même pas avec deux méthodes d'ordres différents, et l'on prend leur différence comme estimation de l'erreur de la moins précise.
Soient y^n+1 le résultat d'une méthode d'ordre p et z^n+1 celui d'une méthode d'ordre p+1, calculés depuis le même yn. Alors
La différence des deux résultats estime l'erreur du moins bon, à un ordre près. C'est un estimateur a posteriori: il ne coûte aucune connaissance de la solution, seulement un second calcul.
Le second calcul serait cher s'il fallait le refaire de zéro. D'où l'idée décisive, qui est celle des paires emboîtées: construire deux méthodes de Runge-Kutta d'ordres p et p+1 qui partagent leurs étages, c'est-à-dire le même tableau A et les mêmes ci, et ne diffèrent que par les poids b. Le tableau de Butcher porte alors deux lignes de poids:
cAbTb^T
et l'estimation d'erreur est gratuite: elle vaut h∑i(bi−b^i)ki, une simple combinaison des pentes déjà calculées.
La plus simple des paires emboîtées est Heun-Euler, d'ordres 2 et 1: les deux étages k1 et k2 de Heun contiennent déjà le pas d'Euler.
Reste à choisir le nouveau pas. Si l'on demande une tolérance tol par pas et que l'erreur se comporte comme est≈Khp+1, le pas hnouv qui atteindrait exactement la tolérance vérifie tol=Khnouvp+1, d'où, en divisant les deux relations:
hnouv=σh(estntol)1/(p+1),(9.25)
où σ≈0,9 est un coefficient de sécurité qui rend acceptable le pas proposé plutôt que marginal. L'algorithme complet tient en quelques lignes: on calcule le pas, on compare estn à tol, on accepte si c'est assez bon et l'on recommence sinon, et dans les deux cas on met h à jour par (9.25) — en bridant le facteur multiplicatif, typiquement entre 0,2 et 5, pour éviter les oscillations.
Question 9.10
Au premier pas de y′=y−t2+1, y(0)=0,5, avec h=0,1, la paire Heun-Euler donne l'estimation est=7,0⋅10−3. Quel pas la formule (9.25) propose-t-elle pour la tolérance tol=10−3, avec p=1 et σ=0,9?
Les paires réellement utilisées sont d'ordre plus élevé. Runge-Kutta-Fehlberg RKF45 utilise 6 étages pour les ordres 4 et 5; Dormand-Prince DOPRI5, également d'ordres 4 et 5 sur 7 étages, est le moteur de la fonction ode45 de Matlab et du solveur par défaut de la plupart des bibliothèques scientifiques. Son septième étage est celui de la propriété first same as last: la dernière pente d'un pas est la première du suivant, ce qui ramène le coût effectif à six évaluations par pas. Bogacki-Shampine 3(2), quatre étages avec la même astuce, est le choix courant pour les tolérances lâches.
Systèmes, et équations d'ordre supérieur
Tout ce chapitre a été écrit pour une équation scalaire, et il s'applique tel quel à un système — c'est le principal argument en faveur de la forme (9.1).
Aucune formule de ce chapitre ne change. Euler s'écrit un+1=un+hf(tn,un), RK4 calcule quatre vecteurs ki, et les démonstrations des théorèmes 9.2 à 9.4 restent valables mot pour mot en remplaçant les valeurs absolues par une norme vectorielle (annexe A) et la condition de Lipschitz par ∥f(t,u)−f(t,v)∥≤L∥u−v∥. Seul le coût change: une évaluation du second membre coûte maintenant m composantes.
La réduction d'une équation d'ordre m à un système du premier ordre est la même qu'en Analyse II. Soit
y(m)=g(t,y,y′,…,y(m−1)),y(a)=α0,y′(a)=α1,…
On pose u1=y, u2=y′, …, um=y(m−1), et le système devient
Vectorisez RK4. La fonction rk4_systeme(F, t0, U0, h, n) reçoit un champ F(t, U) qui renvoie une liste, et doit faire n pas de (9.15) composante par composante. Le squelette n'en fait qu'un pas d'Euler. Le programme affiche le déplacement puis la vitesse de l'oscillateur en t=1 s, en millimètres et en mm/s, à six décimales.
oscillateur.py
1
from math import sqrt
2
3
4
def rk4_systeme(F, t0, U0, h, n):
5
"""RK4 sur un systeme: U est une liste, F(t, U) renvoie une liste de meme longueur."""
6
t = t0
7
U = list(U0)
8
for pas in range(n):
9
k1 = F(t, U)
10
# a completer: k2, k3, k4 puis la moyenne ponderee, composante par composante
U = rk4_systeme(oscillateur, 0.0, [0.010, 0.0], 0.005, 200)
26
print("%.6f" % (1000.0 * U[0]))
27
print("%.6f" % (1000.0 * U[1]))
Synthèse
Le problème de Cauchyy′=f(t,y), y(a)=y0 possède une solution unique sur [a,b] dès que f est continue et lipschitzienne en y (théorème 9.1, admis: sa démonstration est un point fixe dans un espace de fonctions). Deux solutions issues de données distantes de δ restent distantes d'au plus eL(b−a)δ — le même facteur qui bornera l'erreur numérique.
Sur la grille tk=a+kh, une méthode à un pas produit yk+1=yk+hΦ(tk,yk,h). Toutes ces méthodes s'obtiennent en appliquant une formule de quadrature du chapitre 8 à l'identité exacte — rectangle à gauche pour Euler explicite, à droite pour Euler implicite, trapèze pour Crank-Nicolson, Simpson pour RK4.
Une méthode implicite demande la résolution d'une équation non linéaire par pas, donc une itération de Newton (chapitre 2) et trois à dix fois le coût d'un pas explicite. Sur le problème témoin, Euler implicite est même moins précis qu'Euler explicite; son intérêt est ailleurs, et c'est le chapitre 10 qui le dira.
Une méthode de Runge-Kutta à s étages échantillonne la pente s fois par pas, avec les poids du tableau de Butcher. L'ordre égale le nombre d'étages jusqu'à s=4 et pas au-delà: il faut 6 étages pour l'ordre 5 et 11 pour l'ordre 8. À budget égal d'évaluations, RK4 écrase Euler — 16 évaluations de RK4 valent environ 1 400 évaluations d'Euler sur le problème témoin.
Consistance d'ordre p plus stabilité entraîne convergence d'ordre p (théorème 9.3), avec la borne ∣en∣≤eΛ(tn−a)∣e0∣+ΛChp(eΛ(tn−a)−1). L'équation qui porte la démonstration est : l'erreur nouvelle est l'ancienne transportée, plus la fraîche. Pour Euler, et la borne est , vérifiée et pessimiste d'un facteur 2 environ.
Un ordre est asymptotique. Le rapport d'erreurs d'Euler vaut 1,65, 1,90, 1,95, 1,97 et tend vers 2 sans l'atteindre, l'écart à 2 étant lui-même proportionnel à h. Un rapport de 1,90 confirme l'ordre 1; l'arrondir à 2 serait effacer la seule information que la mesure apporte au théorème.
Le pas est contrôlé par une paire emboîtée: deux méthodes d'ordres p et p+1 partageant leurs étages, dont la différence estime l'erreur a posteriori et pilote hnouv=σh(tol/est)1/(p+1). Un système ou une équation d'ordre m se traite sans changer une formule, en posant .
Série d'exercices du chapitre 9Exercice 1 sur 5
Question 9.12
Laquelle de ces méthodes est implicite?
Exercices
Vous pouvez afficher le corrigé directement sous chaque énoncé après avoir cherché la solution.
Exercice 9.1 · Euler à la main, et l'erreur qui s'accumule
Soit le problème de Cauchy y′=t−y, y(0)=1, sur [0,1].
Vérifier que f est lipschitzienne en y et donner sa constante L.
Résoudre exactement (équation linéaire du premier ordre, Analyse II, chapitre 1) et calculer y(1) avec six décimales.
Effectuer quatre pas d'Euler explicite avec h=0,25 et dresser le tableau (tk,yk,y(tk),∣ek∣).
Comparer l'erreur finale à la borne (9.22) et commenter le facteur entre les deux.
Solution
1.f(t,y)=t−y, donc ∣f(t,u)−f(t,v)∣=∣v−u∣: la condition (9.2) est vérifiée avec , et c'est la meilleure constante possible.
Exercice 9.2 · Retrouver l'ordre à partir d'un tableau
Une méthode que l'on ne vous nomme pas, appliquée au problème témoin y′=y−t2+1, y(0)=0,5, donne les erreurs suivantes en t=1. Ce sont de vraies mesures, produites en exécutant la méthode et en comparant à y(1)=2,640859086.
h
0,2
0,1
0,05
0,025
erreur
7,692⋅10−3
1,981⋅10−3
5,017⋅10−4
Calculer la colonne des rapports et en déduire l'ordre.
Estimer l'ordre par la formule p≈log2(E(h)/E(h/2)) pour chaque couple, et commenter la tendance.
Estimer la constante K telle que E(h)≈Khp, et prédire l'erreur pour .
Exercice 9.3 · Le tableau de Butcher et l'invariance
Écrire le tableau de Butcher de la méthode de Ralston, définie par c2=32 dans la famille (9.14), et vérifier qu'elle est bien d'ordre 2.
Montrer que toute méthode de Runge-Kutta explicite vérifiant ∑ibi=1 intègre exactement l'équation y′=1, y(0)=0, quel que soit h.
Montrer que RK4 appliqué à y′=g(t) (second membre indépendant de y) redonne exactement la formule de Simpson sur [tn,tn+1].
En déduire une vérification de programme: quelle valeur RK4 doit-il rendre, exactement, sur y′=t3, y(0)=0, en t=1 avec h=1?
Solution
1. Les conditions (9.14) donnent b2c2=21 avec c2=32, donc et . Le tableau est
Exercice 9.4 · Réduction à un système et coût
Le mouvement d'un satellite dans le plan, en unités adimensionnées, obéit à
x¨=−(x2+y2)3/2x,y¨=−(x2+y2)3/2y,
avec x(0)=1, x˙(0)=0, y(0)=0, y˙(0)=1 (orbite circulaire de rayon 1 et de période ).
Écrire ce problème sous la forme (9.26) en précisant m, u, f et u0.
Combien d'évaluations de composantes scalaires du second membre coûte un pas de RK4?
La quantité E=21(x˙2+y˙2)−(x2+y2)−1/2 est conservée par la solution exacte. Que vaut-elle ici, et à quoi peut-elle servir pendant un calcul?
Solution
1. On pose m=4 et u=(x,x˙,y,y˙). Avec r=(u12+u32)1/2,
Exercice 9.5 · Ordre de la théta-méthode (démonstration)
Pour θ∈[0,1], la théta-méthode est définie par
yn+1=yn+h[(1−θ)f(tn,yn)+θf(tn+1,yn+1)].
Identifier les trois méthodes du chapitre correspondant à θ=0, θ=1 et θ=21, et dire lesquelles sont implicites.
En supposant y de classe C3, calculer le développement de l'erreur locale de troncature jusqu'au terme en inclus.
Solution
1.θ=0 donne Euler explicite (9.6); θ=1 donne Euler implicite (9.9); θ=21 donne la méthode du trapèze (Crank-Nicolson, (9.10)). Les deux dernières sont implicites, puisque yn+1 y figure dans le second membre dès que .
Références
Quarteroni, A., Sacco, R. et Saleri, F., Méthodes numériques — algorithmes, analyse et applications, Springer, Milan, chap. 11 (problème de Cauchy, méthodes à un pas, consistance et convergence).
Hairer, E., Nørsett, S. P. et Wanner, G., Solving Ordinary Differential Equations I — Nonstiff Problems, 2e éd., Springer, Berlin, chap. II (la référence sur les méthodes de Runge-Kutta, les conditions d'ordre et les paires emboîtées).
Rappaz, J. et Picasso, M., Introduction à l'analyse numérique, Presses polytechniques et universitaires romandes, Lausanne, chap. 8.
Burden, R. L. et Faires, J. D., Numerical Analysis, Cengage, Boston, chap. 5 (le problème témoin de ce chapitre y est traité en détail).
Butcher, J. C., Numerical Methods for Ordinary Differential Equations, 3e éd., Wiley, Chichester (les barrières d'ordre et la théorie des arbres).
Dormand, J. R. et Prince, P. J., «A family of embedded Runge-Kutta formulae», Journal of Computational and Applied Mathematics, vol. 6, n° 1, 1980 (la paire DOPRI5, moteur de la plupart des intégrateurs actuels).
solution discrète
yk
y(tk)
y(tk) (exact)
∣yk−y(tk)∣
0
0,0
1,500000
0,500000
0,500000
0
1
0,5
2,000000
1,250000
1,425639
0,175639
2
1,0
2,250000
2,250000
2,640859
0,390859
3
1,5
2,125000
3,375000
4,009155
0,634155
4
2,0
—
4,437500
5,305472
0,867972
h=0,5
1,5
2
e0,5=1,6487
0,149
0,351
0,30442
0,14291
0,06935
0,03417
h=0,1
0,05
0,025
0,0125
2,13
2,06
2,03
par au-dessus
h=0,5
h=0,25
3,37
3,84
1,105⋅10−1
3,52
0,125
5,874⋅10−3
4,01
2,923⋅10−2
3,78
0,0625
1,454⋅10−3
4,04
7,495⋅10−3
3,90
4,19
2,622⋅10−4
14,75
0,125
9,656⋅10−3
4,04
1,696⋅10−5
15,46
0,0625
2,407⋅10−3
4,01
1,076⋅10−6
15,76
constantes
345 fois
ordre
taille
3,38⋅10−3
u=(x,v)
*
W0
*
U[
0
]]
x(1)=−1,3609205
0
1
RK4
0,0025
−1,360921
4,14⋅10−11
h≤0,04
stabilité de la récurrence
yn est la valeur calculée, y(tn) la valeur exacte, et on ne les écrit jamais égales.
y(tn+1)=y(tn)+∫tntn+1f(s,y(s))ds
en+1=en+h[Φ(tn,yn,h)−Φ(tn,y(tn),h)]−hτn
τn=2hy′′(ξn)
2LhM(eL(b−a)−1)
u=(y,y′,…,y(m−1))
Problème guidé 9.1 · Un pas, quatre méthodes, quatre erreurs
On considère le problème témoin y′=y−t2+1, y(0)=0,5, dont la solution exacte est y(t)=(t+1)2−21et. On effectue un seul pas de longueur h=0,5 depuis le point (0;0,5), avec quatre méthodes différentes, et l'on compare chaque résultat à y(0,5)=1,4256393646. On notera f(t,y)=y−t2+1, et l'on remarquera d'emblée que f(0;0,5)=0,5−0+1=1,5.
1
Euler explicite
Le pas d'Euler avance le long de la tangente en (t0,y0), de pente k1=f(t0,y0)=1,5.
Question
Que vaut y1 pour Euler explicite, avec h=0,5?
Le point milieu
Heun, et l'estimation d'erreur gratuite
RK4, et le rapport des erreurs
L=1
2. L'équation y′+y=t est linéaire. Le facteur intégrant est et, d'où (ety)′=tet et, par parties, ety=(t−1)et+C. Donc
y(t)=t−1+Ce−t,y(0)=1⇒C=2,y(t)=t−1+2e−t.
Ainsi y(1)=2e−1=0,735759.
3. La récurrence est yk+1=yk+0,25(tk−yk)=0,75yk+0,25tk.
k
tk
yk
y(tk)
∣ek∣
0
0,00
1,000000
1,000000
0
1
0,25
0,750000
0,807602
0,057602
2
0,50
0,625000
0,713061
0,088061
3
0,75
0,593750
0,694733
0,100983
4
1,00
0,632813
0,735759
0,102946
4. Ici y′′=2e−t, dont le maximum sur [0,1] vaut M=2 (atteint en t=0), et L=1, b−a=1. La borne (9.22) donne
∣e4∣≤2×10,25×2(e1−1)=0,25×1,718282=0,429570.
L'erreur mesurée, 0,102946, est 4,17 fois plus petite que la borne. Deux raisons cumulées: ∣y′′∣ décroît de 2 à 0,736 sur l'intervalle alors que la borne utilise partout son maximum; et l'exponentielle suppose que toutes les erreurs se propagent en s'amplifiant, alors qu'ici ∂f/∂y=−1 et la récurrence contracte (∣1+hLsigneˊ∣=0,75<1), ce qui fait décroître la contribution des erreurs anciennes au lieu de la faire croître. On le voit dans le tableau: les accroissements de l'erreur sont 0,0576, 0,0305, 0,0129, 0,0020 — l'erreur se stabilise. La borne (9.22) ne connaît que ∣∂f/∂y∣ et ne peut pas exploiter le signe; c'est précisément la distinction que le chapitre 10 exploitera.
1,262⋅10−4
h=0,0125
On mesure en réalité 3,164⋅10−5 pour h=0,0125. Que vaut l'écart relatif à votre prédiction?
Ils croissent vers 4=22: la méthode est d'ordre 2. (Il s'agissait de la méthode du point milieu (9.12).)
2.log23,884=1,957, log23,948=1,981, log23,976=1,991. La suite tend vers 2 par en dessous, et l'écart à 2 est divisé par deux à chaque raffinement (0,0426; 0,0189; 0,0087), signature du terme suivant du développement asymptotique, proportionnel à h. C'est exactement le comportement observé pour Euler au début du chapitre, un ordre plus haut.
3. Avec le point le plus fin, K≈E(h)/h2=1,262⋅10−4/0,0252=0,2019. La prédiction pour h=0,0125 est donc
E≈0,2019×0,01252=3,155⋅10−5,
ce que l'on obtient plus vite encore en divisant la dernière erreur par 4: 1,262⋅10−4/4=3,155⋅10−5.
4. L'écart relatif vaut
3,164∣3,164−3,155∣=2,9⋅10−3,
soit 0,29%: la prédiction est excellente, et elle l'est parce qu'on est déjà dans le régime asymptotique. Appliquée depuis h=0,2 (K=0,1923), la même prédiction aurait donné 3,005⋅10−5, soit 5,0% d'écart. Une extrapolation n'est fiable qu'à partir du régime où l'ordre est presque atteint, et la colonne des rapports est ce qui permet de savoir si l'on y est.
b2=43
b1=1−43=41
032324143
Les deux conditions d'ordre 2 sont satisfaites par construction: b1+b2=41+43=1 et b2c2=43⋅32=21.
2. Si f≡1, toutes les pentes valent ki=1 quels que soient les points d'essai, donc
yn+1=yn+hi∑biki=yn+hi∑bi=yn+h.
La récurrence donne yn=nh=tn, qui est la solution exacte. C'est exactement ce que dit la condition de consistance ∑ibi=1: une méthode qui ne sait pas intégrer la fonction constante ne sait rien intégrer, et cette vérification à une ligne détecte une erreur de saisie dans un tableau de Butcher.
3. Si f(t,y)=g(t), les points d'essai sont sans effet et les quatre pentes valent
k1=g(tn),k2=k3=g(tn+2h),k4=g(tn+h).
Donc
yn+1=yn+6h[g(tn)+4g(tn+2h)+g(tn+h)],
puisque 2k2+2k3=4g(tn+h/2). Le crochet multiplié par h/6 est exactement la formule de Simpson du chapitre 8 sur [tn,tn+1]. C'est l'origine des poids 61,31,31,61, et cela explique aussi pourquoi l'ordre 4 de RK4 n'est pas un hasard: Simpson est exacte pour les polynômes de degré ≤3.
4. Simpson étant exacte jusqu'au degré 3, RK4 doit rendre exactement∫01t3dt=41=0,25, en un seul pas de h=1. Vérification: k1=0, k2=k3=(1/2)3=1/8, k4=1, d'où
y1=61(0+82+82+1)=61⋅23=41.
C'est un test de recette idéal, parce que le résultat attendu est exact à l'arrondi près: si votre implémentation ne rend pas 0,25 à 10−16 près, elle est fausse, et l'erreur est dans les poids ou dans les points d'essai. Sur y′=t4 elle ne sera plus exacte, ce qui donne un second test, de valeur 0,2 contre 0,208333 calculé.
2π
Si l'on veut intégrer dix révolutions avec une erreur finale de l'ordre de 10−6, estimer l'ordre de grandeur du pas requis avec RK4, puis avec Euler.
f(t,u)=(u2,−r3u1,u4,−r3u3),u0=(1,0,0,1).
Le second membre ne dépend pas de t (le système est autonome), ce qui ne change rien aux formules.
2. Un pas de RK4 demande 4 évaluations de f, chacune produisant m=4 composantes: 16 composantes scalaires, plus 4 racines carrées et 4 divisions (le rayon r n'est calculé qu'une fois par évaluation). Dans un code réel, c'est le nombre d'évaluations de f qui compte, car le coût par évaluation est dominé par r−3.
3. À t=0: 21(0+1)−1=−21. Cette intégrale première ne sert pas à corriger le calcul, mais à le surveiller: on l'évalue à chaque pas et l'on suit sa dérive. Une dérive de E est une borne inférieure de l'erreur (une solution exacte ne dérive pas), et elle est disponible sans connaître la solution exacte, donc utilisable en production. C'est le contrôle de recette de ce problème, comme le produit des racines l'était au chapitre 1 et le résidu b−Ax au chapitre 4. Attention toutefois: E constant ne garantit pas la justesse — un satellite retardé sur son orbite a la bonne énergie et la mauvaise position.
4. L'intervalle est [0,20π]≈[0,62,8]. Raisonnons en ordres de grandeur, en prenant K≈1 dans E≈Khp — ce qui n'est qu'une hypothèse de travail, à confirmer par une mesure. Pour RK4, demander 10−6 donne h≈(10−6)1/4=3,16⋅10−2, soit environ 2 000 pas et 7 900 évaluations. Pour Euler, h≈10−6, soit 6,3⋅107 pas et autant d'évaluations: environ 7 900 fois plus cher que RK4. Et à ce niveau, soixante millions d'additions flottantes accumulent une erreur d'arrondi de l'ordre de nu≈7⋅10−9 (chapitre 1), qui n'est plus négligeable devant la cible — c'est la courbe en V du chapitre 8 qui pointe. Sur un intervalle long, l'ordre élevé n'est pas un luxe: c'est la seule manière d'atteindre la précision demandée avant que l'arrondi ne la rende inatteignable.
τn(h)
h2
En déduire que la méthode est d'ordre 1 pour θ=21 et d'ordre 2 pour θ=21, et donner la constante C de (9.17) dans chaque cas.
Vérifier la cohérence avec les tableaux du chapitre: Euler explicite, Euler implicite et le trapèze sur le problème témoin.
θ=0
2. Posons y=y(t) la solution exacte et écrivons tout au point tn, en abrégeant y′=y′(tn), y′′=y′′(tn), y′′′=y′′′(tn). La fonction d'incrément de la théta-méthode, évaluée le long de la solution exacte, est
Φ(tn,y(tn),h)=(1−θ)y′(tn)+θy′(tn+1),
puisque f(tk,y(tk))=y′(tk) pour la solution exacte. Développons les deux membres de (9.16) séparément.
3. Si θ=21, le coefficient de h dans (9.28) est non nul et τn(h)=O(h) sans être O(h2): la méthode est consistante d'ordre exactement 1, avec
C=21−θM,M=[a,b]max∣y′′∣.
Si θ=21, ce coefficient s'annule et il reste (61−41)h2y′′′=−121h2y′′′: la méthode est d'ordre 2, avec
C=121M3,M3=[a,b]max∣y′′′∣.
On reconnaît le −121 de l'erreur de la formule du trapèze du chapitre 8, ce qui n'est pas une coïncidence: la théta-méthode est une quadrature de (9.8), et θ=21 est celle du trapèze. Comme la méthode est stable (sa fonction d'incrément est lipschitzienne en y de constante L/(1−θhL) pour θhL<1), le théorème 9.3 donne la convergence du même ordre. □
4. Sur le problème témoin, y′′=2−21et et y′′′=−21et, d'où M=1,694528 et M3=21e2=3,694528, tous deux atteints en t=2.
θ=0: C=21×1,694528=0,847, ordre 1 — les rapports mesurés tendent bien vers 2.
θ=1: C=21×1,694528=0,847 également. La constante de consistance est la même que pour Euler explicite, alors que l'erreur globale mesurée est plus grande d'un facteur qui va de 3,7 à h=0,5 à 1,3 à h=0,1 (exemple 9.2). Il n'y a pas de contradiction: la constante de consistance borne τn, tandis que l'erreur globale est gouvernée par (9.21) où intervient aussi la constante de stabilité Λ — plus grande ici, car Λ=L/(1−hL) vaut 2 pour h=0,5 contre 1 pour l'explicite. La théorie prévoit donc bien que l'implicite soit ici la moins bonne des deux.
θ=21: C=3,694528/12=0,308, ordre 2 — et les rapports mesurés du trapèze tendent vers 4 par au-dessus (4,19, 4,04, ), le signe du terme correctif étant opposé à celui d'Euler puisque ne change pas de signe alors que le fait en .