3. Résolution numérique d’une équation différentielle d’ordre 1#

But : mettre en œuvre la méthode d’Euler à l’aide d’un langage de programmation pour simuler la réponse d’un système linéaire du premier ordre à une excitation de forme quelconque.

3.1. Rappels sur la méthode d’Euler#

La méthode d’Euler est une méthode numérique d’intégration d’une équation différentielle.

3.1.1. Position du problème.#

Un équation différentielle d’ordre 1 peut se mettre sous la forme :

\[ \frac{\rm{d}y}{\rm{dt}}(t) = f(t, y(t)) \]

avec \(y(t_0) = y_0\)

\(y\) est la fonction inconnue.

Exemple : Pour un circuit RC série relié à une tension de tension \(E(t)\), l’équation d’évolution est :

\[\frac{\rm{d}u}{\rm{dt}} = \frac{1}{RC}\left (E(t) - u(t) \right )\]

La fonction \(f\) est donc :

\[f(t, u) = \frac{1}{RC}\left (E(t) - u(t) \right )\]

3.1.2. Schéma d’intégration d’Euler explicite#

On considère N+1 instants \(t_k\) espacés d’un pas d’intégration \(h\) (\(t_{k+1} - t_k = h\)) et commençant à \(t_0\). On note les valeurs de la fonctions \(y\) aux instants \(t_k\) \(y_k = y(t_k)\). On définit ainsi deux suites \((t_k)_{k\in[0,N]}\) et \((y_k)_[k \in 0,N]\)

3.1.2.1. Vision intégrale#

Intégrons l’équation différentielle entre \(t_0\) et \(t_k\):

\[ \int_{t_0}^{t_k} \frac{\rm{d}y}{\rm{dt}}(t) \rm{d}t = \int_{t_0}^{t_k} f(t, y(t)) \rm{d}t \]

soit:

\[ y(t_{k}) - y(t_0) = \int_{t_0}^{t_k} f(t, y(t)) \rm{d}t \]

Une méthode d’intégration numérique consiste à approcher l’intégrale du membre de droite par un calcul numérique comme on a pu le faire précédemment. Dans le cas de la méthode d’Euler, il s’agit d’approcher cette intégrale par la méthode des rectangles vue précédemment.

En pratique, on utilise une relation de récurrence comme pour le calcul d’intégrale pour calculer les termes de la suite \((t_k)\) pas à pas. En effet, de:

\[\begin{split} \begin{cases} y(t_{k}) &= y(t_0) + \int_{t_0}^{t_k} f(t, y(t)) \rm{d}t\\ y(t_{k+1}) &= y(t_0) + \int_{t_0}^{t_{k+1}} f(t, y(t)) \rm{d}t \end{cases} \end{split}\]

Il vient la relation de récurrence:

\[ y(t_{k+1}) = y(t_k) + \int_{t_k}^{t_{k+1}} f(t, y(t)) \rm{d}t \underbrace{\approx}_{rectangle} y(t_k) + f(t_k, y({t_k})) * h \]

soit la récurrence qu’on appelle…

Important

Schéma d’Euler explicite.

(3.1)#\[\begin{equation} y_{k+1} = y_k + f(t_k, y_k) * h \end{equation}\]

3.1.2.2. Vision différentielle#

On peut voir aussi la méthode d’Euler comme une approximation de la dérivée par un taux de variation fini calculé pour un pas de temps \(h\) choisi :

\[ \frac{\rm{d}y}{\rm{dt}} \approx \frac{y(t_{k+1}) - y(t_k)}{t_{k+1}-t_k} \]

On peut ainsi déterminer la valeur de \(y_{k+1}=y(t_{k+1})\) par récurrence à partir de \(y_k=y(t_k)\) et \(f\) :

\[ y_{k+1} = y_k + h \times f(t_k, y_k) \]

C’est le même schéma d’Euler

3.1.3. Synthèse#

Pour résoudre numériquement une équation différentielle d’ordre 1 par la méthode d’Euler avec un pas de temps \(h\), on va donc:

  • définir une fonction \(f(t,y)\) qui est une expression de la dérivée obtenue par l’équation différentielle:

\[ \frac{\rm{d}y}{\rm{dt}}(t) = f(t,y) \]
  • créer une liste temps contenant les instants \(t_k = t_0 + k \times h\)

  • calculer une liste contenant les éléments de la suite \(y_k = y(t_k)\) définie par la récurrence:

\[ y_{k+1} = y_k + f(t_k, y_k) * h \]

avec \(y_0 = y(t_0)\) la condition initiale.