Logistisk vekst

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:

In [ ]:
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:

In [2]:
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()

Oppgaver

  1. Varier B, N0 og r, og sjå korleis kurven forandar seg.
  2. Korleis blir kurven hvis N0 er høgare enn B?
  3. Korleis blir den hvis N0 = B?
In [ ]: