Méthode d'Euler (ordinaire et modifiée)

Objectifs d'apprentissage

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

  • Appliquer la méthode d'Euler ordinaire pour résoudre une ÉD
  • Comprendre l'interprétation géométrique de la méthode d'Euler
  • Analyser l'erreur locale et globale de la méthode
  • Appliquer la méthode d'Euler modifiée (prédiction-correction)
  • Comparer les performances des deux variantes

Prérequis

  • Méthode des séries de Taylor
  • Pente d'une tangente
  • Notion d'erreur de troncature

Méthode d'Euler ordinaire

Principe

La méthode d'Euler est le cas le plus simple de la méthode de Taylor : on ne garde que le terme d'ordre 1.

y(tj+1)=y(tj)+hy(tj)+O(h2)y(t_{j+1}) = y(t_j) + h\,y'(t_j) + O(h^2)

En utilisant y=f(t,y)y' = f(t, y) et en négligeant le terme d'erreur :

💡

Formule d'Euler ordinaire

yj+1=yj+hf(tj,yj)y_{j+1} = y_j + h \cdot f(t_j, y_j)
  • Ordre local : O(h2)O(h^2)
  • Ordre global : O(h)O(h)

Interprétation géométrique

La méthode d'Euler consiste à :

  1. Calculer la pente f(tj,yj)f(t_j, y_j) au point actuel
  2. Suivre la tangente sur une distance hh
  3. Obtenir le point suivant (tj+1,yj+1)(t_{j+1}, y_{j+1})

C'est une extrapolation linéaire basée sur la pente locale.

⚠️

Limitation

La tangente ne suit pas la courbe exacte — elle s'en écarte progressivement. C'est pourquoi la méthode d'Euler n'est que d'ordre 1.

Algorithme

