Méthodes de Runge-Kutta

Objectifs d'apprentissage

À la fin de cette leçon, vous serez en mesure de :

  • Comprendre pourquoi une seule pente (Euler) ne suffit pas
  • Construire l'idée de combiner plusieurs pentes pour mieux approximer
  • Appliquer la méthode RK4 classique pas à pas
  • Comprendre le concept de pas adaptatif avec RK-Fehlberg

Prérequis

  • Méthode d'Euler et Euler modifiée
  • Développement de Taylor
  • Notion d'ordre de précision

Limites d'Euler : une seule évaluation de la pente

La méthode d'Euler évalue la pente f(tn,yn)f(t_n, y_n) au point de départ et la suppose constante sur tout l'intervalle [tn,tn+h][t_n, t_n + h]. Or, sur cet intervalle, la pente varie — d'autant plus que hh est grand.

La méthode de Taylor corrige ce problème en intégrant les dérivées successives y,y,y'', y''', \ldots, mais cela nécessite de dériver f(t,y)f(t, y) analytiquement, ce qui est souvent coûteux ou impraticable.

Principe des méthodes de Runge-Kutta. Au lieu de calculer des dérivées de ff, on évalue ff en plusieurs points de l'intervalle [tn,tn+h][t_n, t_n + h], puis on combine ces évaluations avec des poids appropriés. On obtient ainsi une approximation de la pente moyenne sur l'intervalle, sans jamais avoir à dériver ff.


Runge-Kutta d'ordre 2 (RK2)

Lien avec Euler modifiée

La méthode d'Euler modifiée de la leçon précédente est le cas le plus simple de Runge-Kutta. Rappelons son principe :

  1. Évaluer la pente k1=f(tn,yn)k_1 = f(t_n, y_n) au début
  2. Faire un pas d'Euler complet pour prédire y~=yn+hk1\tilde{y} = y_n + h \cdot k_1
  3. Évaluer la pente k2=f(tn+h,y~)k_2 = f(t_n + h,\, \tilde{y}) à ce point prédit
  4. Prendre la moyenne des deux pentes : yn+1=yn+h2(k1+k2)y_{n+1} = y_n + \frac{h}{2}(k_1 + k_2)

En utilisant deux évaluations de ff au lieu d'une, on passe de l'ordre O(h)O(h) à l'ordre O(h2)O(h^2).

Formulation générale

On peut écrire cette famille de méthodes sous la forme :

yn+1=yn+ak1+bk2y_{n+1} = y_n + a\,k_1 + b\,k_2

avec k1=hf(tn,yn)k_1 = h\,f(t_n, y_n) et k2=hf(tn+αh,yn+βk1)k_2 = h\,f(t_n + \alpha h,\, y_n + \beta k_1).

En développant par Taylor et en identifiant les termes, on obtient les conditions :

a+b=1,bα=12,bβ=12a + b = 1, \quad b\alpha = \frac{1}{2}, \quad b\beta = \frac{1}{2}

Ce système de 3 équations pour 4 inconnues admet une infinité de solutions. Trois choix classiques :

Varianteabα = βNom
I1/21/21Euler modifiée (Heun)
II011/2Point milieu
III1/43/42/3Ralston

La méthode d'Euler modifiée correspond au Type I. Ces variantes diffèrent par le choix du point intermédiaire où évaluer k2k_2, mais elles sont toutes d'ordre 2.


Runge-Kutta d'ordre 4 (RK4)

Principe

Avec 2 évaluations, on atteint l'ordre 2. En augmentant le nombre d'évaluations de ff, on peut atteindre des ordres plus élevés. Avec 4 évaluations bien choisies, on atteint l'ordre 4 — c'est la méthode RK4 classique, la plus utilisée en pratique.

Construction des 4 pentes

On évalue la pente à 4 endroits de l'intervalle [tn,tn+h][t_n, t_n + h] : au début, deux fois au milieu (avec des prédictions différentes), et à la fin.

Pente au début :

k1=hf(tn,yn)k_1 = h \cdot f(t_n,\, y_n)

C'est la pente évaluée au point de départ, identique à celle d'Euler.

Première pente au milieu :

On utilise k1k_1 pour prédire la valeur de yy au milieu de l'intervalle, puis on évalue ff à ce point prédit :

k2=hf ⁣(tn+h2,  yn+k12)k_2 = h \cdot f\!\left(t_n + \frac{h}{2},\; y_n + \frac{k_1}{2}\right)

Deuxième pente au milieu :

On reprend la même procédure, mais en utilisant k2k_2 comme prédicteur. Puisque k2k_2 est une meilleure estimation de la pente que k1k_1, le point prédit sera légèrement différent :

k3=hf ⁣(tn+h2,  yn+k22)k_3 = h \cdot f\!\left(t_n + \frac{h}{2},\; y_n + \frac{k_2}{2}\right)

Pente à la fin :

On utilise k3k_3 pour prédire la valeur de yy à la fin de l'intervalle :

k4=hf(tn+h,  yn+k3)k_4 = h \cdot f(t_n + h,\; y_n + k_3)

Combinaison :

Les quatre pentes sont combinées par une moyenne pondérée. Les pentes au milieu ont un poids double, conformément à la règle de Simpson :

yn+1=yn+16(k1+2k2+2k3+k4)\boxed{y_{n+1} = y_n + \frac{1}{6}(k_1 + 2k_2 + 2k_3 + k_4)}

Cette formule est d'ordre 4 : l'erreur locale est en O(h5)O(h^5), et l'erreur globale en O(h4)O(h^4).

Visualisation : construction des pentes

La visualisation ci-dessous décompose RK4 en 5 étapes. À chaque étape, la flèche pointillée montre la prédiction qui détermine le point d'évaluation suivant, et le trait plein montre la pente évaluée à ce point.

Processus de raffinement

Chaque pente corrige la précédente :

  • k1k_1 : pente au début (identique à Euler)
  • k2k_2 : pente au milieu, estimée à partir de la prédiction de k1k_1
  • k3k_3 : pente au milieu, estimée à partir de la prédiction (plus précise) de k2k_2
  • k4k_4 : pente à la fin, estimée à partir de la prédiction de k3k_3

Ce processus itératif permet à la combinaison pondérée de capturer la courbure de la solution sur l'intervalle.


Exemple : RK4 sur y=ty2y' = -ty^2

On applique RK4 à l'équation y=ty2y' = -ty^2, y(0)=1y(0) = 1, avec h=0.1h = 0.1.

Calcul du premier pas

t0=0t_0 = 0, y0=1y_0 = 1

k1=0.1×f(0,1)=0.1×0=0k_1 = 0.1 \times f(0, 1) = 0.1 \times 0 = 0
k2=0.1×f(0.05,1+0)=0.1×(0.05×1)=0.005k_2 = 0.1 \times f(0.05, 1 + 0) = 0.1 \times (-0.05 \times 1) = -0.005
k3=0.1×f(0.05,10.0025)=0.1×(0.05×0.99752)=0.00498k_3 = 0.1 \times f(0.05, 1 - 0.0025) = 0.1 \times (-0.05 \times 0.9975^2) = -0.00498
k4=0.1×f(0.1,10.00498)=0.1×(0.1×0.995022)=0.00990k_4 = 0.1 \times f(0.1, 1 - 0.00498) = 0.1 \times (-0.1 \times 0.99502^2) = -0.00990
y1=1+16(0+2(0.005)+2(0.00498)+(0.00990))=0.9950249y_1 = 1 + \frac{1}{6}(0 + 2(-0.005) + 2(-0.00498) + (-0.00990)) = 0.9950249

La valeur exacte est y(0.1)=0.99502488y(0.1) = 0.99502488, soit une erreur de l'ordre de 2×1082 \times 10^{-8}.

Résultats sur plusieurs pas

tRK4 yₙExact y(t)Erreur
0.01.00000001.00000000
0.10.99502490.9950249<107< 10^{-7}
0.20.98039220.9803922<107< 10^{-7}
0.30.95693770.9569378107\approx 10^{-7}
0.40.92592580.9259259107\approx 10^{-7}

Avec seulement 4 évaluations de ff par pas, RK4 atteint une précision de l'ordre de 10710^{-7} — bien meilleure qu'Euler modifiée (10510^{-5}).


Coût et efficacité

MéthodeOrdre globalÉval. de f / pasCommentaire
EulerO(h)O(h)1Simple mais peu précis
RK2 (Euler modifiée)O(h2)O(h^2)2Bon compromis pour les cas simples
RK4 classiqueO(h4)O(h^4)4Standard en pratique
RK-Fehlberg (RKF45)O(h5)O(h^5)6Avec estimation d'erreur

Diviser hh par 2 divise l'erreur par 24=162^4 = 16 pour RK4, ce qui donne un rapport coût/précision très favorable.

Comparaison visuelle : erreurs Euler vs RK2 vs RK4


Estimation d'erreur et pas adaptatif

RK4 ne fournit pas d'estimation de l'erreur commise à chaque pas. On ne sait donc pas a priori si le pas hh choisi est approprié.

Principe du pas adaptatif

Pour estimer l'erreur, on calcule deux approximations d'ordres différents sur le même pas. Si elles sont proches, le pas est suffisant ; sinon, on le réduit.

RK-Fehlberg (RKF45)

La méthode de Fehlberg utilise 6 évaluations de ff pour obtenir simultanément une approximation d'ordre 4 et une d'ordre 5. La différence entre les deux fournit une estimation de l'erreur EE.

Le pas est ensuite ajusté selon :

hnouveau=h(tolE)1/5h_{\text{nouveau}} = h \cdot \left(\frac{\text{tol}}{E}\right)^{1/5}

où l'exposant 1/51/5 provient de l'ordre 5 de la méthode. Si E>tolE > \text{tol}, on réduit hh et on refait le pas. Si EtolE \ll \text{tol}, on augmente hh pour les pas suivants.

C'est l'approche implémentée dans les solveurs d'EDO standards, notamment scipy.integrate.solve_ivp en Python.


Algorithme RK4

python
def rk4(f, t0, y0, h, n_steps):
  """
  Méthode de Runge-Kutta d'ordre 4.

  Paramètres:
      f: fonction f(t, y) = y'
      t0, y0: conditions initiales
      h: pas de discrétisation
      n_steps: nombre de pas

  Retourne:
      t, y: tableaux des valeurs
  """
  t = [t0]
  y = [y0]

  for j in range(n_steps):
      tj, yj = t[-1], y[-1]

      k1 = h * f(tj, yj)
      k2 = h * f(tj + h/2, yj + k1/2)
      k3 = h * f(tj + h/2, yj + k2/2)
      k4 = h * f(tj + h, yj + k3)

      y_next = yj + (k1 + 2*k2 + 2*k3 + k4) / 6

      t.append(tj + h)
      y.append(y_next)

  return t, y

Résumé

  • Euler utilise 1 pente (au début) → ordre 1
  • RK2 utilise 2 pentes → ordre 2. L'Euler modifiée en est un cas particulier
  • RK4 utilise 4 pentes (début, 2× milieu, fin) → ordre 4. C'est le standard en pratique
  • Les pentes se construisent l'une à partir de l'autre : chaque évaluation utilise la prédiction de la précédente
  • RK-Fehlberg ajoute une estimation d'erreur pour adapter automatiquement le pas

Pour aller plus loin

Dans la prochaine leçon, nous verrons les méthodes à pas multiples (Adams, Adams-Moulton), qui réutilisent les évaluations des pas précédents au lieu de tout recalculer à chaque pas.