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 de la valeur exacte ;
- 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 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 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 , 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 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 .
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 . Le facteur 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:
dont la solution, que l'on obtient par la méthode des équations linéaires du premier ordre d'Analyse II, est
Vérifions l'hypothèse: partout, donc est lipschitzienne en avec , et le théorème 9.1 s'applique sur tout entier. Notons au passage , dont le module maximal sur vaut , atteint en : ces deux constantes, et , 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 en intervalles égaux.
Par convention, — la valeur calculée au premier nœud est la donnée initiale, exacte. L'erreur initiale 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 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:
En remplaçant par selon l'équation, puis les valeurs exactes par les valeurs calculées, on obtient
C'est la méthode d'Euler explicite, de fonction d'incrément . 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 et , donne, si est deux fois dérivable,
avec . 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 , et il se majore. Elle suggère aussi une famille de méthodes — garder le terme en , celui en , etc. — au prix de dérivées de que l'on n'a généralement pas: pour un second membre un peu compliqué, 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 entre et ; le théorème fondamental du calcul intégral (Analyse I, chapitre 10) donne l'identité exacte
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, , redonne exactement Euler explicite (9.6).
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 par pas, soit évaluations pour parcourir , 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 est recalculé par et non accumulé par t += h: accumuler additions flottantes ferait dériver la grille elle-même, d'une quantité bornée par d'après le chapitre 1. Sur pas, la différence est visible.
Appliquez la méthode d'Euler explicite au problème , , avec le pas . Quelle valeur approchée obtenez-vous en ?
Complétez la fonction euler(f, t0, y0, h, n) pour qu'elle exécute pas d'Euler explicite et renvoie la liste des couples . Le programme doit reproduire le tableau de l'exemple 9.1: cinq lignes, à deux décimales puis à six.
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.
| en | 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 , puis , puis , puis : elle tend vers 2 sans jamais l'atteindre.
Vous mesurez, pour une méthode inconnue, les erreurs , et aux pas , et . Quel est son ordre?
Euler implicite, et ce que coûte un pas
Reprenons (9.8) et choisissons cette fois le rectangle à droite: . Il vient
C'est la méthode d'Euler implicite (ou rétrograde). L'inconnue 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 , l'équation
C'est le sujet du chapitre 2, et la réponse y est la méthode de Newton:
initialisée par , ou mieux par le prédicteur d'Euler explicite , qui est déjà à de la réponse. Deux ou trois itérations suffisent alors, chacune coûtant une évaluation de et une de . , et il exige en plus une dérivée que l'on n'a pas toujours.
Notons aussi, avec le chapitre 2, que si l'application est une contraction de rapport , donc l'itération de point fixe la plus naïve converge déjà. C'est pourquoi la condition revient partout dans la littérature des méthodes implicites: elle garantit que le pas est bien défini et calculable.
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.
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:
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:
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 vaut , d'où une erreur locale en et, par le théorème 9.3 ci-dessous, une erreur globale en .
L'idée de Heun consiste à supprimer le caractère implicite en remplaçant l'inconnue du membre de droite par une prédiction, fournie par Euler explicite:
Le prédicteur commet une erreur en ; elle entre dans le correcteur multipliée par , donc contribue en à l'erreur du pas — . 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 supplémentaire.
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 , la formule (9.8) demande la moyenne de ; 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 , le tableau se réduit à trois paramètres , , , , 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
C'est une famille à un paramètre. Le choix , donne ; le choix , , donne le ; le choix donne la méthode de Ralston, qui minimise la constante d'erreur. Leurs tableaux de Butcher:
Remettez dans l'ordre les opérations d'un pas de la méthode de Heun, du point vers .
Glissez les éléments pour les mettre dans le bon ordre
- Évaluer la pente à l'arrivée prédite:
- Passer au pas suivant en posant
- Prédire la valeur d'arrivée par un pas d'Euler explicite:
- Avancer de la moyenne des deux pentes:
- Évaluer la pente au point de départ:
RK4, la méthode classique
Avec quatre étages, le choix devenu canonique est celui de Kutta (1901), qui reproduit la formule de Simpson lorsque ne dépend pas de :
Son tableau de Butcher:
Les poids sont ceux de Simpson, avec le point milieu compté deux fois parce qu'il est évalué deux fois: à partir de , puis à partir de . 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)
Le coût est de quatre évaluations de par pas, plus une dizaine d'opérations arithmétiques, négligeables devant une évaluation de dès que celle-ci est un tant soit peu compliquée. Un pas de RK4 coûte donc quatre pas d'Euler.
Effectuez un pas de RK4 sur depuis avec . Quelle valeur obtenez-vous? Donnez quatre décimales.
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 , à sept décimales, pour et .
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 à étages ne peut pas dépasser l'ordre , et surtout que l'ordre n'est atteignable que pour : 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.
Écrivez la méthode de Heun (9.11) sous forme prédicteur-correcteur, puis produisez le tableau des erreurs en pour quatre pas successivement divisés par deux, avec la colonne des rapports. Chaque ligne affiche à quatre décimales, l'erreur en notation scientifique à trois décimales, puis le rapport à deux décimales, un tiret pour la première ligne.
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 avec un qui dépend de la méthode. Il est temps de démontrer pourquoi.
La division par dans (9.16) est une convention, mais elle est universelle et il faut savoir la lire: l'erreur du pas vaut , donc une méthode consistante d'ordre commet une erreur en à chaque pas et il y a pas. Le compte naïf — « erreurs de taille , donc une erreur totale de » — 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 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 . Pour , le membre de droite de (9.18) vaut et l'inégalité est une égalité. Supposons (9.18) vraie au rang . Alors
ce qui est (9.18) au rang . Le cas est immédiat.
La forme (9.18) est encore un peu opaque; on la rend lisible avec l'inégalité , valable pour tout réel (elle exprime la convexité de l'exponentielle, dont la tangente en est ). Il vient , donc
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, et (9.20) est vérifiée avec ; pour Heun, un calcul de deux lignes donne ; pour RK4, . , 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:
La solution exacte, par la définition (9.16) de l'erreur locale de troncature, réarrangée:
Cette seconde ligne est une identité, pas une approximation: a été défini pour qu'elle le soit. Soustrayons, avec :
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 est la fraîche.
Majorons. L'inégalité triangulaire, puis la stabilité (9.20) appliquée au crochet avec et , puis la consistance (9.17):
Nous sommes exactement dans les hypothèses du théorème 9.2, avec , et . La conclusion (9.19) donne
Il ne reste qu'à simplifier: , et le facteur du dénominateur absorbe une puissance de du numérateur, laissant . On obtient (9.21).
Si , le premier terme disparaît; et comme , l'exponentielle est majorée par , d'où avec la constante annoncée, indépendante de et de .
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, , et (9.20) est exactement l'hypothèse de Lipschitz (9.2) sur : la méthode est stable avec , pour tout .
Consistance d'ordre 1. La solution exacte étant , la formule de Taylor avec reste de Lagrange (Analyse I, chapitre 9) donne, pour chaque , l'existence d'un tel que
Comme est solution, . En reportant dans la définition (9.16):
Donc pour tout : la méthode est consistante d'ordre avec .
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 :
d'où, par l'inégalité triangulaire et la condition de Lipschitz (9.2),
C'est le lemme 9.2 avec et , et puisque . Il donne
Enfin , donc , ce qui donne (9.22).
Une méthode à un pas a une erreur locale de troncature bornée par . 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 le résultat d'une méthode d'ordre et celui d'une méthode d'ordre , calculés depuis le même . Alors
donc, en soustrayant,
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 et qui partagent leurs étages, c'est-à-dire le même tableau et les mêmes , et ne diffèrent que par les poids . Le tableau de Butcher porte alors deux lignes de poids:
et l'estimation d'erreur est gratuite: elle vaut , 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 et de Heun contiennent déjà le pas d'Euler.
Reste à choisir le nouveau pas. Si l'on demande une tolérance par pas et que l'erreur se comporte comme , le pas qui atteindrait exactement la tolérance vérifie , d'où, en divisant les deux relations:
où 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 à , on accepte si c'est assez bon et l'on recommence sinon, et dans les deux cas on met à jour par (9.25) — en bridant le facteur multiplicatif, typiquement entre et , pour éviter les oscillations.
Au premier pas de , , avec , la paire Heun-Euler donne l'estimation . Quel pas la formule (9.25) propose-t-elle pour la tolérance , avec et ?
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 , RK4 calcule quatre vecteurs , 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 . Seul le coût change: une évaluation du second membre coûte maintenant composantes.
La réduction d'une équation d'ordre à un système du premier ordre est la même qu'en Analyse II. Soit
On pose , , …, , 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 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 s, en millimètres et en mm/s, à six décimales.
Synthèse
- Le problème de Cauchy , possède une solution unique sur dès que est continue et (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 — le même facteur qui bornera l'erreur numérique.
Laquelle de ces méthodes est implicite?
Exercices
Vous pouvez afficher le corrigé directement sous chaque énoncé après avoir cherché la solution.
Soit le problème de Cauchy , , sur .
Une méthode que l'on ne vous nomme pas, appliquée au problème témoin , , donne les erreurs suivantes en . Ce sont de vraies mesures, produites en exécutant la méthode et en comparant à .
- Écrire le tableau de Butcher de la méthode de Ralston, définie par 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 intègre exactement l'équation , , quel que soit .
Le mouvement d'un satellite dans le plan, en unités adimensionnées, obéit à
Pour , la théta-méthode est définie par
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).