next up previous contents
suivant: Liste des figures monter: Exercices d'analyse numérique précédent: Interpolation   Table des matières

Résolution approchée des équations différentielles

On renvoie à [4] pour une présentation des équations différentielles et des méthodes numériques pour les résoudre.

Matlab  possède plusieurs solveurs approchés pour les équations différentielles du type

\begin{eqnarray*}
&y'(t)&=f(t,y(t)),\quad t\in {I\!\!R},\\
&y(t_0)&=y_0\in {I\!\!R}^n.
\end{eqnarray*}

Le solveur choisi, par exemple ode45, ode23, ode113, ode15s, ode23s, ode23t, ou ode23tb, résout le problème de Cauchy ci-dessus en utilisant une méthode et une précision choisies par l'utilisateur. La syntaxe de base est

[T,Y] = solver(odefun,tspan,y0)
% odefun: fonction au second membre du systeme différentiel
%         ci dessus f(t,y)
% tspan : [t0,t1,...,tf] temps où on veut calculer la solution y
% y0    : Condition initiale y(t0) (vecteur colonne n composantes)
% T     : En sortie les temps où est calculée la solution
% Y     : Les valeurs de la solution aux temps T

Exercice 18   Dans cet exercice on s'intéresse à un modèle de dynamique des populations. On va illustrer graphiquement l'évolution du système proie-prédateur $(u(t),v(t))$ ($u$: prédateur et $v$: proie) suivant le modèle de Volterra:

\begin{eqnarray*}
(P)\quad \left\{\begin{array}{l}
{{du}\over {dt}}(t)={1\over 2...
...r {dt}}(t)=v(t)(1-u(t)),\\
u(0)=2,\\
v(0)=2
\end{array}\right.
\end{eqnarray*}

  1. On pose $Y=(u,v)^T$ la fonction vectorielle solution du système différentiel ci-dessus. Programmer dans un M-file la fonction $f(t,Y)$ de ${I\!\!R}^+\times{I\!\!R}^2$ dans ${I\!\!R}^2$ de ce système. Attention! le système est autonome ($f$ ne dépend pas de $t$), mais Matlab  s'attend à ce que la fonction passée en argument du solveur dépende de $t$ et de $Y$.
  2. Définir un vecteur $T$ de $50$ temps uniformément répartis entre $0$ et $25$. Calculer une solution approchée de (P) aux temps $T$ en utilisant la fonction Matlab  ode23
  3. Représenter sur le même graphique l'évolution $u$ en bleu et de $v$ en rouge en fonction de $t$. Représenter dans une autre fenêtre l'évolution de $v$ en fonction de $u$
On observera en particulier sur les figures 4 que le système semble périodique en temps.

Figure 4: Modèle proie-prédateur, évolution des 2 populations en fonction du temps à gauche et d'une population en fonction de l'autre à droite.
\begin{figure}\centerline{
\epsfysize=6cm
\leavevmode\epsfbox{volterra1.eps}
\epsfysize=6cm
\leavevmode\epsfbox{volterra2.eps}
}\end{figure}

Des explications plus détaillées sur ce modèle proie - prédateur sont disponibles dans un TP de maîtrise en SCILAB

Exercice 19   Dans cet exercice tiré de [5], on veut calculer la trajectoire d'un chien (C) lancé à la poursuite d'un lièvre (L). Le chien court à vitesse constante - le plus vite possible! - mais en ajustant sa trajectoire de manière à ce que sa vitesse soit toujours colinéaire à la droite (LC). On note $Y_l(t)=(y_1^l(t),y_2^l(t))$ la trajectoire du lièvre, qui est une donnée du problème et $Y_c(t)=(y_1^c(t),y_2^c(t))$ celle du chien qui est l'inconnue
  1. Traduire les hypothèses: le chien se déplace avec une vitesse constante en module $v_c$ et la vitesse du chien colinéaire à la droite (LC).
  2. Ecrire le système différentiel vérifié par $Y_c(t)$. Programmer en Matlab  la fonction $f(t,y)$ de ${I\!\!R}^+\times{I\!\!R}^2$ dans ${I\!\!R}^2$ de ce système différentiel.
  3. Écrire un script pour intégrer $Y_c(t)$ à l'aide de ode23. On représentera sur le même graphique les trajectoires du lièvre et du chien en fonction du temps avec des couleurs différentes. Utiliser la fonction Matlab  pause et des marqueurs pour visualiser l'avancement des deux protagonistes.
  4. Tester avec différentes trajectoires pour le lièvre et différentes vitesses pour le chien.


next up previous contents
suivant: Liste des figures monter: Exercices d'analyse numérique précédent: Interpolation   Table des matières
marie 2005-02-01