Vi skal sjå meir på eksempel på populasjonsdynamikk. Dette eksempelet er veldig likt eksempelet med eksponentiell vekst, bare at vi set inn faktoren $\frac{B-N}{B}$ i uttrykket for den deriverte. Dermed ser det slik ut:
$N' = r \cdot\frac{B-N}{B} \cdot N$
Vi lagar først funksjonen for den deriverte, f(n) og for fasit:
def f(n):
return r*(B-n)/B*n
def logistisk(t):
return B*N0*math.exp(r*t)/(B+N0*(math.exp(r*t)-1))
Heile koden blir då slik:
import numpy as np
import math
import matplotlib.pyplot as plt
def f(n):
return r*(B-n)/B*n
def logistisk(t):
return B*N0*math.exp(r*t)/(B+N0*(math.exp(r*t)-1))
r = 0.25 # Reproduksjonsrate per tid
B = 100 # Bæreevne
T = 40 # antal år / mnd etc som vi modellerer
N0 = 2 # Startpopulasjonen
N = 100 # Antal punkt
dt = T/(N-1) # deler på antal intervall
n = np.zeros(N) # numerisk løysing
p = np.zeros(N) # eksakt løysing
t = np.zeros(N)
n[0] = N0
p[0] = N0
for i in range(N-1):
t[i+1] = t[i] + dt
m = f(n[i])
n[i+1] = n[i] + m*dt
p[i+1] = logistisk(t[i+1])
plt.plot(t,n,label = "Numerisk")
plt.plot(t,p,label = "Analytisk")
plt.legend(loc='best')
plt.xlabel('Tid')
plt.ylabel('Populasjon')
plt.title('Logistisk vekst')
plt.grid(1)
plt.show()