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