python
def euler(f, t0, y0, h, n_steps):
  """
  Méthode d'Euler ordinaire.

  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]
      y_next = yj + h * f(tj, yj)
      t.append(tj + h)
      y.append(y_next)

  return t, y

Analyse de l'erreur

Erreur locale de troncature

L'erreur commise à un seul pas, en supposant que yjy_j est exact :

τj+1=y(tj+1)[y(tj)+hf(tj,y(tj))]=h22y(ξj)\tau_{j+1} = y(t_{j+1}) - [y(t_j) + hf(t_j, y(t_j))] = \frac{h^2}{2}y''(\xi_j)

pour un certain ξj[tj,tj+1]\xi_j \in [t_j, t_{j+1}].

Erreur globale

L'erreur globale en=ynYne_n = y_n - Y_n (où YnY_n est la valeur exacte) se propage selon :

en+1(1+hK)en+h22M|e_{n+1}| \leq (1 + hK)|e_n| + \frac{h^2}{2}M

KK est la constante de Lipschitz de ff et M=maxyM = \max|y''|.

💡

Borne d'erreur globale

Après nn pas (soit tnt0=nht_n - t_0 = nh), l'erreur globale satisfait :

enhM2K(enhK1)=O(h)|e_n| \leq \frac{hM}{2K}(e^{nhK} - 1) = O(h)

L'erreur globale est donc proportionnelle à hh, pas à h2h^2.


Exemple : Euler ordinaire sur y=ty2y' = -ty^2

Appliquons Euler à y=ty2y' = -ty^2, y(0)=1y(0) = 1, avec h=0.1h = 0.1.

Calculs pas à pas

Pas 0 → 1 : t0=0t_0 = 0, y0=1y_0 = 1

y1=y0+hf(t0,y0)=1+0.1×(0×12)=1.0000y_1 = y_0 + h \cdot f(t_0, y_0) = 1 + 0.1 \times (-0 \times 1^2) = 1.0000

Pas 1 → 2 : t1=0.1t_1 = 0.1, y1=1.0000y_1 = 1.0000

y2=y1+hf(t1,y1)=1.0000+0.1×(0.1×12)=0.9900y_2 = y_1 + h \cdot f(t_1, y_1) = 1.0000 + 0.1 \times (-0.1 \times 1^2) = 0.9900

Pas 2 → 3 : t2=0.2t_2 = 0.2, y2=0.9900y_2 = 0.9900

y3=0.9900+0.1×(0.2×0.9801)=0.9704y_3 = 0.9900 + 0.1 \times (-0.2 \times 0.9801) = 0.9704

Tableau comparatif (h = 0.1)

tEuler yₙExact y(t)Erreur
0.01.00001.00000
0.11.00000.99505.0×103-5.0 \times 10^{-3}
0.20.99000.98049.6×103-9.6 \times 10^{-3}
0.30.97040.95691.3×102-1.3 \times 10^{-2}
0.40.94210.92591.6×102-1.6 \times 10^{-2}
⚠️

Observation

L'erreur croît à chaque pas et atteint environ 1.6% à t=0.4t = 0.4. C'est caractéristique d'une méthode d'ordre 1.


Méthode d'Euler modifiée (prédiction-correction)

Motivation

La méthode d'Euler utilise la pente au début de l'intervalle. On peut améliorer la précision en utilisant une moyenne des pentes au début et à la fin de l'intervalle.

Algorithme en deux étapes

💡

Formule d'Euler modifiée

1. Prédiction (Euler ordinaire) :

y~j+1=yj+hf(tj,yj)\tilde{y}_{j+1} = y_j + h \cdot f(t_j, y_j)

2. Correction (moyenne des pentes) :

yj+1=yj+h2[f(tj,yj)+f(tj+1,y~j+1)]y_{j+1} = y_j + \frac{h}{2}\left[f(t_j, y_j) + f(t_{j+1}, \tilde{y}_{j+1})\right]
  • Ordre local : O(h3)O(h^3)
  • Ordre global : O(h2)O(h^2)

Interprétation géométrique

  1. On calcule une première estimation y~j+1\tilde{y}_{j+1} avec Euler ordinaire
  2. On évalue la pente à ce point prédit : f(tj+1,y~j+1)f(t_{j+1}, \tilde{y}_{j+1})
  3. On utilise la moyenne des deux pentes pour avancer

C'est équivalent à la règle du trapèze appliquée à l'intégration de y=fy' = f.

Algorithme

python
def euler_modified(f, t0, y0, h, n_steps):
  """
  Méthode d'Euler modifiée (prédiction-correction).

  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]

      # Prédiction (Euler ordinaire)
      f_j = f(tj, yj)
      y_pred = yj + h * f_j

      # Correction (moyenne des pentes)
      f_pred = f(tj + h, y_pred)
      y_next = yj + (h / 2) * (f_j + f_pred)

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

  return t, y

Itérations multiples

L'étape de correction peut être répétée 2 à 3 fois en utilisant yj+1y_{j+1} corrigé pour recalculer f(tj+1,yj+1)f(t_{j+1}, y_{j+1}). Cela améliore la précision sans changer l'ordre.


Exemple : Euler modifiée sur y=ty2y' = -ty^2

Reprenons y=ty2y' = -ty^2, y(0)=1y(0) = 1, avec h=0.1h = 0.1.

Pas 0 → 1

Prédiction :

y~1=1+0.1×(0×12)=1.0000\tilde{y}_1 = 1 + 0.1 \times (-0 \times 1^2) = 1.0000

Correction :

f(0,1)=0,f(0.1,1.0000)=0.1×12=0.1f(0, 1) = 0, \quad f(0.1, 1.0000) = -0.1 \times 1^2 = -0.1
y1=1+0.12(0+(0.1))=10.005=0.9950y_1 = 1 + \frac{0.1}{2}(0 + (-0.1)) = 1 - 0.005 = 0.9950

Valeur exacte : y(0.1)=0.995025y(0.1) = 0.995025. Erreur : 2.5×1052.5 \times 10^{-5}

Pas 1 → 2

Prédiction :

