{ "cells": [ { "cell_type": "markdown", "id": "f29a1641", "metadata": {}, "source": [ "# Population Dynamics" ] }, { "cell_type": "markdown", "id": "807469c2", "metadata": {}, "source": [ "This notebook illustrates some models defined by the first two sections of the book *Mathematical Biology I. An Introduction* by J.D. Murray, 3rd edition, Springer-Verlag 2002." ] }, { "cell_type": "code", "execution_count": 1, "id": "76e29929", "metadata": {}, "outputs": [], "source": [ "using Plots" ] }, { "cell_type": "code", "execution_count": 2, "id": "186bb800", "metadata": {}, "outputs": [], "source": [ "using SymPy" ] }, { "cell_type": "code", "execution_count": 3, "id": "1c580ff8", "metadata": {}, "outputs": [], "source": [ "using DifferentialEquations" ] }, { "cell_type": "markdown", "id": "d3c6a96a", "metadata": {}, "source": [ "## 1. Modeling Population Growth" ] }, { "cell_type": "markdown", "id": "5eaaf0d8", "metadata": {}, "source": [ "A differential equation to model the growth of a population was proposed by Verhulst in the 19th century. We use the following notation.\n", "\n", "* Let $N(t)$ be the number of the population in function of time $t$.\n", "\n", "* The carrying capacity is $K$.\n", "\n", "* The birth rate is $r$." ] }, { "cell_type": "code", "execution_count": 4, "id": "543fd823", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(r, K, t)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r, K, t = Sym(\"r, K, t\")" ] }, { "cell_type": "code", "execution_count": 5, "id": "40b52c23", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$N$" ], "text/plain": [ "N" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "N = SymFunction(\"N\")" ] }, { "cell_type": "code", "execution_count": 6, "id": "2464a8e0", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\frac{d}{d t} N{\\left(t \\right)} = r \\left(1 - \\frac{N{\\left(t \\right)}}{K}\\right) N{\\left(t \\right)}$" ], "text/plain": [ "d / N(t)\\ \n", "--(N(t)) = r*|1 - ----|*N(t)\n", "dt \\ K / " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "verhulst = Eq(diff(N(t),t), r*N(t)*(1-N(t)/K))" ] }, { "cell_type": "markdown", "id": "247a94f4", "metadata": {}, "source": [ "The rate of increase is proportional to the birth rate times the population number, multiplied with a term that becomes smaller and smaller as the population number approaches the carrying capacity." ] }, { "cell_type": "markdown", "id": "9994213f", "metadata": {}, "source": [ "We will solve this model symbolically, using $N_0$ for the initial condition." ] }, { "cell_type": "code", "execution_count": 7, "id": "bf7e9677", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\begin{equation*}\\begin{cases}N{\\left(0 \\right)} & \\text{=>} &N_{0}\\\\\\end{cases}\\end{equation*}" ], "text/plain": [ "Dict{Sym{PyCall.PyObject}, Sym{PyCall.PyObject}} with 1 entry:\n", " N(0) => N0" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "N0 = Sym(\"N0\")\n", "initconds = Dict(N(0) => N0)" ] }, { "cell_type": "code", "execution_count": 8, "id": "c19d41be", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$N{\\left(t \\right)} = - \\frac{K N_{0} e^{r t}}{\\left(K - N_{0}\\right) \\left(- \\frac{N_{0} e^{r t}}{K - N_{0}} - 1\\right)}$" ], "text/plain": [ " r*t \n", " -K*N0*e \n", "N(t) = ------------------------\n", " / r*t \\\n", " | N0*e |\n", " (K - N0)*|- ------- - 1|\n", " \\ K - N0 /" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "growth = dsolve(verhulst, ics=initconds)" ] }, { "cell_type": "markdown", "id": "38baa019", "metadata": {}, "source": [ "For a numerical example, take $K = 50$, $N_0 = 8$ and $r = 0.7$." ] }, { "cell_type": "code", "execution_count": 9, "id": "c3a59850", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$- \\frac{200 e^{0.7 t}}{21 \\left(- \\frac{4 e^{0.7 t}}{21} - 1\\right)}$" ], "text/plain": [ " 0.7*t \n", " -200*e \n", "-------------------\n", " / 0.7*t \\\n", " | 4*e |\n", "21*|- -------- - 1|\n", " \\ 21 /" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "population = subs(growth.rhs(), K=> 50, N0 => 8, r => 0.7)" ] }, { "cell_type": "code", "execution_count": 10, "id": "dbd2979d", "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(0:0.01:10, population, xlabel = \"t\", label=\"N(t)\", legend=:bottomright)" ] }, { "cell_type": "markdown", "id": "93708f59", "metadata": {}, "source": [ "Observe the leveling off towards the carrying capacity as $t$ increases." ] }, { "cell_type": "code", "execution_count": 11, "id": "1822ebb2", "metadata": {}, "outputs": [], "source": [ "# savefig(\"figverhulst.png\")" ] }, { "cell_type": "markdown", "id": "2f453b5a", "metadata": {}, "source": [ "## 2. Population Growth with Predator" ] }, { "cell_type": "markdown", "id": "9527071a", "metadata": {}, "source": [ "We consider the population dynamics of the spruce budworm. Birds eat worms." ] }, { "cell_type": "markdown", "id": "91e10f5e", "metadata": {}, "source": [ "### 2.1 Logistic Growh with Predator Term" ] }, { "cell_type": "markdown", "id": "59361391", "metadata": {}, "source": [ "The same logistic growth model applies, but we subtract a predator term. This predator term is a function of the size of the population. Using the same symbols as in the above model, we add a new symbolic function ``P``." ] }, { "cell_type": "code", "execution_count": 12, "id": "a72ed772", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$P$" ], "text/plain": [ "P" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "P = SymFunction(\"P\")" ] }, { "cell_type": "code", "execution_count": 13, "id": "71a10e41", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\frac{d}{d t} N{\\left(t \\right)} = r \\left(1 - \\frac{N{\\left(t \\right)}}{K}\\right) N{\\left(t \\right)} - P{\\left(N{\\left(t \\right)} \\right)}$" ], "text/plain": [ "d / N(t)\\ \n", "--(N(t)) = r*|1 - ----|*N(t) - P(N(t))\n", "dt \\ K / " ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "worm = Eq(diff(N(t), t), r*N(t)*(1-N(t)/K) - P(N(t)))" ] }, { "cell_type": "markdown", "id": "f65f3fcf", "metadata": {}, "source": [ "*What would be a good model for P?*" ] }, { "cell_type": "markdown", "id": "5cc25dba", "metadata": {}, "source": [ "The population of the worms should reach some critical value before the birds start noticing the worms. Once this happens, the birds eat worms in greater numbers. Once the population falls below another critical value, the predation disappears." ] }, { "cell_type": "code", "execution_count": 14, "id": "14fedfcf", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\frac{B n^{2}}{A^{2} + n^{2}}$" ], "text/plain": [ " 2 \n", " B*n \n", "-------\n", " 2 2\n", "A + n " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A, B, n = Sym(\"A, B, n\")\n", "p = B*n^2/(A^2 + n^2)" ] }, { "cell_type": "code", "execution_count": 15, "id": "cec3fc5c", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\frac{4 n^{2}}{n^{2} + 900}$" ], "text/plain": [ " 2 \n", " 4*n \n", "--------\n", " 2 \n", "n + 900" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "shape = subs(p, A => 30, B => 4)" ] }, { "cell_type": "markdown", "id": "f29361f9", "metadata": {}, "source": [ "To plot, we make a function out of the symbolic expression." ] }, { "cell_type": "code", "execution_count": 16, "id": "b4b1295e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "shapefun (generic function with 1 method)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "shapefun(x) = subs(shape, n=>x)" ] }, { "cell_type": "code", "execution_count": 17, "id": "183624b6", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(0:0.01:50, shapefun, xlabel=\"n\", label=\"predator shape\", legend=:bottomright)" ] }, { "cell_type": "code", "execution_count": 18, "id": "d4c21292", "metadata": {}, "outputs": [], "source": [ "# savefig(\"figwormpredatorshape.png\")" ] }, { "cell_type": "markdown", "id": "97bc4761", "metadata": {}, "source": [ "For $n \\approx 10$, the predator term is still rather slow, it only starts to pick up when $n$ approaches 20, and then it starts to level off after 30." ] }, { "cell_type": "code", "execution_count": 19, "id": "bda75715", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\frac{B N^{2}{\\left(t \\right)}}{A^{2} + N^{2}{\\left(t \\right)}}$" ], "text/plain": [ " 2 \n", " B*N (t) \n", "----------\n", " 2 2 \n", "A + N (t)" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pnt = subs(p, n=>N(t))" ] }, { "cell_type": "code", "execution_count": 20, "id": "abfffbb6", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\frac{d}{d t} N{\\left(t \\right)} = - \\frac{B N^{2}{\\left(t \\right)}}{A^{2} + N^{2}{\\left(t \\right)}} + r \\left(1 - \\frac{N{\\left(t \\right)}}{K}\\right) N{\\left(t \\right)}$" ], "text/plain": [ " 2 \n", "d B*N (t) / N(t)\\ \n", "--(N(t)) = - ---------- + r*|1 - ----|*N(t)\n", "dt 2 2 \\ K / \n", " A + N (t) " ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wormode = subs(worm, P(N(t)) => pnt)" ] }, { "cell_type": "markdown", "id": "17b66650", "metadata": {}, "source": [ "The problem with the above equation is that it has too many parameters." ] }, { "cell_type": "markdown", "id": "3f81f083", "metadata": {}, "source": [ "### 2.2 Nondimensional Terms" ] }, { "cell_type": "markdown", "id": "a93edeb8", "metadata": {}, "source": [ "To study the model, we have to introduce nondimensional terms." ] }, { "cell_type": "markdown", "id": "dad5864b", "metadata": {}, "source": [ "Consider the following substitutions:\n", "\n", "$$\n", " N(t) = A u(t), \\quad r = \\frac{B r}{A}, \\quad K = q A\n", "$$" ] }, { "cell_type": "code", "execution_count": 21, "id": "5e815670", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\frac{\\partial}{\\partial t} A u{\\left(t \\right)} = - \\frac{A^{2} B u^{2}{\\left(t \\right)}}{A^{2} u^{2}{\\left(t \\right)} + A^{2}} + B r \\left(1 - \\frac{u{\\left(t \\right)}}{q}\\right) u{\\left(t \\right)}$" ], "text/plain": [ " 2 2 \n", "d A *B*u (t) / u(t)\\ \n", "--(A*u(t)) = - ------------- + B*r*|1 - ----|*u(t)\n", "dt 2 2 2 \\ q / \n", " A *u (t) + A " ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "q = Sym(\"q\")\n", "u = SymFunction(\"u\")\n", "wormode1 = subs(wormode, N(t) => A*u(t), r => B*r/A, K => q*A)" ] }, { "cell_type": "code", "execution_count": 22, "id": "e09024fa", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$A \\frac{d}{d t} u{\\left(t \\right)} = \\frac{B \\left(- q u{\\left(t \\right)} + r \\left(q - u{\\left(t \\right)}\\right) \\left(u^{2}{\\left(t \\right)} + 1\\right)\\right) u{\\left(t \\right)}}{q \\left(u^{2}{\\left(t \\right)} + 1\\right)}$" ], "text/plain": [ " / / 2 \\\\ \n", " d B*\\-q*u(t) + r*(q - u(t))*\\u (t) + 1//*u(t)\n", "A*--(u(t)) = -------------------------------------------\n", " dt / 2 \\ \n", " q*\\u (t) + 1/ " ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "simplify(wormode1)" ] }, { "cell_type": "markdown", "id": "efd51c87", "metadata": {}, "source": [ "Observe that the $A$ no longer appears in the right hand side." ] }, { "cell_type": "markdown", "id": "ddff4ade", "metadata": {}, "source": [ "We can make the $B$ appear to the left by the following substitution:\n", "\n", "$$\n", " u(t) = u(tB/A).\n", "$$" ] }, { "cell_type": "code", "execution_count": 23, "id": "59927e94", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\frac{\\partial}{\\partial t} A u{\\left(\\frac{B t}{A} \\right)} = - \\frac{A^{2} B u^{2}{\\left(\\frac{B t}{A} \\right)}}{A^{2} u^{2}{\\left(\\frac{B t}{A} \\right)} + A^{2}} + B r \\left(1 - \\frac{u{\\left(\\frac{B t}{A} \\right)}}{q}\\right) u{\\left(\\frac{B t}{A} \\right)}$" ], "text/plain": [ " 2 2/B*t\\ / /B*t\\\\ \n", " A *B*u |---| | u|---|| \n", "d / /B*t\\\\ \\ A / | \\ A /| /B*t\\\n", "--|A*u|---|| = - --------------- + B*r*|1 - ------|*u|---|\n", "dt\\ \\ A // 2 2/B*t\\ 2 \\ q / \\ A /\n", " A *u |---| + A \n", " \\ A / " ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wormode2 = subs(wormode1, u(t) => u(t*B/A))" ] }, { "cell_type": "markdown", "id": "6abee3c8", "metadata": {}, "source": [ "In the first term of the right hand side, the $A^2$ will drop out." ] }, { "cell_type": "markdown", "id": "f6233934", "metadata": {}, "source": [ "The ``cancel()`` command will remove the $A^2$, but applying the ``cancel()`` to the entire expression brings the whole expression on a common denominator and we do not want to do this." ] }, { "cell_type": "code", "execution_count": 24, "id": "ce7380e4", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$- \\frac{A^{2} B u^{2}{\\left(\\frac{B t}{A} \\right)}}{A^{2} u^{2}{\\left(\\frac{B t}{A} \\right)} + A^{2}} + B r \\left(1 - \\frac{u{\\left(\\frac{B t}{A} \\right)}}{q}\\right) u{\\left(\\frac{B t}{A} \\right)}$" ], "text/plain": [ " 2 2/B*t\\ / /B*t\\\\ \n", " A *B*u |---| | u|---|| \n", " \\ A / | \\ A /| /B*t\\\n", "- --------------- + B*r*|1 - ------|*u|---|\n", " 2 2/B*t\\ 2 \\ q / \\ A /\n", " A *u |---| + A \n", " \\ A / " ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wormode2rhs = wormode2.rhs()" ] }, { "cell_type": "code", "execution_count": 25, "id": "2545e20e", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/latex": [ "$B r \\left(1 - \\frac{u{\\left(\\frac{B t}{A} \\right)}}{q}\\right) u{\\left(\\frac{B t}{A} \\right)} - \\frac{B u^{2}{\\left(\\frac{B t}{A} \\right)}}{u^{2}{\\left(\\frac{B t}{A} \\right)} + 1}$" ], "text/plain": [ " / /B*t\\\\ 2/B*t\\ \n", " | u|---|| B*u |---| \n", " | \\ A /| /B*t\\ \\ A / \n", "B*r*|1 - ------|*u|---| - -----------\n", " \\ q / \\ A / 2/B*t\\ \n", " u |---| + 1\n", " \\ A / " ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wormode2newrhs = cancel(wormode2rhs.args[2]) + wormode2rhs.args[1]" ] }, { "cell_type": "code", "execution_count": 26, "id": "7ca4896c", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$B \\left. \\frac{d}{d \\xi_{1}} u{\\left(\\xi_{1} \\right)} \\right|_{\\substack{ \\xi_{1}=\\frac{B t}{A} }}$" ], "text/plain": [ " / d \\| \n", "B*|-----(u(xi_1))|| B*t\n", " \\dxi_1 /|xi_1=---\n", " A " ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wormode2newlhs = simplify(wormode2.lhs())" ] }, { "cell_type": "code", "execution_count": 27, "id": "ac0ef3d3", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$B \\left. \\frac{d}{d \\xi_{1}} u{\\left(\\xi_{1} \\right)} \\right|_{\\substack{ \\xi_{1}=\\frac{B t}{A} }} = B r \\left(1 - \\frac{u{\\left(\\frac{B t}{A} \\right)}}{q}\\right) u{\\left(\\frac{B t}{A} \\right)} - \\frac{B u^{2}{\\left(\\frac{B t}{A} \\right)}}{u^{2}{\\left(\\frac{B t}{A} \\right)} + 1}$" ], "text/plain": [ " / /B*t\\\\ 2/B*t\\ \n", " | u|---|| B*u |---| \n", " / d \\| | \\ A /| /B*t\\ \\ A / \n", "B*|-----(u(xi_1))|| B*t = B*r*|1 - ------|*u|---| - -----------\n", " \\dxi_1 /|xi_1=--- \\ q / \\ A / 2/B*t\\ \n", " A u |---| + 1\n", " \\ A / " ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wormode3 = Eq(wormode2newlhs, wormode2newrhs)" ] }, { "cell_type": "markdown", "id": "fd04a333", "metadata": {}, "source": [ "We see that the $B$ now appears at the left and at the right of the equation." ] }, { "cell_type": "markdown", "id": "3717076d", "metadata": {}, "source": [ "The last substitution is\n", "\n", "$$\n", " \\frac{B t}{A} = t.\n", "$$" ] }, { "cell_type": "code", "execution_count": 28, "id": "91b2ebe7", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$B \\left. \\frac{d}{d \\xi_{1}} u{\\left(\\xi_{1} \\right)} \\right|_{\\substack{ \\xi_{1}=t }} = B r \\left(1 - \\frac{u{\\left(t \\right)}}{q}\\right) u{\\left(t \\right)} - \\frac{B u^{2}{\\left(t \\right)}}{u^{2}{\\left(t \\right)} + 1}$" ], "text/plain": [ " 2 \n", " / d \\| / u(t)\\ B*u (t) \n", "B*|-----(u(xi_1))|| = B*r*|1 - ----|*u(t) - ---------\n", " \\dxi_1 /|xi_1=t \\ q / 2 \n", " u (t) + 1" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wormode4 = subs(wormode3, t*B/A=>t)" ] }, { "cell_type": "code", "execution_count": 29, "id": "162decd2", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$r \\left(1 - \\frac{u{\\left(t \\right)}}{q}\\right) u{\\left(t \\right)} - \\frac{u^{2}{\\left(t \\right)}}{u^{2}{\\left(t \\right)} + 1}$" ], "text/plain": [ " 2 \n", " / u(t)\\ u (t) \n", "r*|1 - ----|*u(t) - ---------\n", " \\ q / 2 \n", " u (t) + 1" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wormode4rhs = wormode4.rhs()\n", "rightside = wormode4rhs.args[1]/B + wormode4rhs.args[2]/B" ] }, { "cell_type": "code", "execution_count": 30, "id": "a52d0b36", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\frac{d}{d t} u{\\left(t \\right)} = r \\left(1 - \\frac{u{\\left(t \\right)}}{q}\\right) u{\\left(t \\right)} - \\frac{u^{2}{\\left(t \\right)}}{u^{2}{\\left(t \\right)} + 1}$" ], "text/plain": [ " 2 \n", "d / u(t)\\ u (t) \n", "--(u(t)) = r*|1 - ----|*u(t) - ---------\n", "dt \\ q / 2 \n", " u (t) + 1" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "modelworm = Eq(diff(u(t),t), rightside)" ] }, { "cell_type": "markdown", "id": "66453542", "metadata": {}, "source": [ "### 2.3 steady states" ] }, { "cell_type": "markdown", "id": "ef7be824", "metadata": {}, "source": [ "If we look for steady states, then we look for zeros of the right hand side in the model." ] }, { "cell_type": "code", "execution_count": 31, "id": "c0473cb9", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$r \\left(1 - \\frac{u{\\left(t \\right)}}{q}\\right) u{\\left(t \\right)} - \\frac{u^{2}{\\left(t \\right)}}{u^{2}{\\left(t \\right)} + 1}$" ], "text/plain": [ " 2 \n", " / u(t)\\ u (t) \n", "r*|1 - ----|*u(t) - ---------\n", " \\ q / 2 \n", " u (t) + 1" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f = modelworm.rhs()" ] }, { "cell_type": "markdown", "id": "47d0b35f", "metadata": {}, "source": [ "Observe that $u(t)$ is a common factor, so $u(t) = 0$ is a steady state." ] }, { "cell_type": "markdown", "id": "1658830a", "metadata": {}, "source": [ "Now we divide out the $u(t)$ common factor." ] }, { "cell_type": "code", "execution_count": 32, "id": "d0a2ed16", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$r x \\left(1 - \\frac{x}{q}\\right) - \\frac{x^{2}}{x^{2} + 1}$" ], "text/plain": [ " 2 \n", " / x\\ x \n", "r*x*|1 - -| - ------\n", " \\ q/ 2 \n", " x + 1" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = Sym(\"x\")\n", "fx = subs(f, u(t) => x)" ] }, { "cell_type": "code", "execution_count": 33, "id": "4f526b6c", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$r \\left(1 - \\frac{x}{q}\\right) - \\frac{x}{x^{2} + 1}$" ], "text/plain": [ " / x\\ x \n", "r*|1 - -| - ------\n", " \\ q/ 2 \n", " x + 1" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g = fx.args[1]/x + fx.args[2]/x" ] }, { "cell_type": "markdown", "id": "bb71d8c4", "metadata": {}, "source": [ "Let us consider the two terms separately." ] }, { "cell_type": "code", "execution_count": 34, "id": "6c42ca22", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(r*(1 - x/q), x/(x^2 + 1))" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h1, h2 = g.args[1], -g.args[2]" ] }, { "cell_type": "markdown", "id": "bcdce57c", "metadata": {}, "source": [ "Let us make a plot for $r = 0.4$ and $q = 20$." ] }, { "cell_type": "code", "execution_count": 35, "id": "d2138ca4", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAIAAAD9V4nPAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdeVxU9d7A8d/ZZp9h30RABQFBQEBUENww99wyKvNmq1ZP2c20xXLp3lbTut12q6ulUuFSaaaGa5n7viLiviCyzr6d8zvPH6NkKDrgzJw5M9/363k9r2E4zHy1O3w8O8HzPAIAAAD8FSn0AAAAAICQIIQAAAD8GoQQAACAX4MQAgAA8GsQQgAAAH4NQggAAMCvQQgBAAD4NQghAAAAvwYhBAAA4NcghAAAAPyaACE8ePDgggULnF+e4zi3zQKchTEWegR/Bx8EbwAfBMG544MgQAgPHz5cWlrq/PImk8l9wwBnYIzNZrPQU/g7+CAIDmNssViEnsLfueODAJtGAQAA+DUIIQAAAL8GIQQAAODXIIQAAAD8WgtC+OWXXyYnJ8fFxb388ss3Hrej1Wq7Xufzzz936ZwAAACAW9BOLrdt27aXX3559erVUVFRw4YNa9u27TPPPHP9AizL7t27d9euXY4vo6KiXDwpAAAA4AbOhnDevHnjx4/v1q0bQujll19+++23m4TQITs725XTAQAAAG7m7KbRY8eOZWZmOh5nZmaWlZXdeGIpz/N5eXk9e/acMWOG0Wh05ZgAAACAezi7RlhbW6vRaByPAwIC7Ha7TqcLDAxsXEAuly9YsKBr165VVVXTpk07cuTIsmXLbvpS5eXlS5cu/fXXXxufWbx4cUFBQXNvbTAYnBzy1nhtjfmXr9mzZWRoG1n/B+gOnV3ysv7AcR4xXFNDWK76IIBWwxhbrVa4xI+wWvpBUCgUFEXdehlnQxgUFKTX6x2PdTodTdONXWx8s/HjxyOEUlNTv/322+TkZL1er1arb3ypxMTE4cOHz5s37+oENH3Txa532wVui9PVX/nfTFXPYcp/vGg9ebhh2ccBQx9WdLvrDl/WT2CMaZpWKpVCD+Lv7vyDAO4ExphhGIVC0epXMBqNZWVlLhzJr6SkpMjlcuSGD4KzIUxISDh69Kjj8dGjRzt06ECSzW5WVavVPM/bbLbmFpBIJEFBQS0a9A41lHyozOmvLixCCMnT85iouOqPplDBkdKENE+OAQDwZwsXLpw5c2ZMTIzQg4jP2bNn58yZ41jdcjlnQ/jwww8/8sgjTz31VEhIyAcffPDwww87np8+ffrQoUN79Oixf/9+qVSalJRUX18/efLk7t27h4SEuGPiVrBWHLRfPhf8yGuNz9Bh0UFjp9Qtfi/ipc9JWev/fQcAAM5jWbaoqOijjz4SehDxefzxx1mWddOLO3uwzIABAyZOnJiRkREVFdWuXbvJkyc7nt+6dWtlZSVC6MyZM4MHD5bJZPHx8Var9YcffnDTxK2gX79Efdf9BPW36suSs2VJWbpfvxFqKgAAAN7A2TVChNCMGTNmzJjB8zxBEI1Prl+/3vFg5MiRI0eObPJdb8DWXradLw95bMaN3wq4+9HLb09QFQynw6I9PxgAAABv0OJLrN26c95WQYSQac9GRWZvgmZu/Bap1Kj7jtbCSiEAAPgx37/WqPnAH4qs3s19V1Uw3HbykL3qnCdHAgAA4D18PIRsXRXW1UvapTS3ACGRqXqN1K9f4smpAAAAeA8fD6H12G5pcja65QZbZc+hlsPbOW2tx6YCAADgPXw8hJbyfbKkrFsvQ8pViq79jFt+8cxIAADgh+bMmeO1V0fy6RDyvLXioLRjxm0XVOXfbdyxhufcdZIKAAD4mw8//PC7775r/PK1117T6XQCznMLvhxCe9V5Uq6iAm5/Xj8d3paObGc+sMUDUwEAgBdqbnXNarWazWbHY7vd7vxZ7WVlZadPn27yJMuyFoul1UO6iS+H0HbmqKR9s4fJNKHqOcS4bbVb5wEAAC908uTJ7Ozszp07p6enP//8844Lhx09ejQ1NfX555/v0KHD5MmTtVrtfffdFxcXFxMT8+CDDzouPT148OC1a9cihEpLS4ODg/ft24cQKi4uHjdu3LJly4qLi+fOnRsfH994z75vvvkmMTGxTZs2DzzwAM/zgv2Bb9CCE+pFx3amTNIu2cmFZZ1zG5Z+ytZcokPbuHUqAABoZOHQlsueSwJBoIJIQvL3NaCJEyfefffds2bNqqury8vLS0tLQwhxHHfs2LEJEyZcvHgRY/zPf/7TbDafPXuW5/nhw4f/61//eu+997Kzs3/77beBAweWlpaGhYWVlpZmZmauXbs2JyfnnnvuWbduXUxMzLRp0xrf6Ny5cxUVFSaTqUuXLqWlpQMGDPDYH/zWfDqE544rew5xcmGCohXZfU07SjVD3XJRVwAAuNFJHf/uQc/d14lAKE5FJWj+OpDeYrFs3LjRcVHM4ODgBx988ODBg45vSaVSx8ocSZIrV65csGABwzAIoeeff37SpEnvvfdev379XnjhBYTQunXrXn/99QULFrz44osbNmyYOnXqTd/9ueeeI0lSpVL17NmzrKwMQuh2vN3G1lxioto7/yOK7gNqvpiuGfLQrU+3AAAAV0kNIkoHC/l72GAw8DzfeFu96+8yGxIS0ngnv7q6utDQUMfj0NDQ2tpahFBeXl55eXlZWZler7/33nunTJly4MABm82Wmpp60/dqfBepVGq1Wt30J2oFn91HaK88TYe3vemV1ZrDRLWj1IHWEwfcNxUAAHiV0NDQ0NDQPXv2OL7ctWvXTRfr0KHDoUOHHI8PHTqUkJCAEJLJZLm5udOnT+/bty9FUTk5OW+88UZhYaHjWps0TYvlJsY+u0Zov3hKEh3f0p9SdC007V4vTezijpEAAMALzZgx4x//+MeUKVMqKiq2bduWmZl54zIvvPDCyy+/rFQqOY577bXX3n//fcfz/fv3nzZtmuM0icLCwkmTJn355ZeOb3Xu3Pmrr76Kj49v3759bm6ux/44reC7Ibx0mmnTgu2iDvKs3rq1iwJtVkIidcdUAADgbZ555pmOHTv+8ccfmZmZwcHBly5dQgiFhYU9/fTTjcuMGzdOo9EsWbKEIIh58+YNGXL18It77rmnoaGhf//+CKHhw4dfuHBh8ODBjm89+uijEonk0KFDPM/n5uZOmTJFpVI5vjVo0KDGDa3ewHdDWHlGnpbX0p+i1EGS2CTzke2KzGav0w0AAL6ksrKyR48eAwcOrKys7Nu37zvvvIMQioyMvP6AT4TQ8OHDhw8f3uRnO3bs6FgeIRQbG9v4GCHEMMwjjzzS+OUbb7zR+Hj06NEu/1PcCd/dR3j5LB0Z14ofVGT3Ne/Z6PJ5AADAO504cSIrKysmJiY3N3fs2LEjRowQeiJP8801QmzUIYwpTVArflaWltew7DNsNpBylcsHAwAAb9OrV6+TJ08KPYWQfHON0F51jo6Ibd3PkjKFNCnTfHCra0cCAAAfdvDgwZ9++knoKVrJN0PIVp1nItq2+scVmb3N+za7cB4AAPBtu3btWrRo0S0WGDZsWHl5ucfmaRGfDSEd1voQylK62c4ex0YvvVA6AAC4nFarbby4diOMcWVlZePpgA0NDTdedLumpubGJw0GQ11d3fXPHDp0yGQyXf8Mx3H19fU3TmI2m6urq1vxR2g13wyhvfoSHR7d6h8nJFJZcrb54J8uHAkAALzQ+fPnY2NjJ02alJeXFxcX9+KLLzqenzx58sSJEzMyMnr27HngwIEdO3Z07ty5oKAgNjZ21qxZjmVOnjyZlpaWn5+fkZGxfft2x5Mmkyk9PT0nJ8dx2dKysjKE0CuvvHL58uWxY8d27dp15cqVCKHXX389KioqNze3U6dOe/fuRQhhjIODg1977bVOnTqNH+/RS1365sEybM1FOqz1IUQIyTN7Gf9cpcwd7KqRAADgRrzNYjm2G3nsVgwkJevUlWAkjU9gjM+fP9+mTZsjR47U1tZmZ2f37dt38ODBJpNp9erVO3bsiIqK0uv1KSkp3377bd++fXU6XX5+fn5+fv/+/Z966ql77rln1qxZDQ0N3bt3d1ytm2GY1atXR0dHI4Q++uijqVOnrly58u233y4uLi4uLu7SpQtC6Ndff/3yyy8PHjwYGRn52WefPfDAA0eOHCFJsr6+Xq/Xnz59mvDsdS59MYQYc3VVdEjUnbyGLLlrffH72KgjlRpXzQUAAE1w9dUmzx6RwER3oEMimzzpuLh2SEjIAw88sHr1asdJ8UVFRVFRUQihP//8UyKRcBy3bt06lmUTEhI2bNjQq1ev9evXL168GCEUGBg4bty4AwcOIIQYhtFqtQsWLKisrKypqXGs7TXx66+/jh07NjIyEiE0YcKEqVOnVlRUJCYmIoQmTZrk4Qoinwwh11BDKjXX/5OnFQiJVNop23xoq7LHIFcNBgAATdARMSEPvyrsDBKJRKlUOh4HBQVduHDB8Tgk5OpdzR17AdetW+f4MjExsWvXrjqdjuf5xot0BwVdPV1t165dI0eOfPXVV7t27VpZWblmzZob37GhocGxyogQoigqICCgcWdh45t6kg+GkK29RIfe0eqggyKjwLh9DYQQAODbbDZbWVlZp06dEEIHDhxISkpqskCnTp3MZvOMGTMUCkXjk44KHjp0KCsry/GDjufXrl07atQox+XZSkpKGpdnGKbxmJqEhIT9+/c7Hl+6dKm6ujo+vsWXhnYhnwzhnW4XdZB16lr//X+wyUAq4Mx6AIDPYhjmn//85+TJkw8fPrx27do5c+Y0WcCx43DkyJHPPvusRCLZtWtXbm5uYWHhCy+88MQTT7z55pvl5eWrV6/u0aMHQig1NfWrr74aMmSITqebPXt244tkZGR88MEHvXv37t2798SJE9PT0996663MzMx33313/Pjx4eHhGGOP/rGv44Mh5GovU8FNt4C3AiGVSxMzLIe3KbrddeevBgAA3kkmk7399tuffvqpXC7//fffHfsFBw4c2Li1EyH03XffLVq0aMWKFTabLS0tLT09HSE0bdq0yMjIhQsXpqSkfPfdd2fPnkUIjRo1qr6+fvHixVFRUYsWLWpcKfzyyy+///77M2fOZGVlJSUl7dq16/PPP//+++/Hjh372GOPIYQIgnjppZekUgFueEDwHjta6Zri4uJVq1Y5drE6Q6/Xq9Vq51+/buFsWXK2IqewVdP9jWnPBvO+30Men3XnLyVqGGOz2dy4FwEIoqUfBOByGGOLxXL95sGW+vjjj48fP/7RRx+5cKo7dPbs2bS0NJ3O20+bfvzxx3Nzcx977DF3fBB88DxCtq6KuuGYqNaRpXa3VhzkrU1PMgUAAOAzfDCEXN1lOjjcJS9FypSSDqnmoztd8moAAOBt4uLivH910N18LYQ8x2KjjtK47ABceXo+XGIGAAB8mK+FkGuopgJCEOmyP5c8Lddatpe321z1ggAAALyKz4WwvpoKCnPhC5JKDdM23nL8JhdHAAAA4AN8MYQBrgwhQkielmeBraMAAOCjfO08Qk5b49o1QoSQPL2nbu3iIMwhknLtKwMA/E1FRcWSJUuEnkJ8Tp8+nZub66YX97kQ1lfTUXGufU0qMJQObWOtOCRN7OLaVwYA+JWcnJzff/8dQtgKkZGR2dnZbnpxnwuhtkaa7Pq/LHl6nvngFgghAOBOdO/e/frLbwIv4Wv7CNmGGiow1OUvK0/vaT60zXP3DAMAAOApvhZCrK2lAlwfQjosmlSobWfLXP7KAAAAhOVTIeQ5FpsNlDrQHS8uT+8JZ9YDAIDv8akQYl0dqQ5C7rm7sTw9D0IIAAC+x6dCyGnrqIBgN704Ex2PeN5+6bSbXh8AAIAgfCuEuloXXmX0RrB1FAAAfI+PhbCO0rhrjRDB1lEAAPBFPhVCrK0j3bZpFCEkaZeCDVq25pL73gIAAICH+VQI3b1GiAhCnpZnPgArhQAA4Dt8LoRqd4YQIXkG7CYEAACf4lsh1Lt5jRAhSXwaW3OJa6hx67sAAADwGJ8KIdbVk+45m74RQdHy1O6wUggAAD7Dh0LI89ioc9NlZa4HW0cBAMCX+E4IsVFLyJUeuGWgNDHLfvEUNjS4+40AAAB4gO+EkNM3UOogD7wRwUhknbLNB7d64L0AAAC4m++EEOsb3L2DsJE8Ix+2jgIAgG/wnRBy+jpK5aEQyjp1s50pwya9Z94OAACA+/hOCD25RkhIpNKkTPPh7Z55OwAAAO7jbAivXLkycOBAlUoVFRW1ePHi5hbjOG7w4ME5OTkuGq8FPLaP0EGekW/e/4fH3g4AAICbOBvCF154ISIior6+/qeffnryySfPnz9/08U++OADvV5/9uxZ103oLGxoID21aRQhJE/tbjt1BJsNHntHAAAA7uBUCI1G45IlS6ZNm8YwTPfu3QsLCxcuXHjjYuXl5QsXLnzttddcPaRTOIOWVAV47O0IqVzaMd1yeIfH3hEAAIA7OBXCc+fOcRyXlJTk+DI1NbWioqLJMhjjJ5544v3335fL5bd9QZvNVn+NXu+aQ06wvsFjB8s4yLsUmGDrKAAAiBztzEL19fVKpZIgCMeXGo3m8OHDTZb55JNPkpKSCgsLN2/efOtXKy8vX7Fixbp16xqf+e677/Lz85tb/r7NJE9aXunMZQXzt3hZVl9vIRmbwXPbKvl2adaSj/W11YT09u0XNYyxxWLh+Vv9/QN3MxqNjZ9BIAjHBwFjLPQgfq2lHwSFQkGSt1nlcyqEoaGhBoMBY+x4uYaGhvDw8OsXqK2tff311z/77LN169YdPHjQZrOtW7cuLy9PoVDc+GqJiYljxoy5xRE3TSws0P9wUT7uT5wRgmZlUdmhN/8r0Jr0qvAoUnaTd3QXlcqWmEGdPqTo2s9zbyoEjDFFUUqlUuhB/BrP8yqVSugp/BrGmKbpm/5aAx7jjg+CU5tGY2JiZDJZ41rggQMHkpOTr1/AbDZnZmbOmzfv3XffLS4uNpvN7777bl1dnUtGlJDo6RTyRBE9qC05spQb/hu3p6bpqglvtyGO9WgFEUIIybsUmPf/7uE3BQAA4EJOhVAul48bN27GjBm1tbUrV67csmXLuHHjEEJlZWXDhw9HCLVt27b0mrlz5wYEBJSWlrZt29aFg0op9H8pZEURPbAtMaqUG1H6txxio0ePlGkkS+1hrTiELUbPvzUAAACXcPb0idmzZwcEBHTu3HnmzJklJSUREREIIZZlb1ztU6vVGRkZLh7zGkcOTxTRd0UTI0u5EaXcvloeIYQNWlIpQAhJmUKamGE5tM3zbw0AAMAlnNpHiBDSaDTffPNNkyc7d+68ZcuWJk9mZWWVlpa6YLTmSSn0TAr5eBL51XE8/DcuO5R4I6AhQqlx65s2R96ll2n3BkVOf0HeHQAAwB0S8SXWZBR6JoU8UUQXtiHe39Gw1aDeXyvAYY1Xz6yH644CAIA4iTiEDjIKPZtKzk0zBgYHDvuNG1XKeTiHhFQuTc6CuzIBAIBIiT6EDpRZm9lWU1FE921DOHJ4oM5zOVRk9jbvu83ZkwAAALyTj4QQG3SkKkBGoUmp5Il76T5RxNC13D3rPJRDWUo32/lyTl/vgfcCAADgWj4SQs6oJa8dLCOn0XOdyRP30r0iiSFruHvWcQfdnEOCkchSu5sPND1uCAAAgPfzkRBio576+1GjjhxWFNEFkcRg9+dQkdnbtGeT+14fAACAm/hKCE06UnGT0yfkNPrntRwOWsOOWc8dck8OpUlZbPUFru6KO14cAACA+/hKCI06UtXseYTXcsj0jCAGrmHvdUMOCYqWZ+Sb9m1y7csCAABwNx8KoUJ962UUNHq+M1lRxORFEAPXsEWuzqEiq49pz0YXviAAAAAP8IUQ8jYrQoiQyJxZuDGHPcKJAavZovXc4XrX5FDaoTNvMdkrz7jk1QAAAHiGL4QQm/S3XR1sQkGjyWnkyfuY7uHEgNXsfRu4I3eeQ4KQZ/aGlUIAABAXPw2hg4JGL6SRFUVMtzCi/68uyKGiaz/Tno0IbmALAADi4RMhNOpIZWtC6HA1h/cxOWFE/1/Z++8gh0xUO1KutJ463OphAAAAeJhPhNCkv+m5Ey2ipNGUNLLiPiY7lCj8lX1gI3e0oTU5VHQtNO3ecIfDAAAA8BifCWHr1wivp6TR1HTy5H1MVgjRbxU7diN3rIU5VGT3NR/8k7fbXDIPAAAAd/OVEN7BptEbNeawSwjRt4U5pAJCmOh4y5EdLpwHAACA+/hKCF20Rng9JY1eTCcripiMYKLvKvZBp3OozOlv3LXe5fMAAABwB58IodEtIXRQMeilDLKiiEm/lsOy2+VQntHTdvowNjS4aSQAAAAu5BMhNBtIhcqtb9GYw7Rgos8qdtymW+WQkMhknXPhhEIAABAFnwihSU/K3bVGeD0Vg17OICuKmNQgovcqdtwm7rj25jlU5vQ37lzngZEAAADcId8IocF9m0ZvpGLQK9dy2OsX9h+buPIbcihNSOfNBvvFkx6bCgAAQOv4RAjNesLNm0ZvpL6Ww06BRMEv7ENNckgQim53GXeWengqAAAALeULIeRNbt9H2Bw1g6Z1ISuKmKQbcqjI6W/as4nnWEEGAwAA4CTxhxBz2GYlpQoBR1Az6NUuZEURkxhAFPzCjt/MndDydEgkExVnObxNwMEAAADcluhDiE0GUq5EBCH0IEjNoNcyyRNFTEcN0XMlO34zZ0gfYNzxm9BzAQAAuBXxh9BsIOXCbBe9KQ2DXsskK+5jEjREr9M96iqOn7xQLfRQAAAAmuUTIRRoB+EtaBg0PZM88oDyXIeCr79b+/BmrkIH92YCAABvJP4QevbciRbRMKj3sCHPmErj1ShvBfvI79xJyCEAAHgZ8YfQbCDkSqGnaBbTNp5WaaYqD5woYtqriVzIIQAAeBnRh5A3edc+whspewwybl0dIEEzMskTRUw7FZG7gn3sd+6UHnIIAADCE30Ive1gmRvJs/taT+zj9PUIoQAJmplFlhcxsSqi+8+QQwAAEJ4PhNBIevGmUYQQKVPI0/NN151HEShBM7PIE0VMjAo5cngacggAAALxgRB6+xohQkjZc4hx22rE/612gRI0K4s6UcS0VaJuP7OP/wE5BAAAAYg+hLzZ6M0HyzhIYhJJhcZStvvGbwVK0OvZVPm9TLQCdfuZfeIP7gzkEAAAPEj0IRTFGiFCSNlzqHHrr819N0h6NYdRCpTzMzthC+QQAAA8xAdCaBRFCBVZfaynjnD1V26xTJAU/SubKr+XiZRDDgEAwEPEH0KLkZALecVtJxESqaJroaH5lcJGjhwev5eJkKOuP7ETt3BnDZBDAABwF9GHkBfJplGEkCp/mGn7Wp61O7NwsBT9O5sqL2LC5Sj7R8ghAAC4i+hDKJZNowghOiyaie5g3ve78z/SmMMwGcr+kX1yC3cOcggAAC4l7hDyrB1hTDASoQdxlqpguOGPFS39qWApeqMrVV7EhMpQ1o/sU39CDgEAwGXEHUJsNhAiWR10kKV0wyad7WxZK37WkcPjRUywFGX9yD79J3feCDkEAIA7Je4Q8l5/WZmmCEKVf7fh959b/QIhUvRmV+p4ERMoQZnLIYcAAHCnxB1CbBFbCBFS9BhoObab09beyYuESNFbOVTZvUyABGUuZ/9vK+QQAABaSeQhFM+RMo1ImVLRtZ9hy8o7f6lQGXo7hyq7l9EwV3N4AXIIAAAtJO4Q8mYjIRPZGiFCSNVrhHHbGt5mdcmrNeZQzaCM5ewzkEMAAGgJcYcQW4ykGM6mb4IObSNt38m0e70LXzNUht7JoY7fyyhp1GU5++xW7iLkEAAAnCDyEJqNpAjXCBFCqj6j9ZuWN7kfxZ0LlaF3u1HH7mUUNMqAHAIAgBPEHULeYiJk4lsjRAhJ49NImcJydIc7XjzsWg7lNMpYzk7aBjkEAIBmiTuE2GIS3VGjjdR9x+g3LHPf64fJ0Oxu1NExjJS8msNLJsghAAA0Je4Q8hajSNcIEULyjHyuoaZ1J9c7L1yO3utOHR3DSEiUvox9DnIIAAB/J+4QincfIUIIkaSq72j9+iUeeKtwOZrTnTo6hmGu5bDS5IG3BQAAERB5CEV4Qv31lN0G2E4fZavOe+btHDk8MoahSZS2zP7P7ZBDAAAQeQh5i0mM5xE2IiRSZf7d+g1LPfmmEXI0tzt1ZAxDEShtmf15yCEAwL+JO4TYbCRFu4/QQVUw3Hx4G9dQ7eH3deTw8BiGQKjzMvvz27nLZg+PAAAAXqFlIWxoaKivr7/FAtXV1XV1dXc2UguIfY0QIUQqVMruAzy8UtgoUo7e70EdceRwqX0y5BAA4H+cDaHdbh87dmxCQkJiYuKYMWOs1qaXB9u+fXt4eHh6enpiYmJKSsru3btdPepNiH0foYOqzz2mPRuxoUGoARw5PDyG4RHqvNT+wg6uCnIIAPAbzoZw/vz5ZWVl58+fv3jx4oULF+bNm9dkgcTExMOHD1dWVlZXV48aNWrixImuHrUpnmPFdVfe5lCaIEVmb/3G5cKOESlHH/SgDt3DYB6lQg4BAH7D2RAuXrz4iSeekMvlEonkySefXLRoUZMFgoODw8PDEUIEQfTs2fPWW1BdQryXlbmRun+RcfsabNQJPQiKUlzNIcejlKX2KZBDAICvo51c7tSpU4mJiY7HiYmJp0+fvnEZu90+f/78y5cv//zzz++9915zL4UxNhgMp06danwmNjaWpp2d5K/XsYj+SJlGVGCYPCPfsOlHzdDxQs+CEEJRCvSfHtRL6dQ7B7jUpfbxHYlnOxJK0W+EBgCAm3A2P3q9Xi6XOx4rlUqtVnvjMjzPnzp1qra21mAwGI3G5l7q1KlT69evLywsvDoBTX/66ae5ubnNLW80GgmCuPF5rq6Gl8gMBoOTfwQvR+Xdrf/0RaLbQMJr7rCoRujNNPRMApp7lMr6hXoo3vJcMhcmgwvTCKO5DwLwGIyxxWLBGAs9iF9r6QdBoVCQ5G22fTobwrCwsIaGq0dz1NfXR0RE3LiMRCJ55513EEI7d+7s3Ydg7FcAACAASURBVLv36NGjVaqb/E5PSEgYMWLE4sWLnXxrnudv+jpWEtkU6pt+S5RUKq5LAb9zrdo7VgobdVShTwvwlFTzf0/IclZTjyaRU9KocLnQY/mf5j4IwGMwxjRNKxQ+siFKpNzxQXB2H2F6enrjgaC7du1KT0+/xcJxcXEWi8VisdzpdLfEW0yE1Kd+H2v632/Yusob9hTeKEqO/ptLHRhNWziUstT+0k7uCuw7BAD4BGdD+PTTT3/88ccbN27csmXL+++//9RTTzme79Onz/bt2xFCS5cuXbJkyaFDhzZt2vTwww/369cvNDTUXVMjhBy3nvCVfYQOVHC4oksv/QZPXH20daKVhCOHJvZqDqvd+68dAABwO2c3jRYWFs6dO3f69Ok8z7/55ptDhw51PB8XF+fYdxgcHPzpp5+eOnVKo9H06tVr8uTJ7hr5Gl86arSResADVbOfUvUeTWmChJ6lWdFK4qM86uUM8u0DuNMS+2NJ5NR0KlQm9FgAANAqBO/qm6TfVnFx8apVq5zfR6jX69Vq9U2eX78EG7UBwx936XTC0/40j8dc4OinhB7kLxhjs9msvNlhoxeM/DsH8Pcn8ePJ5JQ0yKEbNfdBAB7jOFgG9hEKyx0fBBFfa9QHrq92U+r+95n2bGTrqoQexCltlcTHedT+0bTBjpKX2F/ZxdXAxlIAgKiIOITYaiJ962AZB1IVoCoYrlu9UOhBWsCRw32jaZ0dJS2xT9vF1Ta9Bh8AAHgpEYfQJ/cROqj6jLYe32OvPCP0IC0ToyQ+yaP2j6YbbCipBHIIABAHEYcQW80+dtRoI1KmUPe/X7vyf0IP0hoxSuLTntTeUXS9DSWV2F/dDTkEAHg1EYfQ984jvJ6y51C26ry14qDQg7RSrIr4rCe1dxRdZ4UcAgC8mohDiC0m0hcPlnEgKFoz7GHtz18hjx/W60KOHO4ZRddaUFKJ/bXdXB3kEADgZUQcQt5qImQ+u0aIEFJ06YVI0rR3o9CD3Kk4FfF5PrVnFF1tQYkl9ul7IIcAAC8i4hD63pVlmiKIwJFPaH9ZwNttQo/iAnEq4ot8as8ousqMEkvsM/Zw9ZBDAIAXEHEIeYvZh/cROkjap0rikvSblgk9iMvEqYh5+dTukfRlM+oIOQQAeAHRhpDnsc1MSn16jRAhhFDA8McNm37ktLVCD+JK7dRXc1hpQolL7DMhhwAA4Yg1hLzNQtASdLu7TPkAOjhCmTdE+4soT6W4tXZq4ssCatcI+hLkEAAgHLGGxIdPIryRpv991hMHbKePCj2IWzhyuHMEfdGEEpfYZ+3lGnxhlygAQDTEGkLe6vs7CBsRUnnA3Y82LP9M1KdS3Fp7NfFVAbVzBH3egDqWQA4BAJ4j1hBii9F/1ggRQoqsvoREZty2WuhB3Ku9mvi6F7VjBH3egBJL7K/vxZBDAIC7iTWE/nDI6N8QROA9T2t//dY771/vWh3UxNe9qO0j6LMG3pFDLeQQAOA2Yg0htpoJPzhk9HpMm/aKrv20K78WehAP6aAm/teL2jacPmPgO5bY/7UPcggAcAuxhpC3mkifvqzMTQUM/oelbI/t9BGhB/GceA0xvxe1bTh9Ws93LLH/ex/W2YWeCQDgW0QbQn/bNIoQQoiQygNHTawv+YjnWKFn8ShHDrcOp0/q+IQfIIcAAFcSawj96vSJ68kzCqigcMNG37nWjPMSNMSC3n/l8A3IIQDAFcQaQr86faKJoDHP6DcuY2suCT2IMBw5/PNu+oSO71gCOQQA3CmxhhBbzaS/hpAKDtcMeKD+hw99+LTC2+oYQHzTm9oyjC7X8h1L7G/ux3rIIQCgVcQaQt++K+9tqQpG8DarcfsaoQcRWMcA4ts+1B/D6OMNfPwP9rcghwCAlhNtCP140yhCCJFk0P3/1K5awDXUCD2K8BIDiG/7UFvupo818Akl9rcPQA4BAC0g1hBiq6/fjPB2mKh2qoIR9SUfCj2It0gMIBb2of4YRh+t5ztCDgEAThNrCP3z9Ikm1P2LOF2dccdvQg/iRRw53DyMPlLPJ5TY3zmADZBDAMAtiTWEfnIzwlsjKDr4wanalV9zDdVCz+JdkgKIRX2ozUPpw/V8POQQAHBLYg0hbzET/ndlmRsxUe3UfUbXFb/vz0eQNic58GoOD9XxCSX2dyGHAICbEW0IbWZCAiFECCF1v3t5u9XwxwqhB/FSyYHE4r7UpqH0QcghAOBmxBpCbDGTUpnQU3gHkgx+cKrut2L75bNCj+K9HDncOJQ+UMcnlNhnH8RG/7pKHQCgWeIMIc/zrI2QQAivokOjAu5+tG7hbJ6FlZ1b6RRIFPelNgyl99Xy8T/Y34McAgBEGkJsNROMFBGE0IN4EWX3gXRolO6X+UIPIgIpgcR3fakNQ+k9NZBDAIA4Q8j76xW3by3ovudMB7ZYju0SehBxSAkkvu9HrR9C76nhE36wzzkEOQTAT4k1hLBd9EakQh08bmr9dx9wujqhZxGN1CDi+37UuiH0rmo+4Qf73EPYBDkEwM+IMoTYz6+v1jxpfJqy59C6hbMRxkLPIiapQcQP/ajSIfSOK3z8D/b3IYcA+BNRhpC3Wvzw9vRO0gwYiwik+61Y6EHEp3MQUVJIlQ6ht0MOAfAnIg2hCU4ibBZBBI97ybhtteX4XqFHESVHDn8bTG+7wieU2D84DDkEwMeJMoT+fDNCZ1CaoOB/vFy/eA5ceq3V0oKJJYXU2kH01qqrOTRDDgHwUaIMIW+zwD7CW5MmpKl6j6qd/yacWXgnHDlcM4j+s4qPL7H/B3IIgC8SZwjhYBknqPuNoQJCGpZ/JvQgopceTCwtpNYMov+4zCeUsJBDAHyMKEMI11dzCkEEPzjFduow3MjeJdKDiWX9qV8HUb9f5hNK2A8PYwsn9EwAAFcQZQh5G6wROoWQykMem6lb9Y3t9FGhZ/ERGcHE8v7Ur4OozZf5hBL2v0dg7RAA0RNnCK1mwu9vRugkOiw6aOzk2gVvcg01Qs/iOxw5/GUAtfES33EJ+98jsHYIgIiJMoTYaoFNo86TdcpR9R5V89Us3mYVehaf0iWE+PGuqzl0rB1CDgEQI1GGEA6WaSl1vzGS6A51i2bD/XtdzpHDlQOoDZf4jiXsR5BDAMRGnCG0WeBaoy0VWDQJG3VauD2Fe2SGED/dRa0YQK27xHcsYT8+iq2QQwBEQpQhhBPqW4Gg6JBHp5sP/mnctlroWXxWZgjx813Uz3dRpRchhwCIhihDCJtGW4dUakIn/lu3+lvLsd1Cz+LLskKJn++ifryL+u0Cn1DCfgI5BMC7iTSEsGm0lejQNiGPzqhbPMd2/oTQs/i47FBixQDqp7uotRf4jiXsp5BDALyVKEOIrWYCjhptLUm7TkH3PVf71Sy2plLoWXyfI4fL76JWX8COHNrgBlkAeBlRhpC3wT7COyJPy9UMfLDm81c5fb3Qs/iFrqHEygF0Yw4/OwY5BMCLiDCEPM+zdoKRCj2HuCnzhii63VXz+WvYbBB6Fn/hyOHSQmrVOdyxhP0ccgiAdxBfCHmbhWCkiCCEHkT0NAMekCak1345E06096ScMOKXgfTSQmol5BAA7yC+EGIrXHHbZQJHTqBD29T+719wtyYPywkjVg2kl1zL4RdlkEMABCO+EPJWM9ye3mUIIuj+5wm5su6bt3kOrh7tad3CiFUD6ZJ+1IqzOBFyCIBAWhbCCxcu7N+/32az3fS7GOOTJ08ePnzYYrG4Yrabg7vyuhhJBo97EfG4buG7CMMB/gLoHk6sGkj/0I/66QxOLGHnQQ4B8KwWhHDy5MnZ2dkTJkzo2LHj0aNNb+uzb9++2NjY/v37jx07NiYm5ueff3bpnH/BcBKhqxEUHfzwq7zVUrdoNsLwO1gY3cOJ1YPo7/tRP57BSUvYL8uwHf5TAOARzoZw9+7d33777YEDB3bu3Dl+/PgXX3yxyQKBgYG//PLL6dOnDx48OHv27EceeQS751cqb4NbT7geQTMhj07HZmPdIlgvFFKPcGL1IPq7vtSyMzgRcgiARzgbwpKSkmHDhkVGRiKEHn/88TVr1uh0uusXaN++fZcuXRyPCwoKGhoazGaza2d14K1mWCN0B4KRhDw6A5tNtQvfhf2FwuoRTqy5LodfHYccAuBGzobw3Llz7du3dzyOiYkhSfLChQvNLTxv3rz+/fsrlcqbftdms12+fHndNZs2bTKZTM5PDBcadR+CkYQ8NoO32eoWvAXHkQrOkcPFfaglp3DSEvbbUxTkEAB3oJ1czmg0ymRX18MIgpBKpQbDzU/ELikpWbhw4datW5t7qUuXLh05cuStt95qfGbGjBnZ2dnNLd/kjaw6LU9Ser3eyclBS0nufc685L9VX0xXPjAVMRKEEMbYYrG4aVs3uLU0BVqaj3bUkP8+gN47apuawj7QjmPEd7i3L8AYW61WjoN9B0JqLj3NUSgUFEXdehlnQxgZGVlXV+d4bLVaDQaDYzNpEytWrJg0adLatWsbVx9v1K5du8LCwsWLFzv51gghtVr91xcEj5Xqvz0DXE3z2PS67963LHo7ZMLrpEyJMaZpurlVfOAB/dWoe6j+kImZtZd8vwy9mkk+lEDSkEPPwhgzDKNQKIQexN+5/Pe/s5+k7OzsxpW8rVu3RkVFRUdHN1lm7dq1EyZMWLlyZUZGhitn/DveBptG3Y8kg8e+wLSNr/74JWxoEHoacFVeBPHbYPrbPtR3J3HSEnZ+OWZhLR2AO+ZsCMeOHVteXv7vf/+7tLT0ueeee/bZZx0rm+PHj589ezZCaO/evSNHjhw2bNi+ffvmzZs3b948rVbrjol5K5xH6BEEETj6KXnnHlc+fIGtvSz0NOAvPSOI0sH0N72p4pM4eSm7AHIIwJ1xNoQajWbz5s1nzpz5z3/+M2HChJdeesnxfF5eXmpqKkKI5/mHHnqIoqg917jptHpss5Bw1KinaAaNU/UZVfvxVK7ytNCzgL/JjyRKB9MLelGLKiCHANwRgud5D79lcXHxqlWrnN9HqNfrr98iXLdwtiylqyK7n3umAzdhOrClvuSjkIdekiVlCT2L/2ryQbjeH5f5WXu5cwb0ahdyHOw7dBvHUWOwj1BYt/ggtJr4PjG8Dc4j9DRZWp563Iv1i98z7vhN6FnATRREEuuH0P/rRX17Andayn5zAtYOAWgB8YUQWy1wV17Po2KTw56doy/9XrtqAfL4VgTgjIJIYsNQ+ute1DfluNNS9lvIIQDOEV8IYY1QKHRYdPjz/7GdPFT7zVtwC0Ov1SuS2DCU/qqAml+OU5ZBDgG4PRGGEC66LRxSqQl9+h2CkVZ/NJXT1go9DmhW7yhi41B6Xj41vxynLmMXVmAOVuMBaIYIQ2izEnDRbeEQNBP84BR5l4IrHzxnO1Mm9DjgVvpEERuH0l/kU18fxylL2UWQQwBuRowhhDVC4akL7w0qmlTz1Szj9rVCzwJuo08UsWko/UU+9RXkEICbEV8IsdUM5xF6A1lKt/BJc/Qbl9Uv+QjuVuH9HDn8PJ/6sgynLmUXQw4BuEZsIeR5nrXBGqGXoMPbRkz+EBu01R9N4RqqhR4H3F7fKGLzMPqzfOqLMtx5GeQQAIREF0LebiVoCSIIoQcBVxFSecjDr8rT86+8P8lStkfocYBT+kYRvw+jP8m7msPikxhDDoEfE1sIYQehFyIIdb8xwQ+/Wv/9B7pfv0FwtyaR6NeG+H0Y/XEe9dkxnAo5BH5MZCHEVgsJh4x6JWmHzhFTPradK6/+5CWuoUbocYCzCtsQfwyjP8qlPj2KOy9jv4McAv8jshDCGqE3I1WBoRPfkHXqemXus+ZDzd6ZGXih/tHElrvp/+ZSnxzFacvY7yGHwJ+ILYRWC5xE6NUIQt3/vpDHZmp/+rJhyce83Sb0QKAFHDn8Ty71MeQQ+BOxhRDWCMVA0i45fOon2GaumvN/tvMnhB4HtMxd0cSWu+kPcqmPjuL05ewPpyCHwMeJLIRwEqFYkDJF8INTNYPG1c6boVtbjDAn9ESgZQZEE3/eTb/fg/rwME5fzpZADoHvElkIYY1QXBSZvcOnfGw7feTKfybbq84JPQ5osQHRxNbh9Nzu1AeQQ+C7RBhCuAeTqFABIaET31D2GFj90VT9+iWwaihGA9sS24bTc7pTHxzGGcvZJachh8CniDCEsEYoOgShzBsSPvm/luN7r/zneXvlGaEHAq0xqC2xbTj9Xndq7iHc5Ud2KeQQ+AqRhRDbLLCPUKTo4Iiwp95S5g2t/uQl3epvedYu9ESgNQa1JbYPp9/NoeZcyyHUEIidyEIIp0+IG0EoewyMePEz++VzVbOfslYcFHog0EqDY4jtw+l3cqj3DuKM5ewyyCEQM7GFEDaNih+lCQ555LWA4Y/XLZ5TVzwXG7RCTwRaaUgMsWME/U4ONfsg7rKcXX4GcghECUIIhCHv3CPy5S8opebyOxONW39FPPwKFStHDt/Kod45gLssZ3+EHAKxEWMIpUJPAVyDkMoDRjwR9n/vmPZsvPI+3O9e3IbGEDtH0G/lUG8fwJmQQyAqIgshtlrhots+holqF/bMbFWfkbXz/11fPJfT1Qk9EWg9Rw7f6Eq9tR9n/cj+dBZyCERAZCGETaO+iSAU2f0ip31FaoKr3n1Sv+4HuEipqA2LJXaNpP+dTb2xD3IIRECEIWQghL6JkMoDhj0SPvlD27nyqrefMO3dBDsORc2Rw39lk2/sw9mQQ+DFRBhC2DTq0+iQqJBHpwc9OMWwafmVD/5pPXlI6IlA6xEI3R1L7hpJv55N/nsfzv6R/RlyCLyPCEMIB8v4AWl8WvjzH6r6jKovnlvz5Uy4GI2oOXK4eyQ9K4t8fS/O/pFdATkE3kR0IbTCPkJ/QRCKrD4R076SJWbWfPZK3eI5bO1loWcCrUcgNDyO3DOKnplFztqLu/7ErjwHOQReQWQhhEus+RuColW9R0a++j86NOrK+5Pql3zENdQIPRRoPQKhEXHknlH09Exy5h6cAzkEXkBUIeR53g5rhP6IkMo1Ax+MnPYVKVNUvfd0w/LP4CwLUSMQGhlH7hlFv5ZJztiDu/3E/nIOaggEI6YQ8nYbQTOIIIQeBAiDVGoC7n4s8pV5BElVvftkw/LPOG2t0EOB1nPkcO8o+tVMcvoeLgdyCAQiqhDCSYQAIVIVGDByQsTLXxAUXTX7qYYlH7N1VUIPBVqvMYfTupCv7eZyfmJXnYccAo8SUwhhByFoRKmDAkY8EfnKl4RCdWXus3WL59gvnxN6KNB6BEKj2pH7RtOvdCFf3cV1+5n9FXIIPEVMIYQ1QtAEqQoIGPpw5PT5THjbmk9fqv36ddvpo0IPBVqPQGh0O3LfaPqldPKVXVx3yCHwCAghED1SplTfdX/k9G+kydl1i9+78uEL5oNb4ao04kUgdE97ct8o+sV08pVdXI8VkEPgXqIKoRXOpgfNIhiJquewyGlfq3uP1K8vufzmY4YtK3mrWei5QCuRxNUcTkkjX97F9VjBroYcAveghR6gBeDcCXB7JCnvUiDvUmA7fVS/6Ufd6oXK7gOU+XfTwRFCTwZagyTQmPbk6HbksjP4xZ3c6/vQrCxqUFs4dBy4kqhCaIULjQJnSdqnhLRP4equGLasuDL3WWmHzqqCu6Udu8DpN2JEEuje9uQ97chlZ/DUHdzre9GsLGog5BC4iJg2jWKbhWRg0yhoASo4PGD441EzF8o6dW34ad7ldyYYfv8ZW4xCzwVaw5HDA6Pp5zuTL+zgcleway/AxlLgAqJaI4RNo6BVCIlUmTdEmTfEeuqIcctK3ZqF8vSeyrwhktgkoUcDLUYSqKgDOaY9ueQ0fmEH9699aGYWNSAa1g5B64kqhLBpFNwZaYdUaYdUbNAad/xW9+27hFSuzB2kyO5LylVCjwZahiTQfR3Ie9uTS07j57dxgVLIIWg9UYXQZiFg0yi4Y6QqQF14r7rfGOuJA8btq3WrvpF17q7sPlAanwZ7EMWlMYclp/Dz27ggKZqZRd0FOQQtJKoQ2q2kKlDoKYCvIAhpYhdpYhds1Jl2b2hY/hlvtShyChXd7oJDTMWFJND98WRRB7LkFH5uGxcsRbOyqP6QQ+A0UYXQaiFCYNMocDFSqVH1HqnqPdJ+ocK4s/TK+5OYyFhFzl3yjHxSphB6OuCsxhz+cApP2saFyNDMTMghcIqYQghHjQK3YtomBLZNCBjxhOXoTtOuddofv5B16qro2lea3JWgxPRJ8WckgR6IJ+/rQH5/Cj+7jQuVoVlZVGEbyCG4FTF9vHmbFQ6WAe5GULQ8LU+elodNevP+P/Trl9YVvy/PyFdk9ZXGd4adiKJAEmhsPHlfB/KHU/iZrVyYDM3KovpBDkEzxBVCC8FACIGHkAq146QLrv6Kae/mhh8/x4YGeZcCRWZvSVwyFNH7Uddy+P1J/H+QQ9A8UYXQDhfdBgKggsLVhfeqC+9lr1ww7dtc/8OH2GKSZ+QrMvIl7TpBEb0cRaAHE8j748nvT+Kn/+Qi5GhWNtU3Cv6rgb+IKoRWK1x0GwiIDm+rGfigZuCD9svnzPt/ry/5Lzbp5Rn58rQ8aXwaIsV0nSZ/05jD707iJ7dwkXL0ejbVB3IIEEIiCyGsEQLvwETGMoPGaQaNY69cMB/8U7via7busrxzD1laniwpi2AkQg8Ibo4i0LgE8oF4svgknriFi1KgWVmQQyCqEMId6oG3ocPbqvvfp+5/H1d/xXxom2HzT/WLZksTu8hSe8hTu8Fpr96JItA/Esix8WTxSTxhCxetQLOyqN6QQz8mphDyNtg0CrwUFRSu6jVC1WsENhksx3aaD2/X/jyPDm8rT+0hS+nGRHcQekDQVGMOF1fgJyCH/k1cIYRNo8DbkQqVIrufIrsfz7G2k4fMR3bWzn+DZ22ylG6yTl1liZmEVC70jOAvFIEe6nh17fDxP7gYJZqVTfWKhBz6lxaEEGO8c+fOhoaGnj17qtXqmy6j0+lqamratGkjk7m6WDzP222w9wWIBUHR0sRMaWImGjWRrb5oObrT+Oeq+sVzmJhEWaeusuRsJqodHHHqJWjyag4Xn8SP/c7FqtCsLKoAcug3nA0hy7JDhw6trKyMjY199NFHN27cmJTU9BY2nTp1OnXqlN1u37x5c0FBgWsH5e1WgpHCLw4gRnRYtKr3KFXvUbzNYq04aDm2u3b+G7zVLE3OliVlShMzKXWQ0DMCRJNofEfywXhyUQV+5HcuDnLoN5wN4Y8//njhwoW9e/dKpdIXX3zx9ddfLy4ubrLM/PnzMzIy4uLiXD0kQrBdFPgEQiKTpXSTpXRDCLG1ldayveYDfzYs+5QKDJMlZkoTM6XxnWHbqbBoEj2cSI5LuJrDdio0K4vKhxz6NGdDuHz58nvuuUcqlSKExo4dm5uby/M88ff1sx49erh+wGuw1ULCkTLAh9AhUXTPocqeQxHGtvPllvJ9+o1La795i2nTQZbYRdoxQxKXDPsChNKYw4UVePxmroMGzcqicsOEHgu4h7MhvHDhQr9+/RyP4+LiLBZLTU1NWFhr/ndhMpnOnTtXUlLS+Ey/fv2Cg4ObWx5jjDHmrGZCIsMYt+IdwR3C1wg9iM+iYxJVMYmqwvt4u81+5qilfL/2l/n2yjNMTEdpQrqkQ5okLgn+E3geidD4BPRgB3LRSf6hTVx7Nf9yCuoXC/8VhNTSDwLpxJUunA2hzWZjGMbx2PHAarU6P8r16uvrz549+8MPP1ydgKbbt2+vUDR7vxur1cowDGvQ8TRjsVha96bgTmCMLRYLRVFCD+IfYpIlMcmSwvt5q5k9e8x+6oj5l6+5qvNERBybkEa3S6FjEmHzqYfdH4PuiUbFp4nHtlIJh+2vpuEeYbzQQ/kpRxGcX14mk922hc6GMDIysqamxvG4urqaJMmIiFbevDQ6OrqgoGDx4sVOLs9xnEKhsJKEVaa4RS+B+2CMCYKAv3xPUyhQUD7qko8Q4m2WhiO7qcqT1s3LDRcqmPAYSYdUaYdUSftUSgMH2njIxFQ8tr1l2SXZ49txggbNyqLyImDfoac5iuDa13Q2hHl5eZs2bZoyZQpCaOPGjTk5OS1q8p3jbRY4mx74LUIioxMy1Jn5CCGetdvPl1tPHTHuLK3/4UNSoZK0T5G2S5G0T2Ei4+CSp27FkOjRRPIfCeQ3J/C4TVxiAJqRCTkUPWdD+Oijj86dO3fatGkJCQmvvPLKp59+6ni+W7duDz300DPPPIMQ+uCDD6qqqoxG4xdffLFq1aopU6aEhoa6alDeZoWjRgFACBE0I2mfKmmfqi5EiOftVedtZ47ZTh3W//4z1tYwsYnSdp0k7TpJ4pJJpUboYX0TQ6LHk8jxHclvTuAHN3FJAWhmFpUbDjkUK2dDGBYWtm3bti+++GL79u3ffvvtwIEDHc8/9dRT6enpjscajcZms82YMcPxpTO7KJ0Hp08AcBMEwUTGMpGxyh4DEULYpLedKbOdPWb4/WfbmXdJVYAkLkkSlyyJTWSi4+EYVNdqzOGCcjx2I5cUgGZlUT0ghyJE8Lynd/kWFxevWrXK+X2Eer1erVYbtvzCXj4TOOYZt84GbgpjbDablUql0IP4NccHoQU/wPP2K+ftZ4/bzh63nTturzpHh8dIYhMlsUmSmI5MVBwi4einlnEcNXbTHVR2jOaX47cP4OQANCuL6g45dJsWfxCcIJprjcIaIQAtQxBMRCwTEavodhdCiLfb7BdP2c6XW08eMmxaxtZdYdq0k7TtyMQkSNp2pCNjCUo0vw28EEOiCcnkw4nkgnJ83wYuJQjNzIQcioZo/qfP2ywEAwfLANBKBCORtEuWtEt2fMlbzbaLJ+3nT1hPHDBsXMbWVTERcUxMgiQ6nomOZ9q0h2PTWkFyLYfzr+VwVhbVLQxyxin8/QAAFpdJREFU6O3EE0K7lVTAnn8AXIOQyqUdOks7dHZ8ydss9ounbBdP2s6XG7atZq+cp4IiJNHtmWtdpDTNXvICNCEh0cRk8pFEcn45LlrPpQahmZBD7yaeENqsRCD8ExUAtyAkMkn7FEn7FMeXPMeyVeftF0/ZL53Sb1hiv3gKESTTpr2kTXu6TXsmqh0TGQeH3txaYw7/dxzfu55LC0Izs6gcyKFXElEI4TxCADyEoGimTXumTXuECh3PcNpa+6XT9kunrcf3GTb/yF65QAWFM1Htmag4JqodE9WODo2Co29uJCHRk53IR5PI/x3H96zj0oPRrGyqayjk0LuIKIRwHiEAgqECQqiAEFmnro4veY5lqy/aK8+wl86Ydm+wV57htDV0eAwTEcNEtaMjYpmoODokCs7ud2jM4dfXcjgzC3LoRUQTQmyzwt0nAPASBEUzkXFMZBzK7O14hrfb7JfPspfP2avOmXb+Zr98ltPW0mHRdEQMExFLR8Qw4W3p8Bh/3qAqIdFTnchHE8n/lePRpVxGCOTQW4gmhLzNQjCwRgiAlyIYiSSmoySmY+MzvN3GVp23XznPXj5r3r9Ff+U8W3OJ0oTQ4dF0RCwT3pYOi6bD21IBIQKO7XlS6moOvzqOR5VymSHEzCwyG3IoKPGE0A7nEQIgJgQjYdrGM23j/3oKc2ztZfbKeXvVBdu5ctPuDfYrFxBro8OiHVGkw9vSYW3osGhS5uNXb5BS6P9SyMeTyK+O45GlXGYIMSuLzIIcCkQ8IbTCwTIAiBxJOZonS/3rOWwysDUX2aoLbPUF86GtbPVFtvoSwUjpsDZMWDQV1oYObUOHtqHD2vheHRtz+OVxPKKUywolZmZCDgUgnhDa4WAZAHwQqVBJYpMksUnXP8lpa9maS2zNJbb6knn/FsdjgmbosDZ0SBs6NIoOjaJCoujQKB84wVFKoWeurR2OKOWyQ4mZWWRmCOTQc8QTQjh9AgC/4ThIVRqfdv2TnL6eq6lkay6xNZWW43vZmkqu9jK2GOmQKCokig6JoEOiqJBIOiSSDo4Q3b2LZddy+GUZvvs3rivk0INEFEJYIwTAr1HqIEod1HjWvwNvs7C1l9maSq62kq2ttJTv42ovs3WXCYmMDo6gQiLp4AgqKIIOjqCCI+jgCC//97SMQs+mkk8kX81hTigxM4vsAjl0M9GEEE6fAADciJDIHGf0N3me09Vz9VVs7WWursp+6ZTlyHa2roqrqyKkcjo4ggoKp4PCqcYHQWFede/GxhzOK8PDfuO6hREzMiGHbiSOEPKsnSBJuG4FAMBJlCaI0gRJ4pKbPM/p67m6Kq6+mq2/wtZcspbvY+uvcPXVPGujgyOowDAqMIwKDKWCI+jAUCoglAqOEOrcRxmFJqWSE5LJL45dzeHMLDIjGHLoeiIJoc3q5Rs0AACi4Ni+im4IJG81s/XVXP0VrqGaa6i2Vhw01Vc7HhMSGRUYSgWGkQEhvDIQhbehAkLJgGA6KNwD+2tkFHquMzkhmZxXhoes4XqEEzMgh64mkhDarXAPJgCA+xBSORMZy0TG3vgtbNBy2hquodpeV22tvWwp38811HC6Wq7+CkHSVGAoFRhKaoLpoDBSHUwFhlIBwZQmhNIEI8JluZLTV3P4xbUczswi0yGHLiKSEMJdeQEAAiFVAaQqgImOl2BM/f0O9dhs4LS1XEMNp6vj6q+wlWcsx3ZjXS2nrcVGHakKoAJCSHUwFRhCaYKpgFBKHUgFhJKaIEod1IpMymn0z87kxGTyizI8eA2XG0HMzCTTIId3DEIIAACtRMpVpFzFRMbd5HuY4/QNnLaG09Vz2hqsq7edOcrp6jltLdbXYaOeVGpITRClCaHUgVRACKkKpAJCSHUQpQmiNMG3+I3XmMPPy/CgNVxeBDEDcnhnxBJC2EcIABAVknKcDXnz72LMGRqwro7T1nKGBq6hlq2+aD15iNPVY309p6tDCFGaYFIdRKkCqIBgUhVIqgMpTTB17YFcInv+2trhwDVszwgScthqIgkh7CMEAPgSkqQ0wZQmmGmbcNPv8zYLp63FhgZOr+V0ddjQwF46Yy3byxkasL6B09UhHjuK+A9l4DiFZv+5wAX71eGhQSNSA+PbhJBKDakKIChx/IYXnDj+mrDVAicRAgD8ByGR0WHRKCy6uQV4mxUbtJyuDhsbOIO2u64uU1N7/NLJIysadKghCutIs46QykhlAKUOJJUaUhlAqgMppYZUBToySakDSWWAP98Yq5E4QsjbYdMoAAD8hZBIqeBwKjj8+idDETKx6LNjeM5BrlcUOTPZmEjrOIMWG7XYoOX0DWz9FXy+Ahu1nL4BG3XYqEUEQSo0pEpDqQJJZQCpVJNKDanUkAo1pQ4kFRrHl77dS5GEEK6vBgAATlDQ6IU08slO5GfHcOFGee8o5fTM6NQOze475G1WbNRyBi02aLFRh406bNKzlWc5k+76ZxBBkAo1qdRcraZCQyrUhFJNKdSkUk0q1IRCTSk1pEItxiufiCWEcNQoAAA4S0mjKWnkU53IT4/i/r+yfdqQ0zPJlMCb5JCQSClJOBUUfuO3rsfbLNikd3SRM+qwUY+NOq6+2n7xJDbqsemv/yMlMkcXyWuNJBVqUq66+kChIhVqUq4kFWrvuTC6eEIIB8sAAEBLKGk0NZ18OoX89Cjut4rt23wOb4uQyCiJjAoMu+2S2GJ0rEReDaTZgE16rK9nq85jkx6b9diox2YjNht4u+1qGuWqq/9friL++lJJytWEXHn1WzIlIslWTO4MkYQQ9hECAECrNObwk6O43yq2XxtyeibZqVU5dAYpU5IyJQqJuu2SPMdik543GbDZiM167HjgqOaV89hsxCYDNht4x3fNRlIqJ+QqXqZQTppDylUunFkkIbRZSfHffhMAAISipNGL6eTTnchPjuK+q9jCNuT0TDLZbTl0BkHRlDoIqYOcXB5bjLzJaNBrXVtBhJC71jRdC8NdeQEA4I6pGPRSBllRxKQHE31WseM2cWUNvNBDOYuUKangcDI40vWv7PJXdAfeZiXhYBkAAHCFxhx2DiJ6iy2H7iCaEMIaIQAAuJCKQS9nkCeLmNSgq2uHx7V+mkOxhNBCMLBGCAAALqZi0CsZ5IkiJjWI6PUL+49NXLn/5VAkIbTDeYQAAOAuaga9kkFWFDGdAomCX9iH/CyHIgkhbBoFAAA3UzNoWheyoohJvpbDE/6RQ7GEEI4aBQAAT2jMYVIgke8fORRLCOE2TAAA4DlqBr3ahTxRxCQGED1XsuM3cxU6n82hOEKIbVZS+v/t3VlQFHceB/D/TM8wCKMcAsJwiItE5RzEE4PgREiVESUYiD4YdOO66xHiw75QcQ9X1tolmKQSKj5EDVRKCJpwGMdwqBwCSgrKxMqCEQTcdYBhjMCshjl6uveh3VlKo5ktYHpm+vt56m7+dv+kbb99/Lv/eEYIAGBX86TkcIK473Xp4nmipPP0LheNQ+cIQgzMCwDAl3lS8ocEcd/r0ggXjUNnCEKWRRACAPCLi8PeHOmv5omSztO7Wyx3XCUOnSAIWdosoiSz991xAACwkZcb+WOCuDdHumiuaO15+tctlv5/O30cOkO64HIQAMCRWONwoVy0usbp49AJgpA1Y3h6AACH4+VG/rT8f3H4ptPGoRMEITGb8BIhAIBj8v5vHIbKyZoa+s0Wy4CzxaETBCE+KwMA4OC83cifl1O3c6QhnmRVDf2bq84Uh04QhIQ24ovbAACOz9uNHEmkenOkCo/HcTjoDHHoBEHImoxiXBECADgJLg5vZ0uDPMjKGnpvq6PHoTMEIZ4RAgA4Gx8Z+UsidTtbGjiHrKim97Za7j500Dh0giAk6DUKAOCcHsdhjnTBHLKimv6tQ8ahEwQhPisDAODUfGXkaCL1Q7bU350kVjlcHDpBEOL1CQAAF+ArIwUrqNs5j+Pwd62WfzpGHDpBELImDE8PAOAiuDj8IUc6350sr6L3tfEfh04QhIQ2iaRufBcBAAAzZr6M/HUF9UOO1FfGfxw6QRCyJnSWAQBwQdY49HEjy6vo/W2Wfz3iIQ6dIAjxjBAAwIXNl5FjK6lb2VJvN5JQSR9ot3cc/h9BODQ0VFpa+uWXXxoMhp9tYDAYKisrS0pKNBrNDJVHCCGMySBGr1EAAJfm5/44DudKSUIlfbDdcs9ecWhrEN64cSMmJqalpeXEiRNJSUmTk5NPNDAYDC+++GJxcXFra2tcXFxXV9eM1Wg2iWS4NQoA4Pr83MnfVlK3sqVyKVHaKw5tDcKCgoKDBw+eOnWqvr5eKpWWl5c/0aCiooJl2YaGhpMnTx46dOjo0aMzVSJrNuBbowAAwsHFYU+21FNC4ivpt2Y5Dm0KQpZlL168uG3bNkKIWCzOzMxUq9VPtFGr1Vu3bqUoihCSlZV18eJFhmFmpkYzRp8AABAcf3fy91XUrWyph4QoK+m32i2a2YlDiS2NHjx4YDAYgoODuVmFQjE0NPREG41G8/LLL3PTwcHBZrNZp9MtWLDg6bWNj493d3cfO3aMm6UoaseOHUFBQc/aOmM0WMQSs9lsS6kwGxiGMZvN2AX8wi7gHQ4EXnhTpCCBvL2MvPcPJr6S2RYifi/J7GZz/xaJRCISiX6hjS0rslgshBDruiiKomn6iTYMw0xtYP1TTzOZTEaj8cGDB9Yler0+ICDgWVunEjcS38BnrQ3sgGEYi8WCXcAv7ALe4UDgka+UFCjJ20tFJ3sYo9lC2ZRdhBBCUdTMBKGfn59UKh0dHZ0/fz4hRKvVKhSKJ9oEBQWNjo5y0yMjIxRFPSvbAgICEhISioqKbNk0IcS8Ks1j7lwbG8NsYBiGZVl3dzyp5ZPZbMYu4Bf3uAd7gUeh7uT3Maa58hneBTZdXorF4pSUlNraWm62trZWpVIRQhiG0Wq13D8OlUplbVBXV7d+/XqJxObIBgAA4ImtWZWfn5+VlfXo0aOBgYHbt2/n5uYSQoaHh0NCQu7evRsWFrZz586ioqJdu3ZFRkYeP3787Nmzs1k2AADAzLD1gaNKpWpqarJYLNHR0Z2dnd7e3oQQHx+f06dPc/dLvby8Ojs74+LizGbzpUuXNm7cOFMlNjY2PusVfrCP+/fvf/PNN3xXIXSNjY1Go5HvKgRtdHS0s7OT7yqE7vLlyyaTaWbXKWJZe3/YraysTK1Wnzlzxsb28fHxpaWlSqVyVquC56isrCwtLa2pqeG7EEGLioo6d+5cdHQ034UIV0VFxRdffHHu3Dm+CxG0yMhItVr9wgsvzOA6neFbo8A3+58tATggHAiuCkEIAACChiAEAABB4+EZYWFh4QcffGD7o47r16/HxMTI5fJZrQqeQ6fTDQ0NxcfH812IoF27di0uLs7T05PvQoRLq9WOjo7GxsbyXYigtbe3K5VKDw8PG9u/+uqr+/fvf34bHl71y83NVSgUgYGBNra/e/duaGioWIyLV94YjcYff/zx6a8ogD0NDg6GhYXhQODR5OTkxMSE7f93wWwYHBxcuHDhL34sxmrRokW/2IaHK0IAAADHgbNLAAAQNAQhAAAIGoIQAAAEDUEIAACC5ugDRPT29ra1tYWGhqpUKtu7CcFMGRsb6+rqss7Gxsb+7GDLMBuGh4dv3boVGRkZEhJiXWgymerq6sbHx1966SX0451tFoulp6dnZGREpVJZ++t+9913Op2Om5bJZMnJyfwV6PomJydbW1uHh4cjIiLWrVs39UfNzc39/f2rV6+Oioqa5lYcutdodXX1nj17srKyOjo6li5dWlFRwXdFgtPU1JSRkbFmzRpu9vDhwykpKfyWJBApKSldXV0syxYVFe3bt49baDKZUlJSJBLJ4sWLz58/X1dXt2LFCn7rdGE3b95cu3ath4fH/fv3jUajm5sbt3zr1q19fX3cWYifn195eTmvZboylmW9vLwSExPDw8NbWlqioqKqq6u5gd/37t179erVlJSUqqqqoqKinTt3TndLjolhmGXLlpWVlbEsOzEx4e/v39HRwXdRgtPY2BgXF8d3FUI0MDBA03RqaurHH39sXVhWVhYbG2s2m1mWLSgo2Lx5M38Fur6HDx8ODw/fuXOHEGI0Gq3Lt2zZ8umnn/JXl7D09fVxE+Pj4z4+Pg0NDSzL9vT0yOVynU7HsuzXX38dGhpK0/R0tuK4zwjv3LnT29ubmZlJCJk3b15aWtqFCxf4LkqIDAZDfX19R0cHBsOyp/DwcO7Md6oLFy5kZmZyQ16/9tprtbW1NE3zUZ0geHp6Puvd+f7+/tra2oGBATuXJEARERHchJeXl4eHBzcAk1qtXr9+vZ+fHyEkLS1tYmLi22+/nc5WHDcIh4aGfH1958yZw80GBwdrNBp+SxImsVhcXFy8e/fu6Ojo7u5uvssRNI1GExwczE0HBwfTNK3VavktSYBkMtnVq1c//PBDpVJpvWsNs+3UqVPu7u6pqamEEI1GY31wTlFUYGDgNNPBcTvLWCyWqb1jKIrCya/9JScn9/T0EEJYlj1w4EBeXt6lS5f4Lkq4LBaLtcsGd72Ig8L+ysvLuV/+vXv3lErl5s2bX3nlFb6LcnFXrlzJz89Xq9XcJ0afSAeJRDLNA8FxrwgDAwPHxsasfz2tVhsUFMRvSQJkvTsnEom2b98+zfsPME1BQUGjo6PctFarFYlEOCjsz3pQhISEJCcn37hxg996XF5bW9uOHTvOnj27cuVKbsnUA4EQotVqp9mD2nGDMDIy0t/fv7GxkRBC0/SVK1c2bNjAd1GC1tXVFRoayncVgpaamlpXV8dN19fXJyUlWbsygv2ZTKbvv/8+LCyM70Jc2fXr1zMzM0tKSribopzU1NSWlhau10JnZyfLstMcG8ehX58oLi5+9913Dx061NTUpNVq29vb8el9O8vPz9fr9YsWLert7T1z5kxZWdmWLVv4LkoQPvnkk87Ozq+++ioiIiIqKmrfvn1KpVKv18fHx2/YsGHJkiWFhYWfffbZpk2b+K7UZRmNxry8PL1e//nnn+/Zs0cul7///vsTExMZGRkqlUomk1VXV5tMpmvXrrm7u/NdrGv66aefFArFwoULrW9wbd++nbsiSktLE4lEmzZtOnHixBtvvPHOO+9MZ0MOHYSEkLq6uubmZoVCsXv3bozEZn/d3d319fUjIyMBAQEZGRmRkZF8VyQUly9f5jruc9LT08PDwwkhOp2upKREr9dnZGSsWrWKt/oEgKbp06dPW2dlMllubq7FYqmpqbl58ybDMEuWLMnOzsZF+ewxmUwlJSVTl6xbt44by9ZgMJSWlg4ODq5du3b6Z+eOHoQAAACzCncaAQBA0BCEAAAgaAhCAAAQNAQhAAAIGoIQAAAEDUEIAACChiAEAABBQxACAICgIQgBAEDQEIQAACBoCEIAxzUxMeHr6zv1c4tPLwGAaUIQAjgulmXHxsaMRuNzlgDANCEIAQBA0BCEAAAgaAhCAAAQNAQhgOOSSCSEEJqmrUv0ej1/5QC4JgQhgOOSy+Xe3t5Th6pvbm7msR4Al4QgBHBo6enpJSUlDQ0NOp2uqqrqyJEjfFcE4GoQhAAOrbCwMCwsLD09PSAgIC8v76OPPuK7IgBXI2JZlu8aAOB5GIbp7+9/+PBhTEwM99QQAGYQghAAAAQNt0YBAEDQEIQAACBoCEIAABA0BCEAAAgaghAAAAQNQQgAAIL2H8U5CwGtcqChAAAAAElFTkSuQmCC", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h1fun(xv) = subs(h1, r=>0.4, q => 20, x => xv)\n", "h2fun(xv) = subs(h2, r=>0.4, q => 20, x => xv)\n", "plot(0:0.01:20, h1fun, xlabel=\"u\", label=\"growth\")\n", "steady = plot!(0:0.01:20, h2fun, xlabel=\"u\", label=\"predator\")" ] }, { "cell_type": "code", "execution_count": 36, "id": "82095a1b", "metadata": {}, "outputs": [], "source": [ "# savefig(\"figwormsteadystates.png\")" ] }, { "cell_type": "markdown", "id": "0227e4eb", "metadata": {}, "source": [ "We see there are three steady states, for our particular choices of the parameters." ] }, { "cell_type": "code", "execution_count": 37, "id": "7c4fbb0f", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$0.4 - 0.02 x$" ], "text/plain": [ "0.4 - 0.02*x" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h1e = subs(h1, r=>0.4, q=>20)" ] }, { "cell_type": "code", "execution_count": 38, "id": "8c35f220", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\frac{x}{x^{2} + 1}$" ], "text/plain": [ " x \n", "------\n", " 2 \n", "x + 1" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h2e = subs(h2, r=>0.4, q=>20)" ] }, { "cell_type": "code", "execution_count": 39, "id": "9829df78", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\left[\\begin{smallmatrix}0.480535939911864 - 2.0 \\cdot 10^{-22} i\\\\2.43633300316055 + 5.0 \\cdot 10^{-20} i\\\\17.0831310569276 - 7.0 \\cdot 10^{-21} i\\end{smallmatrix}\\right]$" ], "text/plain": [ "3-element Vector{Sym{PyCall.PyObject}}:\n", " 0.480535939911864 - 0.e-22*I\n", " 2.43633300316055 + 0.e-19*I\n", " 17.0831310569276 - 0.e-20*I" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "states = solve(h1e - h2e)" ] }, { "cell_type": "markdown", "id": "ab9d9ebd", "metadata": {}, "source": [ "### 2.4 a numerical solution" ] }, { "cell_type": "markdown", "id": "17e88cce", "metadata": {}, "source": [ "Let us solve the model for $r = 0.4$ and $q = 20$." ] }, { "cell_type": "code", "execution_count": 40, "id": "9ed6d8ec", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\frac{d}{d t} u{\\left(t \\right)} = 0.4 \\cdot \\left(1 - \\frac{u{\\left(t \\right)}}{20}\\right) u{\\left(t \\right)} - \\frac{u^{2}{\\left(t \\right)}}{u^{2}{\\left(t \\right)} + 1}$" ], "text/plain": [ " 2 \n", "d / u(t)\\ u (t) \n", "--(u(t)) = 0.4*|1 - ----|*u(t) - ---------\n", "dt \\ 20 / 2 \n", " u (t) + 1" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "specialworm = subs(modelworm, r=>0.4, q=>20)" ] }, { "cell_type": "code", "execution_count": 41, "id": "2d2b7ee8", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\begin{equation*}\\begin{cases}u{\\left(0 \\right)} & \\text{=>} &2.4\\\\\\end{cases}\\end{equation*}" ], "text/plain": [ "Dict{Sym{PyCall.PyObject}, Float64} with 1 entry:\n", " u(0) => 2.4" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "initconds = Dict(u(0)=>2.4)" ] }, { "cell_type": "code", "execution_count": 42, "id": "e9d1cfd7", "metadata": {}, "outputs": [], "source": [ "# dsolve(specialworm, ics=initconds)" ] }, { "cell_type": "code", "execution_count": 43, "id": "297494df", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "wormrhs!" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"\"\"\n", " function wormrhs!(du, u, p, t)\n", "\n", "defines the right hand side for a special worm model.\n", "\"\"\"\n", "function wormrhs!(du, u, p, t)\n", " growth = 0.4*(1 - u[1]/20)*u[1]\n", " predator = - (u[1]^2)/(u[1]^2 + 1)\n", " du[1] = growth + predator\n", "end" ] }, { "cell_type": "markdown", "id": "9011e79b", "metadata": {}, "source": [ "The initial condition is very close to one of the steady states." ] }, { "cell_type": "code", "execution_count": 44, "id": "4848929a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[38;2;86;182;194mODEProblem\u001b[0m with uType \u001b[38;2;86;182;194mVector{Float64}\u001b[0m and tType \u001b[38;2;86;182;194mInt64\u001b[0m. In-place: \u001b[38;2;86;182;194mtrue\u001b[0m\n", "Non-trivial mass matrix: \u001b[38;2;86;182;194mfalse\u001b[0m\n", "timespan: (0, 60)\n", "u0: 1-element Vector{Float64}:\n", " 2.4" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "timespan = (0,60)\n", "specialode = ODEProblem(wormrhs!, [2.4], timespan)" ] }, { "cell_type": "code", "execution_count": 45, "id": "2e2503c8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "retcode: Success\n", "Interpolation: 3rd order Hermite\n", "t: 16-element Vector{Float64}:\n", " 0.0\n", " 0.31897711989271615\n", " 2.237843989683818\n", " 5.551622669135096\n", " 9.311273749300323\n", " 13.612277037028647\n", " 17.985145920073556\n", " 22.00178332611892\n", " 25.89962303634802\n", " 29.973308270533103\n", " 34.23673690349549\n", " 38.77841810292171\n", " 43.99075402473218\n", " 49.990351665923825\n", " 57.209381675500865\n", " 60.0\n", "u: 16-element Vector{Vector{Float64}}:\n", " [2.4]\n", " [2.397605557721931]\n", " [2.379513317580878]\n", " [2.3265821202910284]\n", " [2.207267410226695]\n", " [1.9236030662024972]\n", " [1.3982630928222008]\n", " [0.8803578193895758]\n", " [0.6234532742437225]\n", " [0.5291477324862351]\n", " [0.4967117694050077]\n", " [0.48562067701074185]\n", " [0.4818959015294326]\n", " [0.48083779415279587]\n", " [0.48058815568732133]\n", " [0.48056167631705604]" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sol = solve(specialode)" ] }, { "cell_type": "code", "execution_count": 46, "id": "1d899a97", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAIAAAD9V4nPAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nO3deWAU9d348e93Zjd3Qi4SQkLCfR/hvgwEBQFRwYoVtFSkPEVprXdF6VO0LdSDqohW/CGtRXwU0KLc9yXITcJ9CUhCgJiEQO5NdmZ+fyxNEQIE2Oxsdt6vv7Ljuvm47ua9c+yMNAxDAABgVYrZAwAAYCZCCACwNEIIALA0QggAsDRCCACwNEIIALA0WzXvt3r16mXLlmVnZ8fGxj722GPt27ev0bEAAPCM6q4R7t69OyEh4b777gsICOjZs2d6enqNjgUAgGfIW/hC/ZAhQ1JSUiZMmFATAwEA4Ek3vY/wyJEj+/bt69GjR01MAwCAh1V3H6EQYsqUKRMnThRCTJw4MTU19Vp3u+eee4QQAQEBrpv16tV78803b2tGn2AYhmEYisLRSVfSNE1VVbOn8DquTTVSSrMH8Tq8YKqk6zp/Xqrk7+9vt9uvf5+b2zSq6/q+ffuGDx/+8ssvjxkzpsr7tGvX7uGHH27evLnrZr169e64447q/wpfpWmaw+EICgoyexCvU1hYGBoaavYUXsfhcCiKcsM3sAXxgqlSUVFRcHAwn5yuoOu6YRg3fB/dxBqhEEJRlA4dOowaNWrp0qXXCmFwcHD//v3ZdnoF1+ogH9muxtNSJeU/zB7E6/C0VMn1tBDCq2madsP7VPf1lJOT4/qhoqJiw4YNlSt8AADUatVdI2zbtm3jxo0jIiL27NnTtGnTl156qUbHAgDAM6obwlOnTu3du7eoqCghIYHVQQCAz6huCAMCArp161ajowAA4HnscwYAWBohBABYGiEEAFgaIQQAWNrNfaEeAOBtiouL09LSAgMDffgL9UFBQa1ataqhByeEAFC7ffrpp5MmTWrQoIHZg9Sg9PT0ioqKGio9IQSA2s3pdP785z+fPn262YPUIFVVDcOooRCyjxAAYGmEEABgaYQQAGBphBAAYGmEEABgaYQQAGBphBAA4FG6rn/wwQe6rl+x/OTJk998843n5yGEAACPmj179t69exVFEUL84he/OHbsmGt5fHz8hAkTTp8+7eF5CCEAwKPeeuut3/72t66fN2/eXFhY6PrZz8/v0Ucffe+99zw8DyEEALjfuXPn6tevX3lz2LBhCxcuFELs2LHD4XC0a9dOCPH000+fPn36/vvvb9Kkybx584QQDzzwwJw5cwzD8OSonGINAHyNZoiN5wztyn1wNcimiD71pHLZGdB0Xb9w4ULlzaKiovLyciHEt99+27lzZ9fCadOmLVy48KuvvurUqZNrSatWrS5evHjixIkmTZp4bniP/SYAgGfklYk39miaB1erbFK0j7RF+t/4nmfOnImJibnWP1UUJSYm5vTp04QQAHDrYgLF8kHe9ee9cmunn59fUVHRde7pcDgCAgI8MtQl7CMEALhfnTp1ysrKSktLhRC6rh8/fty1vFmzZqdOnaq8m91u1zSt8mZJSUlubq4nVwcFIQQA1ITg4OCuXbu++OKLGzZsGD9+fOVa4F133bVjxw6n0+m62aZNmw8++GD+/PknT54UQmzfvr1du3bR0dGeHJUQAgBqxPz5851O57Rp0wYPHvz666+3aNFCCJGYmNitW7fly5e77vPRRx+1adNm165dubm5QojPP/987NixHp7TuzYiAwB8RmJi4owZM65ePnny5Keffvree+8VQsTExLz44ouu5WfPnt20aRPfIwQA+LiOHTvOmTPn6lOshYaGbtiwwd+/GseeuhVrhAAAT0tMTLx6YUhISEhIiOeHYY0QAGBphBAAYGmEEABgaYQQAGBpHCwDALXe999/P3/+fLOnqEE1ej0KQggAtVvHjh3XrVvn2yEcPXq060K+NYEQAkDt1rt37w4dOgQHB0spb3xvXIV9hAAASyOEAABLI4QAAEsjhAAASyOEAABLI4QAAEsjhAAASyOEAABLI4QAAEsjhAAASyOEAABLI4QAAEsjhAAASyOEAABLI4QAAEsjhAAASyOEAABLI4QAAEsjhAAASyOEAABLI4QAAEsjhAAASyOEAABLI4QAAEsjhAAASyOEAABLI4QAAEsjhAAASyOEAABLs7n9EU/2fuHRY62b5DvrBcrYQBEfLGMDRUKwjAsSCcEyQHX7LwQA4Na5P4SJO2Y8e3+z6Kbts0uN7FJxqsjYliOyivUzJSKr2Aixi/ggmRgiE0NEg2CZGCIahsqGITIuyO2DAABwY+4PoVpe1Ni/tEe8FEJe/U9zykRWsZFRZGQUi4wiIy1P/FCk/1BoXCwXjUNlo1DRtI5sGiabhslmYaJhqFSreAwAANzG/SG8vroBom6ATI66sm8lTnGi0Dhe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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(sol, xaxis=\"t\", label=\"u(t)\", ylims=(0, 3))" ] }, { "cell_type": "code", "execution_count": 47, "id": "82d54c86-c2ba-4e67-89a5-5fa6a6e2ad55", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[38;2;86;182;194mODEProblem\u001b[0m with uType \u001b[38;2;86;182;194mVector{Float64}\u001b[0m and tType \u001b[38;2;86;182;194mInt64\u001b[0m. In-place: \u001b[38;2;86;182;194mtrue\u001b[0m\n", "Non-trivial mass matrix: \u001b[38;2;86;182;194mfalse\u001b[0m\n", "timespan: (0, 60)\n", "u0: 1-element Vector{Float64}:\n", " 2.5" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "timespan = (0,60)\n", "specialode2 = ODEProblem(wormrhs!, [2.5], timespan)" ] }, { "cell_type": "code", "execution_count": 48, "id": "9da192f7-0a3a-4008-b870-4e57b2c8426e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "retcode: Success\n", "Interpolation: 3rd order Hermite\n", "t: 16-element Vector{Float64}:\n", " 0.0\n", " 0.2866131316171784\n", " 1.990727861457347\n", " 4.9208145089890385\n", " 8.244419273201144\n", " 12.054422848318614\n", " 16.018100986614837\n", " 20.04250576431782\n", " 24.116308228059502\n", " 29.256388110440625\n", " 33.676089850206935\n", " 38.270874399334716\n", " 43.02881198891913\n", " 48.65370625977381\n", " 55.16319562318488\n", " 60.0\n", "u: 16-element Vector{Vector{Float64}}:\n", " [2.5]\n", " [2.5038172166814414]\n", " [2.5318018896240835]\n", " [2.6103411574010797]\n", " [2.783272202979122]\n", " [3.215359350317428]\n", " [4.273420213451318]\n", " [6.64177725017979]\n", " [10.486311259790932]\n", " [14.701601160374006]\n", " [16.31054397672816]\n", " [16.86390545909046]\n", " [17.02528926301582]\n", " [17.07106531595257]\n", " [17.081061166963014]\n", " [17.082602439595316]" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sol = solve(specialode2)" ] }, { "cell_type": "code", "execution_count": 49, "id": "34be4a3a-c7ab-4bfb-8ed9-b5cfcab3a72d", "metadata": {}, "outputs": [ { "data": { "image/png": "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EAIAbI0gBADYGkEIALA1ghAAYGsEIQDA1ghCAICtEYQAAFsjCAEAtkYQAgBsjSAEANgaQQgAsDWCEABgawQhAMDWCEIAgK0RhAAAWyMIAQC2RhACAGytgYKwtLT09OnTDbOuYOHxeFavXm11FQHn008/tbqEgLNmzZqqqiqrqwgs27dvz8vLs7qKwJKVlbV//36rqwgsBQUFmzdvvuhitQ3CAwcOzJw585Zbblm4cOEFFvv6668PHjxYy3WFmMOHDz/44INWVxFwbrzxRsMwrK4isDz22GMHDhywuorA8pe//GXNmjVWVxFYPvjgg3/+859WVxFYNmzY8NJLL110sVoFYUFBwYABA+Li4kaPHv273/1u3rx5P7akUqo2KwKAs3BUOQsNcq4atomzNut4++2309LSnn32Wf/HP/zhD1OnTq3NHwQAoIHVqke4ZcuWwYMH+6cHDRq0e/fu8vLyuqgKAIAGUqse4YkTJ5o2beqfbtasmYjk5ua2b9/+3CWPHj165sIi0q5du9jY2NqsPdhVVFQcP348PT3d6kICi2maw4cP1zTN6kICyNGjR++4445GjRpZXUgA2bt37969e99++22rCwkgR48eNU0zIyPD6kICyKlTp2qyWK2CMDIy0u12+6f9E1FRUedd8plnnomPj09NTa2e07Fjx+jo6NqsPdgppbKzsy+77DKrCwksU6ZMadu2rdVVBJbs7Ozk5GRd52Gn7504caJx48aRkZFWFxJAiouLDcOIj4+3upAA4na7fyyVzlSrIGzduvWxY8f809nZ2eHh4QkJCeddskuXLm+88UZt1gUAQH2o1TnmxIkTFy1aVFZWJiLz588fP36801mrZAUAoIHVKrdGjhzZu3fvnj17pqSkHDhw4PPPP6+rsgAAaBha7R892bNnT2FhYZ8+fRivBwAEnToIQgAAgpfj6aefru91eDye5cuXZ2RkJCQkxMTE1PfqApZpmvv27du5c2fr1q0dDkf1/BMnTixevPjo0aOXXXaZ3S6yFhUVrVq1avPmzUqpFi1aVM/3+XwrVqzYuHFjfHx848aNLayw4eXl5a1bt27Dhg35+fkpKSlnbipffPHF6tWrL3BXWsg7cuTI9u3b27RpU30P7eHDh5csWZKfn9+2bVtbPXVz8uTJTZs2Hf5O48aNq2+PtG2b+J08eXLp0qVfffVVRERE9TN7p0+fXrx48YEDB1JSUsLDw8/+N6qeVVVV9e/ff+DAgbfddlt8fPy2bdvqe42B6fDhw9HR0f6nLfPz86vnZ2ZmxsfHT5s2bfDgwX379q2oqLCwyAZ25MiRmJiYESNG3HbbbYmJiXfffbd/vmEYw4YN69ev369//ev4+Pg1a9ZYWmZDGz9+/OjRo6dPn56Wlta5c+eCggL//DvvvLNjx44zZsxISEiYM2eOtUVaory8/PLLLxeRoqIi/5zly5fHx8fffvvtvXv3Hjt2rLXlNbAlS5Y0adJk2HcyMjL8889qE9M0ra2zgX3yySfx8fHjxo279dZb09PT/TOzsrISExOnTJkycuTIyy+/vLCw8Kx/Ve9BuGDBgh49eni9XqXUc889N2bMmPpeY2CqrKw8fvy4/+nOM4NwwoQJjz/+uFLK5/P16dPn7bfftqzEBldaWpqbm+ufPnTokKZpR44cUUotW7asXbt2lZWVSqlXX331mmuusbBICxmG0b179zfffFMpdfDgwUaNGuXl5SmlVq5cmZSU5N+nbOWee+55+OGHzwzC3r17//3vf1dKlZWVtWrVat26dZYW2KCWLFly3l3jrDZZu3Ztg5dmmeLi4qZNmy5duvSs+XfeeeeMGTP80yNGjJg9e/ZZC9T7I7off/zxuHHj/CN+kyZN+uSTT+z52wIRERGtWrU6a6ZSatmyZZMmTRIRh8Nxww03fPzxx1ZUZ43o6Ojq4dCEhASHw+HxeETk448/HjVqVEREhIhMmjRp/fr1RUVFVhZqEZ/P53a7/aMIy5Ytu+aaa/wjounp6RUVFdu3b7e6wAa1efPmLVu23HXXXdVzcnJyduzY4d99GjVq9LOf/cxWu4+IlJeXr1ixYuvWrf4dR75rk4kTJ4ot22TlypUtW7YcNGjQ6tWrz/xFqqVLl/q3ExGZOHHiuW1S70GYk5NTHQCtWrXy+Xz8ili1goICt9t9Zvvk5ORYW5JVXnjhhauvvrpDhw7yw20mMTHR6XTarVnefvvt4cOHt2/fftKkSePHjxeRnJyc1q1b+7/Vdb1ly5a2ahO3233XXXe9+eabZ14xzcnJiY2NrX5Tow13H4/H89e//vWWW27p3r374cOHReTbb7+NiYmpvqxutzbJysoSkQEDBvztb38bNmzYzJkzRcQ0zby8vAsfZuv91gzDMKova/s3Yp/PV98rDRb+znH11WyHw2HPxpk3b978+fO//PJLf1Ocuc1omqbrut2aZdCgQUlJSZmZma+88srEiRN79eplGMaZdz04nU5btcnTTz89duzYrl27nnkIO6tN7Lb7jBo1auzYsSJimua0adPuv//+RYsW2bxNqqqq9u/fv2/fvnbt2uXl5bVv337atGk9e/Y0TfPCh9l67xG2bNkyPz/fP52Xl6fr+pk3B9pc8+bNnU7nyZMn/R/z8vKSkpKsLanhvffeew8//PDKlSurX7t65jZTWFjo8Xjs1iypqakjRox4+OGHJ02a9Nprr8kP20RstqmYpvm///u/2dnZM2bMeOihh0Tknnvu2bNnT8uWLUtKSqqqqvyL5eXltWzZ0tJKG1R151jX9V/84heZmZki0qJFi9LSUtu2ScuWLZOTk9u1ayciiYmJnTt33r17t9PpbNas2YUPs/UehEOGDFm5cqV/euXKlVdfffV5bl21K13XBw4cWN0+K1asGDJkiKUVNbRFixbde++9K1as6Ny5c/XMIUOGfPbZZ0opEVm5cmXXrl2bN29uXY1WOnXqlH/ob8iQIV9++WVlZaWIZGZmejyeXr16WV1dA9E07Z133hk1atSwYcMGDhwoIkOGDGnatGmbNm3atm372WefiYhhGKtWrRo6dKjVxVpjx44dycnJImLzNhk6dOjJkydLS0tFxOPxHDt2zN8sQ4cOPTOGzj3M1vsD9SUlJd27d09PT+/YsePs2bMXLFgwcuTIel1jwLrrrrsqKirmzZs3derUyMjI119/XUQ+++yzyZMnP/jgg0ePHl2+fPmuXbvi4uKsrrSBZGVlde7c+corr+zSpYt/zsyZM7t27ep2u3v27NmzZ8+0tLSXXnrplVdemTJlirWlNhifz3fNNddcd911MTExGRkZa9eu3bx5s/9nW0aOHOn1ekePHv3666/fdNNNTz75pNXFWsB/rbSoqMh/Gezvf//7k08+ed99923YsOHw4cNbt261z5O4s2bNEpHk5OSvv/564cKFS5Ysufbaa8XebSIiU6dOPX78+KRJk5YvX15SUrJ27Vpd17dv337ttdf+7ne/KykpmTdvXvV5Q7WGeLNMfn7+3LlzS0pKxowZ069fv/peXcB66623TNP0T2uaNn36dP/0tm3blixZEhMTM23atMTEROsKbGinTp1atGjRmXNGjhzp30ALCwvnzJlTUFAwYsQIfyfAJpRSn3/+eUZGRkVFRUpKys9//vPqEyO32z137twjR470799/3Lhx1tZplfLy8nfeeee2226rHlhatWrV6tWrExMTf/nLX9rqfR27du36/PPP8/PzW7RoccMNN6SkpFR/Zds2ERHDMP71r3/t3bu3Y8eON910U/V2snfv3oULF4aHh99yyy1t2rQ561/xijUAgK3xU58AAFsjCAEAtkYQAgBsjSAEANgaQQgAsDWCEABgawQhAMDWCEIgcJmm+eabb+7evdvqQoBQRhACgcvn882YMcP/6kgA9YQgBADYGkEIBKi8vDz/b5Y9/vjj8fHx8fHxf/7zn60uCghBNnorORBcmjRp8u67744cOXLatGkTJ04UkQ4dOlhdFBCCCEIgQLlcLv8P63To0GHYsGFWlwOELIZGAQC2RhACAGyNIAQA2BpBCASusLAwl8tVVVVldSFAKOMX6oGA1rt3bxGZPXt2XFxcq1at/A9UAKhD9AiBgPbaa685nc6xY8f26dNn3rx5VpcDhCB6hAAAW6NHCACwNYIQAGBrBCEAwNYIQgCArRGEAABbIwgBALZGEAIAbO3/A0jEJiZhKKVAAAAAAElFTkSuQmCC", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(sol, xaxis=\"t\", label=\"u(t)\", ylims=(0, 20))" ] }, { "cell_type": "code", "execution_count": 50, "id": "94d6a329", "metadata": {}, "outputs": [], "source": [ "# savefig(\"figwormspecial.png\")" ] }, { "cell_type": "markdown", "id": "df97cdf2", "metadata": {}, "source": [ "Even though we started very close to one of the steady states, we ended up at another steady states." ] }, { "cell_type": "markdown", "id": "fd922f75", "metadata": {}, "source": [ "### 2.5 catatrophic jumps and hysteresis" ] }, { "cell_type": "markdown", "id": "18cea995", "metadata": {}, "source": [ "Consider again the plot with the growth and the predator term." ] }, { "cell_type": "code", "execution_count": 51, "id": "57573bc5", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(steady)" ] }, { "cell_type": "markdown", "id": "61083eee", "metadata": {}, "source": [ "We observe that as $r$ increases from 0.4 to 0.5 while $q=20$ remains fixed, that the two steady states become close and closer to each other and then disappear. As $r$ increases, we get a catastropic outbreak of the worm population." ] }, { "cell_type": "markdown", "id": "a17b22a1", "metadata": {}, "source": [ "Image now that we would start at $r=0.6$, at a large steady state. \n", "The return to a smaller value of the population will only be possible when the large steady state, jointly with the unstable middle steady state disappears as the predator line sinks below the growth line." ] }, { "cell_type": "markdown", "id": "8749ea10", "metadata": {}, "source": [ "The catastrophic jumps happen at different values of the parameter $r$ and are depending on the direction of the parameter change. This is called *hysteresis*." ] } ], "metadata": { "kernelspec": { "display_name": "Julia 1.12", "language": "julia", "name": "julia-1.12" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.12.4" } }, "nbformat": 4, "nbformat_minor": 5 }