solution exacte, on peut résoudre numériquement une équation différentielle,
c’est à dire obtenir une valeur numérique approchée y(t)pour un ensemble de
temps discrets. L’objectif est que lorsque le pas de temps diminue, la solution
approchée converge vers la solution exacte.
2 Méthodes numériques
Nous allons détailler quelques méthodes numériques permettant de ré-
soudre l’équation différentielle
dy
dt =f(t, y), y(t0) = y0(2)
2.1 Méthode d’Euler
La méthode d’Euler est la méthode numérique la plus simple pour résoudre
une équation différentielle. Elle n’est jamais utilisée en condition réelle car peu
performante, mais elle a l’avantage de la simplicité. Elle consiste à partir du
point y0àt0et à intégrer la dérivée y0, qu’on obtient en utilisant l’équation
différentielle. On part du développement limité
y(t+ ∆t) = y(t)+∆tdy
dt +O(∆t2)(3)
On insère l’équation différentielle (2) dans cette équation et on obtient y(t+
∆t) = y(t) + f(y, t). On fixe un pas de temps fini ∆tet une grille de temps
{ti}={t0+i∆t}, et on note yi=y(ti). L’équation (3) donne alors le schéma
numérique :
yi+1 =yi+ ∆t·f(ti, yi)(4)
En fait, rien n’impose d’utiliser un pas de temps ∆tconstant. Au contraire,
on obtient une meilleure précision en prenant un pas de temps variable bien
choisi.
L’erreur est cumulative : à chaque étape, on utilise le résultat de l’étape
précédente et on accroît l’erreur. À chaque étape, l’erreur commise est en
O(∆t2), l’erreur totale sur le résultat final est donc contrôlée comme O(∆t)
(méthode d’ordre 1), ce qui est assez lent : il faut un pas de temps très petit
pour obtenir un résultat proche de la valeur exacte.
Une implémentation de la méthode d’Euler pour résoudre l’équation (2)
sur l’intervalle [t0, tf]avec un pas de temps dt est donc, en code Matlab :
t = t0:dt:tf; % on fixe la grille de temps
n = length(t);
y = zeros(1,n); % on fixe la taille du tableau y
y(1) = y0; % on fixe la condition initiale
for i=1:n-1 % i+1 ne doit donc pas dépasser n
y(i+1) = y(i) + dt*f(t(i),y(i)); % schéma numérique
end
2