Séance 2 : Étudier les interactions écologiques à l'aide d'équations différentielles

In [1]:
# Commençons par importer les outils dont nous aurons besoin. 
from functools import partial
import numpy as np
import matplotlib.pyplot as plt
import scipy.integrate 
%matplotlib inline
plt.rc('text', usetex=True)

Introduction

Il existe toute une classe de modèles permettant de rendre compte de l'évolution d'un certain nombre de grandeurs dans le temps et qui sont assez simple à écrire et à simuler : les systèmes d'équations différentielles du premier ordre (ODE).

  • Ces modèles sont déterministes. Ils font partie de la famille des systèmes dynamiques
  • Ces modèles sont en temps continu, les trajectoires sont définies sur un-sous ensemble de $\mathbb R$.
  • Ces modèles sont non spatialisés, on parle de modèle de champ moyen. L'espace d'état est de la forme $\mathbb R^N$, les grandeurs ne sont pas entières parce que l'on regarde la densité moyenne (en individus par unité de volume).
  • Ils peuvent être autonomes ou non. Nous allons commencer par un système autonome.

Dans le cas d'un modèle ODE du premier ordre autonome, on dispose de plusieurs outils pour représenter le comportement du modèle. Ils sont de plus en plus synthétiques (mais aussi de plus en plus couteux à établir). Dans l'ordre :

dynamical systems

  • Le tracé d'une trajectoire donne l'état du système au cours du temps pour certaines valeurs de paramètres et certaines conditions initiales. Pour le tracer il suffit d'intégrer l'ODE.
  • Le tracé du diagramme de phase donne le comportement qualitatif du système pour certaines valeurs de paramètres, mais toutes conditions initiales. Pour le tracer, il faut chercher les isoclines zéro et les points d'équilibre.
  • Le tracé du diagramme de bifurcation donne la position et la nature des équilibre du système pour (potentiellement) toutes valeurs de paramètres, et toutes conditions initiales.

Partie I : Croissance exponentielle - systèmes dynamiques linéaires en une dimension

Exercice 1 :

1) Résoudre analytiquement le système.

2) Simuler les trajectoire du système (S1) en utilisant sa solution analytique pour les paramètres et conditions initiales suivants :

a) $N_0 = 100$, $r = 0.5$

b) $N_0 = 100$, $r = -0.5$

(Indice : utiliser np.linspace et plt.plot).

Intégration numérique

Exercice 2 :

1) Écrire une fonction euler_explicite(y0, r, dt, T) qui simule la trajectoire du système (S1) en utilisant l'aire du rectangle rouge.

2) Tracer la trajectoire pour les paramètres suivants :

a) $N_0 = 100$, $r = 0.5$, $T = 10$, $dt = 1$

b) $N_0 = 100$, $r = -0.5$, $T = 10$, $dt = 1$

c) $N_0 = 100$, $r = -0.5$, $T = 50$, $dt = 5$

Comparer avec la solution analytique.

3) Comparer l'écart entre les trajectoires estimées et la solution analytique pour $dt\in [0.001, 0.01,0.1,1,2]$.

Exercice 3 :

1) Ecrire une fonction euler_implicite(y0, r, dt, T) qui simule la trajectoire du système (S1) en utilisant l'aire du rectangle vert.

2) Tracez la trajectoire pour les paramètres suivants :

a) y0 = 100, r = 0.5, T = 10, dt = 1

b) y0 = 100, r = -0.5, T = 10, dt = 1

c) y0 = 100, r = -0.5, T = 50, dt = 5

3) Comparer les résultats avec la méthode précédente.

Partie II : Croissance logistique - systèmes dynamiques non-linéaires en une dimension

Exercice 4 :

1) Écrire la nouvelle forme du modèle, où $r$ représente le taux de naissance per capita et $K$ la capacité biologique du système (i.e. le nombre maximum d'individu que le système supporte à l'équilibre). Calculer analytiquement ses équilibres et déduire leur stabilité.

2) Simuler une trajectoire de ce modèle et représenter là sous forme de graphe pour $r=1$ et $K=10$. (Indice : utiliser partial et scipy.integrate.odeint).

3) Tester pour plusieurs conditions initiales.

Diagramme de Phase

Exercice 5 :

