Změna funkce v řešiči

22. Změna funkce v řešiči#

Naprostá většina modelování vývoje ekologických systémů spočívá v řešení příslušných modelů numericky. V úloze je přednastaven model pro řešení rovnice logistického růstu

\[\frac{\mathrm dN}{\mathrm dt}=rN\left(1-\frac NK\right).\]
Tato rovnice popisuje vývoj populace v prostředí s omezenou nosnou kapacitou, kdy se projevuje vnitrodruhová konkurence.

Velice blízký této rovnici po matematické stránce je Levinsův model metapopulací,. popisujících obsazenost fragmentů v životním prostředí. Výchozí tvar pro tento model je

\[\frac{\mathrm dn}{\mathrm dt}=a n\left(1-n\right) - b n.\]

Modifikujte kód tak, aby místo rovnice logistického růstu řešil model metapopulací. Nemusíte nic vědět o ekologickém pozadí modelů, stačí, když více, jaké rovnice chceme řešit. Nemusíte ani rozumět celému kódu slovo od slova. Procházejte kód a snažte se identifikovat místo, kde je použita stará rovnice. Poté opravte jenom definici funkce rovnice tak, aby odpovídala novému modelu. Použijte a=2 a b=0.75 jako hodnoty parametrů.

Výstup by se měl změnit následovně

Popis

Obrázek

Původní obrázek

Nový obrázek

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp

pocatecni_podminka = [0.1]
meze = [0,10]
t = np.linspace(*meze,100)

def rovnice(t, x, r=1, K=1):
    return r*x*(1-x/K)

reseni = solve_ivp(
                   rovnice,
                   meze,
                   pocatecni_podminka,
                   t_eval=t
                   )

plt.plot(t,reseni.y.T)
plt.grid()