Eksponentiell vekst

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:

In [ ]:
n[i+1] = n[i] + r*n[i]*dt

Tilsvarande blir fasit lik:

In [ ]:
p[i+1] = N0*math.exp(r*t[i+1])

Då bir programkoden slik:

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

Oppgaver

  1. Varier antal punkt N, og sjå at den numeriske løysinga blir nær den analytiske.
  2. Varier r og N0 og sjå kva som skjer
  3. Radioaktivt decay følgjer ein eksponentiell kurve med negativ r. Prøv dette og sjå om du få liknande kurve som i artikkelen om Halveringstid.