y~2=0.9950+0.1×(0.1×0.99502)=0.9851\tilde{y}_2 = 0.9950 + 0.1 \times (-0.1 \times 0.9950^2) = 0.9851

Correction :

f(0.1,0.9950)=0.09900,f(0.2,0.9851)=0.1941f(0.1, 0.9950) = -0.09900, \quad f(0.2, 0.9851) = -0.1941
y2=0.9950+0.12(0.099000.1941)=0.9803y_2 = 0.9950 + \frac{0.1}{2}(-0.09900 - 0.1941) = 0.9803

Valeur exacte : y(0.2)=0.980392y(0.2) = 0.980392. Erreur : 4.6×1054.6 \times 10^{-5}

Tableau comparatif (h = 0.1)

tPréditCorrigéExactErreur
0.01.0000001.0000000
0.11.0000000.9950000.9950252.5×1052.5 \times 10^{-5}
0.20.9851000.9803460.9803924.6×1054.6 \times 10^{-5}
0.60.8493480.8474580.8474585.2×1085.2 \times 10^{-8}

Comparaison avec un pas plus grand (h = 0.5)

Pour mieux visualiser la différence entre les deux méthodes, utilisons h=0.5h = 0.5 sur l'intervalle [0,4][0, 4].

Euler ordinaire (h = 0.5)

tEuler ordinaireExactErreur relative
01.00001.00000%
0.51.00000.888912.5%
1.00.75000.666712.5%
1.50.46880.47060.4%
2.00.30400.33338.8%
2.50.21160.242412.7%
3.00.15560.181814.4%
3.50.11930.140415.0%
4.00.09440.111115.1%

L'erreur relative n'est pas monotone : entre t=1t = 1 et t=1,5t = 1{,}5, la courbe numérique croise la solution exacte et passe en dessous. Au voisinage de ce croisement l'erreur s'effondre — 0.4 % à t=1,5t = 1{,}5 — puis repart aussitôt. Ce creux ne dit rien de la qualité de la méthode : il signale seulement que les deux courbes se coupent là. C'est la valeur de fin d'intervalle, 15.1 %, qui est représentative.

Euler modifiée (h = 0.5)

tEuler modifiéeExactErreur relative
01.00001.00000%
0.50.87500.88891.6%
1.00.66250.66670.6%
1.50.47910.47061.8%
2.00.34590.33333.8%
2.50.25410.24244.8%
3.00.19120.18185.2%
3.50.14750.14045.1%
4.00.11650.11114.9%

Amélioration significative

Avec le même pas h=0.5h = 0.5, Euler modifiée atteint une erreur de 3.8% à t=2t = 2 contre 8.8% pour Euler ordinaire — une erreur environ 2.3 fois plus faible. L'écart se creuse rapidement quand hh diminue : facteur ~7 à h=0.1h = 0.1 et ~70 à h=0.01h = 0.01, conformément aux ordres O(h)O(h) et O(h2)O(h^2).

Visualisation interactive

Convergence : erreur vs h


Comparaison des méthodes

CritèreEuler ordinaireEuler modifiée
Ordre localO(h2)O(h^2)O(h3)O(h^3)
Ordre globalO(h)O(h)O(h2)O(h^2)
Évaluations de f par pas12
ComplexitéSimpleModérée
Utilisation recommandéePédagogique uniquementApplications simples

Résumé

  • Euler ordinaire : yj+1=yj+hf(tj,yj)y_{j+1} = y_j + hf(t_j, y_j) — ordre global O(h)O(h)
  • Euler modifiée : prédiction puis correction avec moyenne des pentes — ordre global O(h2)O(h^2)
  • L'erreur globale croît avec le nombre de pas (accumulation)
  • Euler modifiée nécessite 2 évaluations de ff par pas mais gagne un ordre de précision

Pour aller plus loin

Dans la prochaine leçon, nous verrons les méthodes de Runge-Kutta, qui généralisent l'idée d'Euler modifiée pour atteindre des ordres de précision encore plus élevés.