Hvis du har lest Krasjkurs i Eulermetoden , og eksempel frå matematikken, så er du no klar for å sjå på eksempel frå populasjonsdynamikk.
$N' = rN$
med analytisk løysing $N(t) = P_0 \cdot e^{rt}$, der $N_0 = N(0)$
I dette eksempelet set vi r = 0.23. Sidan uttrykket for N' er så enkelt, så lagar vi ingen funksjon for dette, og heller ikkje for fasit. Derfor blir Eulers metode ganske enkel:
n[i+1] = n[i] + r*n[i]*dt
Tilsvarande blir fasit lik:
p[i+1] = N0*math.exp(r*t[i+1])
Då bir programkoden slik:
import numpy as np
import math
import matplotlib.pyplot as plt
r = 0.25 # Reproduksjonsrate per tid
T = 10 # antal år / mnd etc som vi modellerer
N0 = 2 # Startpopulasjonen
N = 20 # Antal punkt
dt = T/(N) # deler på antal intervall
n = np.zeros(N+1) # numerisk løysing
p = np.zeros(N+1) # eksakt løysing
t = np.zeros(N+1)
n[0] = N0
p[0] = N0
for i in range(N):
t[i+1] = t[i] + dt
n[i+1] = n[i] + r*n[i]*dt
p[i+1] = N0*math.exp(r*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('Eksponentiell vekst')
plt.grid(1)
plt.show()