Open Source Your Knowledge, Become a Contributor

Technology knowledge has to be shared and made accessible for free. Join the movement.

Create Content

Etude d'un systeme proie-prédateur (Modèle discret de Lotka-Volterra)

Difficulté : Moyenne

Modélisation

Considérons deux espèces : une proie (des lièvres par exemple) et un prédateur (des lynx par exemple). On suppose qu'à ce jour, il y a 53000 proies et 9000 prédateurs et on se demande comment vont évoluer les populations de ces deux espèces. On suppose qu'il n'y a aucune autre intervention extérieur.

Une modélisation possible pour ce genre de système a été proposé par Lotka et Volterra. Pour des explications, on pourra par exemple regarder ici.

Si on note un la population de proies et vn la population de prédateurs à l'instant n, alors peut modéliser leur évolution par :

{un+1=(1+abvn).unvn+1=(1c+dun).vn

Nous allons prendre pour valeur a=0.09, b=0.00001, c=0.25 et d=0.000005.

Créez deux fonctions u et v qui prennent en entrée n et renvoie respectivement les valeurs de un et vn

Entrée : Un entier n .

Sortie : Deux fonctions u et v qui renvoie (avec return) respectivement les valeurs de un et vn.

Système de Lotka-Volterra
1
2
3
4
5
6
#Créez ici votre fonction u(n)
#Créez ici votre fonction v(n)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Représentation graphique

Pour voir graphiquement l'évolution des populations, copiez collez vos fonctions u et v dans la fenêtre ci-dessous. Ne surtout pas modifier ce qui apparait déjà, c'est pour améliorer les performances de calcul. Nous verrons plus tard pourquoi il est indispensable de le faire et comment on le fait.

Vous pouvez modifier la valeur du minimum et maximum de n affiché. Pour des valeurs comme 500 par exemple, il faudra modifier un peu vos fonctions u et v pour coller à la réalité : Si la population tombe à 0, elle ne peut plus varier ensuite.

Système de Lotka-Volterra
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from functools import lru_cache
#Valeurs minimum et maximum des n représentés. Vous pouvez les modifier
n_min=0
n_max=300
#Copiez collez vos fonctions u et v précédentes ci-dessous:
#Copiez collez vos fonctions u et v au dessus de ces lignes
#Le but des lignes ci-dessous est d'accélérer énormément les calculs. Ne pas y toucher.
u=lru_cache(maxsize=None)(u)
v=lru_cache(maxsize=None)(v)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Open Source Your Knowledge: become a Contributor and help others learn. Create New Content