Connectez-vous pour consulter le corrigé.
MODÉLISATION MATHÉMATIQUE ET INFORMATIQUE
Durée : 3 heures 30 minutes
Sujet du concours Agro-Véto 2022 (concours A BCPST).
L’usage d’une calculatrice est autorisé pour cette épreuve.
Si, au cours de l’épreuve, un candidat repère ce qui lui semble être une erreur d’énoncé, il le signale sur sa copie et poursuit sa composition en expliquant les raisons des initiatives qu’il a été amené à prendre.
Le sujet se compose de 5 parties largement indépendantes et de 2 annexes. La partie 5 est consacrée à l’informatique. Les candidats pourront admettre le résultat d’une question pour répondre à une question postérieure à condition de le mentionner explicitement.
Dans le cadre de l’étude d’une espèce de lièvres, on souhaite modéliser la dynamique d’évolution temporelle de cette population. L’objectif du sujet est de comparer différentes modélisations ainsi que leur simulation.
On note \(t\) le temps et \(x(t)\) l’effectif des lièvres en fonction du temps. On suppose, pour commencer, que la population est isolée dans un environnement aux ressources abondantes. On propose de modéliser la dynamique de population de lièvres par l’équation différentielle suivante : \[\frac{\mathrm{d}x}{\mathrm{d}t}=rx \tag{1}\] où \(r\) est une constante strictement positive représentant le taux de reproduction intrinsèque des lièvres.
Résoudre l’équation différentielle (1) de condition initiale \(x(0)=x_0>0\).
Dessiner à la main l’allure de la solution de (1).
Que peut-on dire de l’évolution de la population de lièvres avec ce modèle ? L’équation différentielle (1) est-elle une modélisation raisonnable ?
On suppose à présent que les ressources du milieu sont limitées et on modélise la dynamique de population de lièvres par l’équation différentielle suivante : \[\frac{\mathrm{d}x}{\mathrm{d}t}=rx\left(1-\frac{x}{K}\right) \tag{2}\] où \(K\) est une constante strictement positive.
Intuitivement, quelle allure a une solution \(x(\cdot)\) de (2) tant que l’effectif de lièvres \(x(t)\) reste petit ?
En considérant (2), établir le tableau de signes de \(\frac{\mathrm{d}x}{\mathrm{d}t}\) en fonction de \(x\) pour \(x\geqslant0\).
Soit \(x(\cdot)\) une solution de (2) avec \(x(0)=x_0>0\). Est-ce possible qu’il existe un \(t>0\) tel que \(x(t)=0\) ? La réponse sera justifiée en s’appuyant sur le tableau de signes obtenu à la question précédente.
Soit \(x(\cdot)\) une solution de (2) avec \(x(0)=x_0>0\). On admettra que pour tout \(t\geqslant0\), \(x(t)>0\). On pose \(z(t)=\frac{1}{x(t)}\). Montrer que \(\frac{\mathrm{d}z}{\mathrm{d}t}=\frac{r}{K}-rz\).
Résoudre l’équation différentielle \(\frac{\mathrm{d}z}{\mathrm{d}t}=\frac{r}{K}-rz\). On exprimera la solution en fonction de \(t\), \(r\), \(K\) et \(z_0=z(0)\).
En déduire une expression de \(x(t)\) en fonction de \(t\), \(r\), \(K\) et \(x_0\).
Quelle est la limite de \(x(t)\) quand \(t\) tend vers l’infini ?
Dessiner à la main l’allure des solutions obtenues pour une condition initiale petite \(x_0>0\) d’une part et pour une condition initiale \(x_0>K\) d’autre part.
En s’appuyant sur les réponses aux questions précédentes, décrire les différences entre les modèles (1) et (2) et donner une interprétation biologique de la constante \(K\).
Dans cette partie, on souhaite modéliser l’évolution conjointe de deux populations : la population de lièvres, qui constituent des proies et une population de lynx, qui sont des prédateurs des lièvres. On modélise l’évolution des effectifs \(x(t)\) des proies et \(y(t)\) des prédateurs par le système différentiel suivant : \[\left\{\begin{array}{rcl} \dfrac{\mathrm{d}x}{\mathrm{d}t} & = & rx-pxy\\[2ex] \dfrac{\mathrm{d}y}{\mathrm{d}t} & = & -my+qxy \end{array}\right. \tag{3}\] où \(r\), \(p\), \(m\) et \(q\) sont des constantes positives représentant respectivement le taux de reproduction intrinsèque des proies, le taux de mortalité des proies due aux prédateurs rencontrés, le taux de mortalité intrinsèque des prédateurs et le taux de reproduction des prédateurs en fonction des proies rencontrées et mangées.
Que devient le système (3) s’il n’y a pas de lynx, c’est-à-dire \(y(t)=0\) pour tout \(t\geqslant0\) ? Comment évolue alors la population de lièvres ?
Que devient le système (3) s’il n’y a pas de lièvres, c’est-à-dire si \(x(t)=0\) pour tout \(t\geqslant0\) ? Comment évolue alors la population de lynx ?
On pose \(s=rt\), \(\bar{x}(s)=\frac{q}{r}x(t)\) et \(\bar{y}(s)=\frac{p}{r}y(t)\). Montrer que le système d’équations différentielles (3) peut se réécrire : \[\left\{\begin{array}{rcl} \dfrac{\mathrm{d}\bar{x}}{\mathrm{d}s} & = & \bar{x}-\bar{x}\bar{y}\\[2ex] \dfrac{\mathrm{d}\bar{y}}{\mathrm{d}s} & = & -a\bar{y}+\bar{x}\bar{y} \end{array}\right. \tag{4}\] où \(a\) est une constante à déterminer.
Dans toute la suite, pour simplifier les notations, on omettra les barres et on notera donc \(x\) pour et \(y\) pour . Ainsi le système (4) sera noté : \[\left\{\begin{array}{rcl} \dfrac{\mathrm{d}x}{\mathrm{d}s} & = & x-xy\\[2ex] \dfrac{\mathrm{d}y}{\mathrm{d}s} & = & -ay+xy \end{array}\right. \tag{5}\]
On appelle point d’équilibre d’un système d’équations de la forme \[\left\{\begin{array}{rcl} \dfrac{\mathrm{d}x}{\mathrm{d}s} & = & g_1(x,y)\\[2ex] \dfrac{\mathrm{d}y}{\mathrm{d}s} & = & g_2(x,y) \end{array}\right.\] un couple \((x,y)\in\mathbb{R}^2\) tel que les membres de droite des équations différentielles s’annulent simultanément pour ces valeurs. Ainsi, un point d’équilibre de (5) est une solution de \[\left\{\begin{array}{rcl} x-xy & = & 0\\ -ay+xy & = & 0 \end{array}\right.\]
Déterminer les points d’équilibre du système (5).
En terme de dynamique des populations, que représentent ces points d’équilibre ?
Donner une interprétation biologique des points d’équilibre obtenus.
Pour \(c>0\) fixé, on définit \(f_c(u)=u-c\ln u\) pour \(u>0\).
Montrer que pour tout \(u>0\), on a : \(f_c(u)\geqslant c(1-\ln c)\).
Montrer que \(f_c(u)=c(1-\ln c)\) si et seulement si \(u=c\).
Soit \(M\geqslant c(1-\ln c)\). Montrer qu’il existe \(b\) et \(B\) avec \(0<b\leqslant B\), tels que \(f_c(u)\leqslant M\) si et seulement si \(b\leqslant u\leqslant B\).
On définit maintenant, pour \(x>0\) et \(y>0\), \[V(x,y)=x-a\ln x+y-\ln y \tag{6}\]
Dans toute cette question, on considère \((x(\cdot),y(\cdot))\) une solution de (5) avec des conditions initiales \(x(0)=x_0>0\) et \(y(0)=y_0>0\).
Montrer que, pour tout \(s\geqslant0\), on a : \(f_a(x(s))\leqslant V(x(s),y(s))-1\) et \(f_1(y(s))\leqslant V(x(s),y(s))-a(1-\ln a)\).
Montrer que \(V(x(s),y(s))\) reste constante pour tout \(s\geqslant0\).
En déduire qu’il existe \(b_x\), \(B_x\), \(b_y\) et \(B_y\) avec \(0<b_x\leqslant B_x\) et \(0<b_y\leqslant B_y\) tels que, pour tout \(s\geqslant0\), on a : \(b_x\leqslant x(s)\leqslant B_x\) et \(b_y\leqslant y(s)\leqslant B_y\).
Montrer que \(V(x,y)\geqslant1+a(1-\ln a)\), pour tous \(x\) et \(y\) dans \(\mathbb{R}_+^\ast\) et que, de plus, l’équation \(V(x,y)=1+a(1-\ln a)\) admet une unique solution \((x^\ast,y^\ast)\) que l’on explicitera.
En s’appuyant sur les questions précédentes, répondre en justifiant aux questions suivantes :
Les populations de proies et de prédateurs peuvent-elles s’éteindre ? Et peuvent-elles devenir arbitrairement grandes ?
Les populations de proies et de prédateurs peuvent-elles s’arrêter d’évoluer ?
Quels comportements peut-on envisager pour les populations de proies et de prédateurs ?
Dans cette partie, on souhaite associer les modèles (2) et (4) en supposant à la fois que l’évolution des lièvres est limitée par leur environnement et que cette population est en interaction avec une population de lynx : \[\left\{\begin{array}{rcl} \dfrac{\mathrm{d}x}{\mathrm{d}s} & = & x\left(1-\dfrac{x}{K}\right)-xy\\[2ex] \dfrac{\mathrm{d}y}{\mathrm{d}s} & = & -ay+xy \end{array}\right. \tag{7}\] où \(a\) et \(K\) sont des constantes strictement positives et différentes.
Que se passe-t-il lorsque \(K\) est très grand ? Et quand \(y=0\) ?
Déterminer les points d’équilibre du système (7). Donner une interprétation physique de chaque point d’équilibre trouvé.
Pour un système d’équations différentielles de la forme \[\left\{\begin{array}{rcl} \dfrac{\mathrm{d}x}{\mathrm{d}s} & = & g_1(x,y)\\[2ex] \dfrac{\mathrm{d}y}{\mathrm{d}s} & = & g_2(x,y) \end{array}\right.\] on construit une matrice \(\mathcal{J}(x,y)\), appelée matrice jacobienne, définie par \[\mathcal{J}(x,y)=\begin{pmatrix} \dfrac{\partial g_1}{\partial x}(x,y) & \dfrac{\partial g_1}{\partial y}(x,y)\\[2ex] \dfrac{\partial g_2}{\partial x}(x,y) & \dfrac{\partial g_2}{\partial y}(x,y) \end{pmatrix}\]
Calculer la matrice jacobienne associée au système (7).
Évaluer la matrice jacobienne aux points d’équilibre de la question 9.
On considère les matrices suivantes : \[\mathcal{J}_1=\begin{pmatrix}1 & 0\\ 0 & -a\end{pmatrix},\qquad \mathcal{J}_2=\begin{pmatrix}-1 & -K\\ 0 & K-a\end{pmatrix}\qquad\text{et}\qquad \mathcal{J}_3=\begin{pmatrix}-\dfrac{a}{K} & -a\\[2ex] 1-\dfrac{a}{K} & 0\end{pmatrix}\] Calculer les valeurs propres de chaque matrice en fonction de \(K\) et \(a\). On pourra éventuellement disjoindre des cas si c’est nécessaire.
On dispose à l’annexe 1 page 8 de l’allure des solutions d’un système de deux équations différentielles autour d’un point d’équilibre en fonction des valeurs propres de la matrice jacobienne correspondante. Pour chaque point d’équilibre du système (7), identifier la situation correspondante.
Interpréter ces résultats en terme de dynamique des populations. En particulier, on donnera un critère pour que la population de prédateurs se maintienne.
Dans cette partie, on met en place une résolution numérique du système (4) appelée la méthode d’Euler. On se fixe un petit intervalle de temps \(h>0\). À partir d’une condition initiale \((x_0,y_0)\in\mathbb{R}_+^\ast\times\mathbb{R}_+^\ast\), on construit une suite de points de \(\mathbb{R}^2\), notée \((x_k,y_k)_{k\in\mathbb{N}}\), définie par : \[\left\{\begin{array}{rcl} x_{k+1} & = & x_k+h(x_k-x_ky_k)\\ y_{k+1} & = & y_k+h(-ay_k+x_ky_k) \end{array}\right. \tag{8}\] telle que \((x_k,y_k)\) est une approximation d’une solution de (4) au temps \(t_k=hk\).
On pose \(v_k=V(x_k,y_k)\), où la fonction \(V\) est définie par (6).
Exprimer \(v_{k+1}-v_k\) en fonction de \(h\), \(a\), \(K\), \(x_k\) et \(y_k\).
Montrer que \(v_{k+1}-v_k\geqslant0\).
Montrer que : \(v_{k+1}-v_k=0\) si et seulement si la suite \((x_k,y_k)\) est constante.
Interpréter au vu de la partie 2. La méthode d’Euler est-elle ici satisfaisante ?
Cette partie consiste à mettre en place des programmes informatiques pour simuler les différents modèles considérés dans le sujet. Bien que cette partie soit largement indépendante des parties précédentes, il est vivement conseillé de les avoir lues. Les programmes sont à rédiger en langage Python. L’annexe 2 page 9 comporte des rappels sur les commandes utiles. Avant chaque algorithme, on écrira brièvement le raisonnement suivi et la formule qu’il est censé calculer.
On considère le code :
r = 2
def sol(t):
return m.exp(r*t)
def liste(T, h):
t = 0
L = [0]
while t+h <= T:
t = t+h
L.append(t)
return L
def mystere():
Lt = liste(20, 10**-2)
n = len(Lt)
Ls = []
for k in range(0, n):
Ls.append(sol(Lt[k]))
plt.plot(Lt, Ls)
plt.show()
La fonction exp est présente dans le module
math. Indiquer comment charger ce module pour que
l’utilisation de exp soit correcte dans
sol.
Que renvoient liste(1, 0.2) et
liste(1, 0.3) ? Indiquer, de façon générale, ce que renvoie
liste(T, h).
Que contient Ls dans la fonction
mystere ? Que fait cette fonction ?
On considère L = [[3, 1], [7], [1, 9, 8, 0]] :
Que vaut L[1] ?
Que vaut L[0][1] ?
Que vaut len(L) ?
Que vaut L après avoir exécuté
L.append(9.75) ?
Écrire une fonction d’entête lapin(x, y) qui renvoie
\(x-xy\) et une fonction d’entête
lynx(x, y) qui renvoie \(-ay+xy\). La constante \(a\) est supposée être préalablement définie
dans une variable globale.
On ajoute au code précédent la fonction suivante (où les
arguments x0, y0, T et
h définissent respectivement \(x_0\), \(y_0\), l’intervalle d’étude \([0,T]\) et le pas \(h>0\) de la méthode d’Euler définie à la
partie 4) :
def resol_1(x0, y0, T, h):
x = x0; y = y0
t = 0
Lx = [x]
Ly = [y]
Lt = [t]
while t+h <= T:
_____ ligne(s) à compléter _____
return [Lt, Lx, Ly]
Compléter les lignes manquantes dans la boucle, afin que les listes
Lx et Ly contiennent respectivement les \(x_k\) et \(y_k\) définis par l’équation (8) et que la
liste Lt contienne les \(t_k\).
On ajoute au code précédent :
x0 = 1; y0 = 0.5; T = 20; h = 10**-2
def trace_pop_1():
L = resol_1(x0, y0, T, h)
plt.plot(L[0], L[1])
plt.plot(L[0], L[2])
plt.show()
Expliquer à quoi correspond chaque ligne de la fonction
trace_pop_1, en fonction des \(x_k\) et \(y_k\) de la méthode d’Euler.
L’exécution de trace_pop_1 donne les courbes
présentées figure 1. Identifier (avec explications), en lien avec la
modélisation effectuée, chacune des deux courbes.
On ajoute au code précédent :
def fonctionV(x, y):
return x-a*m.log(x)+y-m.log(y)
Écrire une fonction d’entête trace_V_1() qui effectue la
représentation graphique des valeurs \(v_k\) en ordonnées, en fonction des valeurs
\(t_k\) en abscisses.
On cherche dorénavant à effectuer une résolution numérique avec une autre méthode, appelée méthode de Heun, où la relation de récurrence définissant les \(x_k\) et \(y_k\) est : \[\left\{\begin{array}{rcl} u_k & = & x_k+h(x_k-x_ky_k)\\ w_k & = & y_k+h(-ay_k-x_ky_k)\\ x_{k+1} & = & x_k+\frac{h}{2}(x_k-x_ky_k+u_k-u_kw_k)\\[1ex] y_{k+1} & = & y_k+\frac{h}{2}(-ay_k+x_ky_k-aw_k+u_kw_k) \end{array}\right. \tag{9}\]
Écrire une fonction d’entête resol_2(x0, y0, T, h),
analogue de resol_1 utilisant la méthode de Heun.
Que suffit-il de modifier dans la fonction trace_V_1
pour lui faire utiliser la méthode de Heun ? On appelle
trace_V_2 la fonction ainsi modifiée.
L’exécution de trace_V_1 et trace_V_2
donne les courbes présentées en figure 2 : justifier quelle méthode
semble la plus satisfaisante.
On définit, de manière analogue à la fonction
trace_pop_1, la fonction trace_pop_2 associée
à la méthode de Heun. L’exécution de trace_pop_2 donne les
courbes présentées figure 3. Comparer les figures 1 et 3. Quel problème
numérique est soulevé par la méthode d’Euler ? Que permet d’améliorer la
méthode de Heun ?
Interpréter l’évolution des dynamiques de population des lièvres et des lynx obtenues.
Figure 1 – Tracé donné par
trace_pop_1
Figure 2 – Tracés donnés par
trace_V_1 (à gauche) et par trace_V_2 (à
droite)
Figure 3 – Tracé donné par
trace_pop_2
On considère un système différentiel du type \(\frac{\mathrm{d}z}{\mathrm{d}t}=Az\) où \(z:\mathbb{R}\to\mathbb{R}^2\) et \(A\) est une matrice inversible constante \(2\times2\) à coefficients réels. L’allure des solutions du système, qui dépend de la nature des valeurs propres de la matrice \(A\), est donnée ci-dessous autour d’un point d’équilibre, dans différents cas. On notera \(\Re(\lambda)\) la partie réelle d’un nombre complexe \(\lambda\) et \(E_\lambda\) le sous-espace propre de \(A\) associé à la valeur propre \(\lambda\).
(a) \(\lambda_1<\lambda_2<0\) (noeud stable)
(b) \(\lambda_1>\lambda_2>0\) (nœud instable)
(c) \(\lambda_1<0<\lambda_2\) (point selle)
Cas 1 : deux valeurs propres réelles distinctes \(\lambda_1\) et \(\lambda_2\).
(a) \(\Re(\lambda_1)=\Re(\lambda_2)<0\) (foyer stable)
(b) \(\Re(\lambda_1)=\Re(\lambda_2)>0\) (foyer instable)
Cas 2 : Deux valeurs propres complexes non réelles \(\lambda_1\) et \(\lambda_2\).
(a) \(\lambda<0\) et \(\dim E_\lambda=2\) (puits)
(b) \(\lambda>0\) et \(\dim E_\lambda=2\) (source)
(c) \(\lambda<0\) et \(\dim E_\lambda=1\)
(nœud dégénéré stable)
(d) \(\lambda>0\) et \(\dim E_\lambda=1\)
(nœud dégénéré instable)
Cas 3 : Une valeur propre réelle double \(\lambda\).
On suppose que le module matplotlib.pyplot, qui permet
de tracer des graphiques, est importé avec l’alias plt ;
que le module math, qui permet d’utiliser des fonctions
mathématiques, est importé avec l’alias m. Les variables
Lx et Ly sont deux listes de réels, de même
longueur ; la variable x est un réel.
plt.plot(Lx, Ly) place les points dont les abscisses
sont contenues dans Lx et les ordonnées dans
Ly, et les relie entre eux par des segments. Si cette
fonction n’est pas suivie de plt.show(), le graphique n’est
pas affiché.
plt.show() affiche le(s) tracé(s) précédemment
créé(s) par plt.plot.
m.exp(x) renvoie \(\exp(x)\).
m.log(x) renvoie \(\ln(x)\).
FIN DU SUJET
Le corrigé pas à pas, les aides et les explications sont disponibles dans la plateforme.
Lièvres et lynx : modèle logistique, système de Lotka-Volterra, équilibres et méthodes d'Euler et de Heun en Python.