Objectifs de la séance

Problème: population de bactéries

On souhaite modéliser la croissance d’une population bactérienne mise en culture dans une boîte de Petri. À cet effet, on distingue deux types de bactérie:

  1. des bactéries jeunes et immatures, notées \(a\), qui ne se divisent pas ;
  2. des bactéries matures, notées \(b\), susceptibles de se diviser par mitose.

On suppose que la reproduction a lieu à intervalles de temps discrets ; les bactéries \(b\) se divisent d’un instant à l’autre en une bactérie \(a\) et une bactérie \(b\) ; enfin, toute bactérie \(a\) devient mature d’un pas de temps à l’autre.

Première partie: définition du modèle et de la fonction de génération

  1. On note \(n_a(t)\) et \(n_b(t)\) le nombre de bactéries de chaque type à l’instant \(t\). Écrire le système de deux équations décrivant l’évolution de \(n_a(t+1)\) et \(n_b(t+1)\) en fonction de \(n_a(t)\) et \(n_b(t)\).

  2. Écrire une fonction PopBacteries(n0,T) qui renvoie trois vecteurs de taille \(T+1\) contenant l’évolution des deux catégories de bactérie de l’instant initial au temps \(T\) ainsi que l’évolution de la population totale. Le paramètre \(n_0\) est le nombre \(n_a(0)\), et l’on suppose que \(n_b(0)=0\).

  3. Pour \(T=20\) et \(n_0=1\), générer la population bactérienne correspondante et calculer le taux d’accroissement de la population totale. Représenter graphiquement ces résultats.

  4. On souhaite maintenant introduire de l’aléa dans la dynamique bactérienne. À cet effet, on suppose qu’une bactérie de type \(b\) a une probabilité \(p\) d’accomplir une mitose en \(a+b\). Modifier la fonction PopBacteries(n0,T,p) en ajoutant le paramètre \(p\).

  5. Étudier l’évolution de la population et son taux de croissance totale pour diverses valeurs de \(p\).

Deuxième partie: expériences numériques

  1. Rajouter une option last.only à la fonction PopBacteries permettant de retouner uniquement le nombre totale de bactéries en présence après un temps T.

  2. On propose d’étudier la distribution empirique du nombre de bactérie après un temps \(T=10\) en fonction de diverses valeurs de \(p\), et en partant d’une seule bactérie. Pour 50 valeurs de \(p\) échelonnées entre 0 et 1, simuler 100 populations de bactéries. Représenter la distribution d’intérêt sous forme de boxplot en fonction des valeurs de \(p\). Vous utiliserez à cet effet la fonction replicate.

  3. Même question que précédemment mais en parallèlisant votre code à l’aide de la fonction mclapply le long des valeurs de \(p\).

Troisième partie : estimation de temps d’arrêt

On souhaite maintenant déterminer combien de temps il est nécessaie à une certaine population pour atteindre une certaine taille.

  1. Écrire une fonction PopBacteries2(n0,nmax,p) qui renvoie le temps nécessaire pour que la population atteigne la taille nmax.

  2. Faire des simulations permettant d’évaluer le temps moyens pour atteindre une population de bactérie de taille 1000 en partant de \(n_0 = \{1, 2, 5, 10\}\) et pour des valeurs de \(p\) échelonnées entre 0.01 et 1.