Tracer le diagramme de phase en 1 dimension de la croissance logistique (S2) (dans le cas 1 dimension, représenter $N'=f(N)$). Placer les points d'équilibres, indiquer leur stabilité, et représenter le flot.

Diagramme de bifurcation

Exercice 6 :

Tracer le diagramme de bifurcation pour le paramètre de contrôle $K$ pour le système (S2).

Partie III : Modèles de Lotka-Volterra - systèmes dynamiques non-linéaires en deux dimensions

On ajoute une seconde espèce (sous forme d'une seconde dimension).

Stabilité des systèmes linéaires

Exercice 7 :

Étudier et représenter la stabilité des systèmes dynamiques linéaires suivants :

\begin{equation} A = \left [ \begin{array}{cc} 1 & 0 \\ 0 & 1 \\ \end{array} \right ] ,\ \ B = \left [ \begin{array}{cc} -1 & 1 \\ 1 & -1 \\ \end{array} \right ] ,\ \ C = \left [ \begin{array}{cc} -1 & 0 \\ 0 & 1 \\ \end{array} \right ], \ \ D = \left [ \begin{array}{cc} 0 & -1 \\ 1 & 0 \\ \end{array} \right ] ,\ \ E = \left [ \begin{array}{cc} -1 & -1 \\ 1 & 0 \\ \end{array} \right ] ,\ \ F = \left [ \begin{array}{cc} 1 & -1 \\ 1 & 0 \\ \end{array} \right ] \end{equation}

A) Modèle de Lotka-Volterra de compétition :

Exercice 8 :

1) Quelle est la nouvelle forme du système notée (S3) ?

2) Tracer les trajectoires comme des séries temporelles du modèle de LV pour les trois jeux de paramètes et les deux conditions initiales:

Jeux de paramètes :

  • $r_1=1$, $r_2=3$, $a_{1\to1}=1$, $a_{2\to1}=1.2$, $a_{1\to2}=1.2$ et $a_{2\to2}=1.5$

  • $r_1=1$, $r_2=3$, $a_{1\to1}=1$, $a_{2\to1}=1.2$, $a_{1\to2}=1.5$ et $a_{2\to2}=1$

  • $r_1=1$, $r_2=3$, $a_{1\to1}=1.2$, $a_{2\to1}=1$, $a_{1\to2}=1$ et $a_{2\to2}=1.5$

Conditions initiales : $(N_1(0)=0.3,N_2(0)=0.5)$ et $(N_1(0)=0.7,N_2(0)=0.2)$.

3) Tracer ces même trajectoires comme des courbes paramétrées dans l'espace des phases du modèle de LV. Décrire l'évolution dans chacun des cas.

Exercice 9 :

1) Trouver les isoclines zéro et les équilibres du modèle de Lotka-Volterra competitif (S3).

2) Tracer le diagramme de phase pour les trois jeux de paramètres utilisés exercice 7. (Indice: utiliser les fonctions plt.plot, plt.scatter et plt.streamplot).

3) Etudier numériquement la stabilité des équilibres. En déduire les conditions de coexistance de deux espèces.

B) Modèle de Lotka-Volterra proie-prédateur :

Exercice 10 :

Soit le modèle proie (N) - prédateur (P) suivant : $$(S4) = \begin{cases} \displaystyle{\frac{dN}{dt} }= bN - aNP \\ \\ \displaystyle{\frac{dP}{dt} }= cNP - dP \\ \end{cases}$$

1) Déterminer analytiquement les équilibres et leur stabilité.

2) Simuler ce modèle, tracer ses trajectoires comme des séries temporelles, puis comme des courbes paramétrées dans l'espace d'état, pour les paramètres et conditions initiales suivantes : $(a=0.01, b=0.02, c=0.01, d=0.02)$ et $(a=0.01, b=0.01, c=0.01, d=0.06)$ et $(N_0=3.6,P_0=2.1)$, $(N_0=1.8,P_0=4)$.

3) Ajouter les équilibres, les isoclines et le flot à l'espace d'état pour former le diagramme de phase.

C) Variante du modèle de Lotka-Volterra proie-prédateur :

Exercice 11 :

Soit le modèle suivant :

\begin{equation} (S5) = \begin{cases} \frac{dN}{dt} = bN(1-\frac{N}{K}) - aNP \\ \frac{dP}{dt} = cNP - dP \\ \end{cases} \end{equation}

1) Simuler quelques trajectoires. Quelles sont les différences avec le modèle (S4)?

2) Dessiner le diagramme de phase. Où sont les isoclines-zéro ? Où sont les équilibres ? Quelle est leur nature ?

3) Faire varier $c$. Faire un diagramme de bifurcation.