{"cells": [{"cell_type": "markdown", "metadata": {"deletable": false}, "source": ["***\n", "# **EDO -- L3 MEU 2022/2023 -- Universit\u00e9 Paris-Saclay**\n", "***\n", "\n", "\n", "\n", "# TP 2 : Deux mod\u00e8les d'EDO pour l'interaction proie-pr\u00e9dateur\n", "\n", "\n", "## Mod\u00e8le de Lotka-Volterra\n", "\n", "Apr\u00e8s la premi\u00e8re guerre mondiale, le zoologiste Umberto d'Anconna \u00e9tudia les effets de la guerre sur la p\u00eache de la sardine dans les ports de la mer Adriatique. Le r\u00e9sultat de cette \u00e9tude surprenait : alors que pendant la guerre la p\u00eache \u00e0 la sardine avait diminu\u00e9, la part de celles-ci dans les captures, qui aurait d\u00fb augmenter, avait pourtant baiss\u00e9 au profit de leurs pr\u00e9dateurs dont les requins, ce qui est paradoxal. Ce comportement fut observ\u00e9 simultan\u00e9ment dans les ports de Trieste et de Fiume.\n", "\n", "D'Anconna demanda alors \u00e0 Vito Volterra, qui \u00e9tait un des grands math\u00e9maticiens de l'\u00e9poque, s'il pouvait trouver une explication math\u00e9matique \u00e0 ce ph\u00e9nom\u00e8ne. Il \u00e9crivit un mod\u00e8le math\u00e9matique bas\u00e9 sur un syst\u00e8me d'\u00e9quations diff\u00e9rentielles r\u00e9gissant la dynamique des esp\u00e8ces consid\u00e9r\u00e9es.\\\\\n", "\n", "L'objectif de ce TP est d'\u00e9tudier ce mod\u00e8le ainsi que de justifier le paradoxe observ\u00e9 par d'Anconna."]}, {"cell_type": "markdown", "metadata": {"deletable": false}, "source": ["On se donne donc deux populations $H(t)$ de sardines (les proies) et $P(t)$ de requins (les pr\u00e9dateurs) au temps $t,$ dont l'\u00e9volution au cours du temps suit la loi :\n", "\n", "\\begin{equation}\n", "\\label{LV}\n", " \\begin{cases}\n", " H'(t) = H(t)(a - b P(t)) \\\\\n", " P'(t) = P(t)(-c + d H(t)),\n", " \\end{cases}\n", "\\tag{LV}\n", "\\end{equation}\n", "\n", "o\u00f9 $a,b,c,d >0$.\n", "On suppose connues les populations de sardines et de requins \u00e0 l'instant initial $t_0=0$ :\n", "\\begin{equation}\n", "\\label{lvdi}\n", "\\tag{CI}\n", " \\begin{cases}\n", " H(0) = H_0, \\\\\n", " P(0) = P_0,\n", " \\end{cases}\n", "\\end{equation}\n", "o\u00f9 $H_0\\ge 0$ et $P_0\\ge 0$ sont donn\u00e9s."]}, {"cell_type": "markdown", "metadata": {"deletable": false}, "source": ["## 1. Analyse du mod\u00e8le\n", "\n", "**Q1)** En posant $Y = (H,P)$, r\u00e9\u00e9crire le syst\u00e8me \\eqref{LV} sous la forme $Y' = F(Y)$ o\u00f9 $F=(F_1,F_2)$ avec $F_1,F_2$ deux fonctions d\u00e9finies sur $\\mathbb{R}^2$ \u00e0 valeurs dans $\\mathbb{R}$.\n", "\n"]}, {"cell_type": "markdown", "metadata": {"deletable": false}, "source": ["On suppose ici que le probl\u00e8me de Cauchy \\eqref{LV}-\\eqref{lvdi} admet une unique solution maximale d\u00e9finie sur un intervalle $J$ contenant $[0,+\\infty).$ \n", "\n", "**Q2)** D\u00e9terminer les points d'\u00e9quilibre de l'\u00e9quation diff\u00e9rentielle c'est-\u00e0-dire les points $(H_{eq},P_{eq})$ v\u00e9rifiant $F_1(H_{eq},P_{eq})=F_2(H_{eq},P_{eq})=0$ (ce sont les solutions stationnaires du syst\u00e8me diff\u00e9rentiel). Que se passe-t-il si on choisit $(H_{eq},P_{eq})$ comme condition initiale?\n", "\n"]}, {"cell_type": "markdown", "metadata": {"deletable": false}, "source": ["**Q3)** Dans le plan $(H,P)$, repr\u00e9sentez les points d'\u00e9quilibre du syst\u00e8me. Etudier le signe des d\u00e9riv\u00e9es $H'$ et $P'$ et repr\u00e9senter le sens et la direction des champ de vecteurs dans le plan $(H,P),$ suivant la position de $H$ et $P$ par rapport aux points stationnaires. Quel sera le comportement des solutions $(H,P)$ suivant la condition initiale?\n", "\n", "**Q4)** Soit $Q = \\{ (x,y)\\in \\mathbb R^2\\mid x,y >0\\}$. D\u00e9montrer que si la\n", "condition initiale $(H_0,P_0)\\in Q$, alors $(H(t),P(t)) \\in Q$ pour\n", "tout temps $t>0$ o\u00f9 la solution est d\u00e9finie.\n", "\n", "**Q5)** On suppose encore que $(H_0,P_0) \\in Q$ et soit \n", "$(H,P)$ la solution maximale du probl\u00e8me de Cauchy \\eqref{LV}-\\eqref{lvdi}. Montrer une in\u00e9galit\u00e9\n", "diff\u00e9rentielle faisant appara\u00eetre la quantit\u00e9 $\\phi(t) := dH(t) +\n", "bP(t)$ au cours du temps. En d\u00e9duire que la solution $(H,P)$ est\n", "d\u00e9finie sur $\\mathbb R^+$.\n", "\n", "**Q6)** Construire une fonction $E(x,y) = k(x) + \\ell(y)$\n", "v\u00e9rifiant \n", "\\begin{equation}E(H(t),P(t)) = \\mathrm{cst}\\;\\text{ et telle que}\\; \\lim_{X\\in Q,\n", " \\|X\\|\\to +\\infty} E(X) = +\\infty\n", "\\end{equation} \n", "o\u00f9 $|X|$ d\u00e9signe ici une norme du vecteur $X$. En d\u00e9duire que les trajectoires\n", "de la solution maximale restent born\u00e9es.\n", "\n", "**Q7)** D\u00e9montrez que si $(H,P)$ converge quand $t\\rightarrow+\\infty$, c'est n\u00e9cessairement vers un point d'\u00e9quilibre.\n", "\n", "**Q8)** (* plus difficile) Tracer les nulloclines $\\{ (x,y)\\in\n", "Q\\mid F_i(x,y) = 0 \\}$ et les points d'\u00e9quilibre. Les nulloclines divisent le quart de plan $Q$ en quatre ouverts\n", "\\begin{align*}\n", " &A = \\{ (x,y) \\in Q \\mid F_1(x,y) > 0 \\hbox{ et } F_2(x,y) < 0 \\}\\\\\n", " &B = \\{ (x,y) \\in Q \\mid F_1(x,y) > 0 \\hbox{ et } F_2(x,y) > 0 \\}\\\\\n", " &C = \\{ (x,y) \\in Q \\mid F_1(x,y) < 0 \\hbox{ et } F_2(x,y) > 0 \\}\\\\\n", " &D = \\{ (x,y) \\in Q \\mid F_1(x,y) < 0 \\hbox{ et } F_2(x,y) < 0 \\}\n", "\\end{align*}\n", "\n", "D\u00e9montrer que si $(H_0,P_0)\\in A$, alors la trajectoire $(H(t),P(t))$\n", "va parcourir successivement les ensembles $A,B,C,D,A,B,$ etc. Montrer\n", "que les deux points de passage successifs de la solution \u00e0 l'interface\n", "$AB$ sont \u00e9gaux, en d\u00e9duire que les solutions sont p\u00e9riodiques.\n", "\n", "\n", "\n"]}, {"cell_type": "markdown", "metadata": {"deletable": false}, "source": ["## 2. Approximation num\u00e9rique\n", "\n", "On s'int\u00e9resse dans cette partie \u00e0 l'approximation num\u00e9rique de la solution de \\eqref{LV}-\\eqref{lvdi}, dans un intervalle de temps de la forme $[0,T].$ \n", "\n", "Pour toutes les applications num\u00e9riques, on choisit dans la suite\n", "$a=0,1$, $b=d=5\\cdot 10^{-5},$ $c=0,04$ et $T=200$ ans. On choisit une population initiale de $H_0=2000$ sardines et $P_0=1000$ requins.\n", "\n", "**Q1)** Dans une premi\u00e8re figure, repr\u00e9sentez dans l'espace des phases $(H,P)$ le champ de vecteur associ\u00e9\n", "\u00e0 ce syst\u00e8me d'\u00e9quations via\n", "\n", "`x, y = np.meshgrid(np.linspace(0 , 3000, 20) , np.linspace (0 , 4500, 30))\n", "n=np.sqrt(F1(x,y)**2+F2(x,y)**2) \n", "plt.quiver (x , y, F1(x , y)/n, F2 (x , y)/n,angles='xy',scale=20,color='blue')`\n", "\n", "Confrontez le r\u00e9sultat \u00e0 la question **Q1.3**.\n"]}, {"cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": ["import numpy as np\n", "import scipy as sp\n", "import matplotlib.pyplot as plt\n", "\n", "# \n"]}, {"cell_type": "markdown", "metadata": {"deletable": false}, "source": ["On s'int\u00e9resse maintenant \u00e0 calculer une solution approch\u00e9e du probl\u00e8me de Cauchy \\eqref{LV}-\\eqref{lvdi} par la m\u00e9thode d'Euler explicite, vue au TP1. On reprend les m\u00eames notations que dans le TP1 : on se donne un pas $\\Delta t=\\frac{T}{N}>0,$ o\u00f9 $N\\in\\mathbb N,$ on consid\u00e8re une subdivision uniforme de pas $\\Delta t$ de l'intervalle $[0, T],$ d\u00e9finie par les $(N+1)$ points \n", "$$\n", "t_0=0,\\ t_1:=\\Delta t,\\ \\cdots,\\ t_N:=N\\Delta t=T, \n", "$$\n", "et on note note $H^n$ (resp. $P^n$) la valeur approch\u00e9e de $H(t_n)$ (resp. $P(t_n)$) \u00e0 l'instant $t_n$ pour $n=0,\\cdots,N$.\n", "\n", "**Q2)** Ecrire le sch\u00e9ma d'Euler explicite associ\u00e9 au mod\u00e8le de Lotka Volterra\n", "\n"]}, {"cell_type": "markdown", "metadata": {"deletable": false}, "source": ["**Q3)** Ecrire une fonction `LvoltEE(T,Y0,dt)` prenant en argument le temps final `T`, la donn\u00e9e initiale `Y_0=[H_0,P_0]` correspondant aux valeurs des populations initiales en `t=0` et le pas de temps `dt` (on pourra prendre en argument `N` le nombre de points de la discr\u00e9tisation, au lieu de `dt`), et qui calcule une solution approch\u00e9e de \\eqref{LV}-\\eqref{lvdi} par le sch\u00e9ma d'Euler explicite.\n", "\n", "Cette fonction retournera trois tableaux:\n", "- `[$t_0,...,t_N$]` tableau numpy de taille $(N+1)\\times 1$ contenant les instants de la subdivision en temps ;\n", "- `[$H_0,...,H_N$]` tableau numpy de taille $(N+1)\\times 1$ contenant les valeurs approch\u00e9es aux instantes $t_n$ de la population de sardines ;\n", "- `[$P_0,...,P_N$]` tableau numpy de taille $(N+1)\\times 1$ contenant les valeurs approch\u00e9es aux instantes $t_n$ de la population de requins."]}, {"cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": ["# \n"]}, {"cell_type": "markdown", "metadata": {"deletable": false}, "source": ["**Q4)** Tracer dans la m\u00eame figure les solutions approch\u00e9es $[H_0,H_1,\\ldots,H_N]$ et $[P_0,P_1,\\ldots,P_N]$ en fonction du temps, obtenues % $[t_0,\\ldots,t_N]$ avec $\\Delta t=0.01$. Rajouter des l\u00e9gendes et des titres \u00e0 votre figure."]}, {"cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": ["# \n"]}, {"cell_type": "markdown", "metadata": {"deletable": false}, "source": ["**Q5)** Cr\u00e9er une seconde figure et tracer $P$ en fonction de $H$ dans le plan $(H,P)$ (portrait de phase). Refaire cette repr\u00e9sentation dans la m\u00eame figure de la question **Q1)**."]}, {"cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": ["# \n"]}, {"cell_type": "markdown", "metadata": {"deletable": false}, "source": ["**Q6)** Calculer la solution approch\u00e9e de \\eqref{LV}-\\eqref{lvdi}, en prenant comme condition initiale un des points d'\u00e9quilibre du syst\u00e8me. Ceci confirme-t-il la solution th\u00e9orique?"]}, {"cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": ["# \n"]}, {"cell_type": "markdown", "metadata": {"deletable": false}, "source": ["**Q7)** **(L'impact de la p\u00eache)** Nous p\u00eachons maintenant une m\u00eame proportion $p$ de requins et de sardines ce qui se traduit par les deux termes n\u00e9gatifs $-pH(t)$ et $-pP(t)$ dans les \u00e9quations. Le mod\u00e8le devient\n", "\\begin{equation*}\n", " \\begin{cases}\n", " H'(t)&=(a-p)H(t)-bH(t)P(t),\\\\\n", " P'(t)&=(-c-p)P(t)+dH(t)P(t).\n", " \\end{cases}\n", "\\end{equation*}\n", "On choisit $p=0.02$. Reprendre les questions pr\u00e9c\u00e9dentes et expliquer quel est l'impact de la p\u00eache sur l'\u00e9volution des populations. Quelle esp\u00e8ce est favoris\u00e9e par la p\u00eache? "]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": ["# \n"]}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": []}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}, "celltoolbar": "None"}, "nbformat": 4, "nbformat_minor": 2}