Travail pratique sur les équations différentielles

Rappel théorique : approximation numérique d’équations différentielles ordinaires

En général il n’existe pas de solutions analytiques pour les équations différentielles d’un intérêt pratique en ingénierie, c’est pourquoi on est obligé d’utiliser des méthodes numériques pour approximer la solution. Nous présentons ici une famille de méthodes numériques : les méthodes de Runge-Kutta qui permettent d’approximer les solutions d’équations différentielles ordinaires \[ \frac{\mathrm{d}y}{\mathrm{d}t} = F(y,t), \quad y(t_0)=y_0, \]\(F\) est une fonction qui dépend de \(y\) et de \(t\), et où \(y_0\in\mathbb{R}\) est la condition initiale de l’équation différentielle.

Par exemple, dans le cas de l’équation différentielle \[ y'(t)=y(t)+8t^2+1, \] \(F(y,t)=y(t)+8t^2+1\).

Afin d’avoir une solution unique, il est nécessaire de donner une condition initiale à une équation différentielle, de la forme \(y(t_0)=y_0\). Ici on pourrait par exemple avoir \[ y(t=0)=0. \]

Les méthodes de Runge-Kutta

Les méthodes de Runge–Kutta sont une famille de méthodes explicites pour résoudre des équations différentielles ordinaires. Elles ont la forme général suivante \[ y_{n+1}=y_0+\delta t\sum_{i=1}^s b_ik_i, \]\(\delta t\) est le pas de temps, et \[ y_n\equiv y(t_n), \] avec \(t_n=t_0+n\delta t\). La valeur des \(k_i\) dépend de la précision de l’algorithme (et donc de la valeur du nombre “d’étages” \(s\)) et ils sont donnés de façon itérative par \[\begin{aligned} k_1&=F(y_n,t_n),\\ k_2&=F(y_n+a_{21}\delta t k_1,t_n+c_2\delta t),\\ &\cdots\\ k_s&=F(y_n+a_{s1}\delta t k_1+a_{s2}\delta t k_2+\cdots +a_{s,s-1}\delta t k_{s-1},t_n+c_s \delta t).\end{aligned}\] et où les \(a_{ij}\), \(b_i\) et \(c_i\) sont propres de nouveaux au nombre d’étages \(s\) de la méthode. Pour \(s=1\), on a simplement \(c_1=0\), \(b_1=1\) et donc il vient \[y_{n+1}=y_n+\delta t F(y_n,t_n).\] Cette méthode s’appelle également méthode d’Euler explicite (vous l’avez peut-être reconnue). Pour \(s=2\), on obtient \(c_1=0\), \(c_2=1/2\), \(a_{21}=1/2\), \(b_1=0\), et \(b_2=1\). On a donc \[ y_{n+1}=y_n+\delta t F\left(y_n+\frac{\delta t}{2}F(y_n,t_n),t_n+\frac{\delta t}{2}\right). \] Cette méthode s’appelle également méthode de point du milieu (elle est proche de la méthode du point du milieu pour les intégrales).

Finalement, une méthode bien connue pour les méthode de Runge–Kutta est celle d’ordre 4 \[ y_{n+1}=y_n+\frac{1}{6}(k_1+2(k_2+k_3)+k_4), \]\[\begin{align} k_1&=\delta tF(y_n, t_n),\\ k_2&=\delta tF\left(y_n+\frac{k_1}{2}, t_n+\frac{\delta t}{2}\right),\\ k_3&=\delta tF(y_n+\frac{k_2}{2}, t_n+\frac{\delta t}{2}),\\ k_4&=\delta tF(y_n+k_3, t_n+\delta t). \end{align}\]

L’équation de Lorenz

L’équation de Lorenz est un système d’équations différentielles ordinaires agissant sur une variable vectorielle à trois composantes \(\vec y(t)=(y_x(t),y_y(t),y_z(t))\) \[\begin{aligned} \frac{\mathrm{d}y_x}{\mathrm{d}t}&=\sigma(y_y-y_x),\\ \frac{\mathrm{d}y_y}{\mathrm{d}t}&=y_x(\rho-y_z)-y_y,\\ \frac{\mathrm{d}y_z}{\mathrm{d}t}&=y_yy_x-\beta y_z, \end{aligned}\] où les constantes sont données par \(\beta=8/3\), \(\sigma=10\), et \(\rho=28\).