TP 6 - Page personnelle d`Alexandre MIZRAHI

Transcription

TP 6 - Page personnelle d`Alexandre MIZRAHI
Analyse numérique
Troisième année de licence M
2009/2010
Travaux dirigés sur ordinateur n◦ 6 :
Modèle proies-prédateurs
Le but de ce TP est d’approcher numériquement la solution de systèmes différentiels à l’aide d’un
schéma d’Euler. On va considérer le problème proies-prédateurs. Ce problème a été analysé pour la première fois par Vito Volterra au début des années 1920. Volterra avait été contacté par le bureau de la pêche
italienne pour justifier les données statistiques obtenues. Il avait été remarqué que pendant la première
guerre mondiale où la pêche était très réduite, la proportion de requins et autres prédateurs impropres à la
consommation était nettement supérieure à ce qu’elle était avant la guerre et à ce qu’elle redevenait ensuite.
Volterra proposa de modéliser ce problème à l’aide d’un système différentiel : soit s(t) le nombre de poissons comestibles (qu’on nommera sardines) et r(t) le nombre de prédateurs (qu’on nommera requins). On
modélise l’évolution de la population composée de sardines (s) et de requins (r) par le système d’équations
différentielles :
0
s (t)=s(t)(a − br(t))
(E)
r0 (t)=r(t)(cs(t) − d)
où a, b, c, d sont des constantes et qui repose sur les hypothèses suivantes :
– En l’absence de requin les sardines croissent de façon exponentielle (terme s0 (t) = as(t)).
– En l’absence de sardine les requins décroissent de façon exponentielle (terme r0 (t) = −dr(t)).
– Les rencontres entre proies et prédateurs représentées par r(t)s(t), profite à l’accroissement des requins, (terme s0 (t) = cs(t)r(t)), et à la diminution des sardines (terme −br(t)s(t)).
On donne les conditions initiales
: s(0) = s0 et r(0) = r0 au temps t = 0.
On pose f (t, y1 , y2 ) = y1 .(a − by2 ), y2 .(cy1 − d) , on doit donc résoudre y 0 = f (t, y) avec y(0) =
(s0 , r0 ). ce qui donne le schéma d’Euler suivant :
sn+1 =sn + hsn (a − brn )
(S)
rn+1 =rn + hrn (csn − d)
Question 1 :
1. Ecrire un petit code scilab, permettant de construire deux vecteurs S et R comprenant les valeurs des
suites (sn ) et (rn ). On prendra pour les calculs a = 1; b = 1; c = 1; d = 1, h = 0.01, s0 = 5, r0 = 2
et on fera varier n de 1 à N = 2000.
2. Tracer les points de coordonnées (hn, sn ) qui représente l’évolution du nombre de sardines dans le
temps.
3. Tracer les points de coordonnées (hn, rn ) qui représente l’évolution du nombre de requins dans le
temps.
4. Tracer les points de coordonnées (sn , rn ) qui représente le nombre de sardines et le nombre de
requins (plan de phase).
5. On voit apparaitre une courbe en spirale, en modifiant le choix de h et de N pensez-vous que ce soit
une spirale ou une courbe fermée ?
Question 2 :Méthode du point milieu. On reprend la méthode du point milieu vue lors du dernier TP
c’est à dire qu’au lieu de regarder la suite Un+1 = f (tn , Un ), on regarde la suite définie par
Vn+1 = f (tn + 12 h, Vn + 21 hf (tn , Vn )).
1. Aller chercher, puis compléter, le code Voltera.sce suivant sur la page d’Alexandre MIZRAHI
1
a=1;b=1;c=1;d=1;
h=0.01
N=2000
function z=f1(x,y)
z=x*(a-b*y)
endfunction
function z=f2(x,y)
z=y*(c*x-d)
endfunction
S(1)=5;R(1)=2;
for k=1:N
s1=f1(S(k),R(k));
s2=f2(S(k),R(k));
s11=f1(S(k)+h/2*s1,R(k)+h/2*s2);
s22=f2(S(k)+h/2*s1,R(k)+h/2*s2);
S(k+1)=//.....à compléter
R(k+1)=//.....à compléter
end;
xset("window",1)
plot2d(S,R)
2. Que peut-on penser de la question 5 de la partie 1.
3. Tirer 50 point (s0 , r0 ) au hasard dans [0; 5] × [0; 5] et tracer les solutions correxpondantes.
Question 3 : On peut améliorer le modèle pour tenir compte de certanes contraintes (une évolution bornée
des sardines en abscence de requins, une saturation de l’effet requins sur les sardines, par exemple un
modèle du type suivant :

 s0 (t)=s(t) α − βs(t) − γ r(t)
(s(t)+δ)
(E 0 )
r(t)
0
 r (t)=r(t) εs(t) − ϕ
s(t)
Programmer ce système, les résultats obsérvés sont-ils très différents du cas précédent.
2