14. Logistická rovnice#
Při modelování vývoje ekologických systémů se často používá rovnice
\[\frac{\mathrm dN}{\mathrm dt}=rN\left(1-\frac NK\right).\]
Následující kód simuluje vývoj populace, řídící se touto rovnicí. Používá standardní postup pro řešení úlohy tohoto typu, kdy je zavolána funkce z knihovny věnované této problematice a této funkci je předána rovnice, výchozí stav (počáteční podmínka), interval na kterém hledáme řešení, body v nichž nás zajímá řešení a případně další parametry.
Funkce může dokonce simulovat vývoj z několika stavů současně. Stačí zadat seznam počátečních hodnot. Přednastavená simulace vychází ze stavu 0.1, tj. deset procent nosné kapacity životního prostředí.
Modifikujte kód tak, aby modeloval vývoj ze čtyř počátečních stavů [0.1, 0.25, 0.5 , 1.5]. Nemusíte rozumět ani logistickému růstu ani podrobně každému řádku rovnice. Snažte se jenom najít místo, kde je zadána počáteční podmínka 0.1. Jedná se o jednoprvkový seznam. Přepište jej tak, aby byl čtyřprvkový a obsahoval uvedené hodnoty. Nic jiného měnit nemusíte.
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
)
fig, ax = plt.subplots(1)
ax.plot(reseni.y.T,"gray")
ax.set(
title="Řešení logistické rovnice",
xlabel="čas",
ylabel="velikost populace"
);