Environmental Mathematics

Example: Modeling Population Growth with Logistic Growth Equation

In Environmental Mathematics, one of the fundamental models used to describe the growth of populations, such as animal populations or human populations, is the Logistic Growth Model.

This model accounts for the carrying capacity of the environment, which limits indefinite exponential growth.

Logistic Growth Equation

The Logistic Growth Model is represented by the following differential equation:

$$
\frac{dP}{dt} = rP \left(1 - \frac{P}{K}\right)
$$

  • $( P(t) )$ = Population size at time $( t )$
  • $( r )$ = Intrinsic growth rate (how quickly the population grows)
  • $( K )$ = Carrying capacity (maximum population size that the environment can support)
  • $( t )$ = Time
  • $( P(0) )$ = Initial population size at $( t = 0 )$

The solution to this equation models the population growth over time and shows an S-shaped curve, where the population grows exponentially when small, then slows down as it approaches the carrying capacity $( K )$.

Problem

  1. We will use the Logistic Growth Model to model the population growth of a species over time.
  2. We will visualize how the population changes as a function of time.
  3. We will explore the effect of different intrinsic growth rates and carrying capacities on the population size.

Steps

  1. Define the logistic growth equation and its solution.
  2. Simulate the population growth using $Python$.
  3. Plot the population size over time for different parameters.

Python Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import numpy as np
import matplotlib.pyplot as plt

# Logistic growth model function
def logistic_growth(t, P0, r, K):
"""
Computes the population at time t based on the logistic growth model.

Parameters:
t: time (array or scalar)
P0: initial population size
r: intrinsic growth rate
K: carrying capacity

Returns:
Population size at time t
"""
return K / (1 + (K - P0) / P0 * np.exp(-r * t))

# Parameters
P0 = 10 # Initial population size
r = 0.5 # Intrinsic growth rate
K = 1000 # Carrying capacity
t = np.linspace(0, 20, 200) # Time from 0 to 20 with 200 points

# Compute population over time
population = logistic_growth(t, P0, r, K)

# Plot the logistic growth curve
plt.figure(figsize=(8, 6))
plt.plot(t, population, label=f'Logistic Growth\nP0={P0}, r={r}, K={K}', color='b')

# Labels and title
plt.title('Logistic Growth Model: Population vs Time')
plt.xlabel('Time (t)')
plt.ylabel('Population (P)')
plt.grid(True)
plt.legend()
plt.show()

# Effect of different intrinsic growth rates (r) on population growth
r_values = [0.1, 0.3, 0.5, 0.7]
plt.figure(figsize=(8, 6))

for r in r_values:
population_r = logistic_growth(t, P0, r, K)
plt.plot(t, population_r, label=f'r = {r}')

plt.title('Effect of Intrinsic Growth Rate on Logistic Growth')
plt.xlabel('Time (t)')
plt.ylabel('Population (P)')
plt.legend()
plt.grid(True)
plt.show()

# Effect of different carrying capacities (K) on population growth
K_values = [500, 1000, 1500, 2000]
plt.figure(figsize=(8, 6))

for K_val in K_values:
population_K = logistic_growth(t, P0, r, K_val)
plt.plot(t, population_K, label=f'K = {K_val}')

plt.title('Effect of Carrying Capacity on Logistic Growth')
plt.xlabel('Time (t)')
plt.ylabel('Population (P)')
plt.legend()
plt.grid(True)
plt.show()

Explanation of the Code

  1. Logistic Growth Function:

    • The function logistic_growth(t, P0, r, K) computes the population at time $( t )$ using the logistic growth equation.
      It takes:
      • t: Time (which can be an array for continuous simulation)
      • P0: The initial population size at time $( t = 0 )$
      • r: The intrinsic growth rate of the population
      • K: The carrying capacity (maximum population the environment can support)
    • The function calculates the population at time $( t )$ using the formula for logistic growth.
  2. Parameters:

    • $( P_0 = 10 )$: Initial population size.
    • $( r = 0.5 )$: Intrinsic growth rate (the speed of population growth).
    • $( K = 1000 )$: Carrying capacity (the environment can support up to $1000$ individuals).
    • t = np.linspace(0, 20, 200): We simulate the population over $20$ time units, with $200$ points to generate a smooth curve.
  3. Plotting the Results:

    • The first plot visualizes the population growth over time using the logistic model.
    • The second plot shows how different intrinsic growth rates (r = 0.1, 0.3, 0.5, 0.7) affect the population growth.
      A higher growth rate results in faster population growth.
    • The third plot shows how varying the carrying capacity (K = 500, 1000, 1500, 2000) influences the population.
      A higher carrying capacity allows the population to grow to a higher final size.

Expected Outcome

  • Logistic Growth Curve:
    The first plot will show the characteristic S-shaped curve.
    The population starts growing exponentially, but as it approaches the carrying capacity $( K )$, it slows down and levels off.

  • Effect of Intrinsic Growth Rate:
    In the second plot, as the intrinsic growth rate $( r )$ increases, the population grows faster at the beginning, but the population ultimately approaches the same carrying capacity in each case.
    The time it takes to reach near the carrying capacity is shorter for higher growth rates.

  • Effect of Carrying Capacity:
    In the third plot, increasing the carrying capacity $( K )$ leads to a higher maximum population.
    However, the growth curve still follows the same logistic pattern, only the “$ceiling$” is higher.

Result Analysis

  • The S-shaped curve is a key feature of the logistic growth model, showing how the population grows rapidly at first, but as resources become limited, the growth slows and eventually stabilizes near the carrying capacity.

  • The intrinsic growth rate $( r )$ affects the speed of growth.
    A higher growth rate leads to a quicker approach to the carrying capacity.

  • The carrying capacity $( K )$ defines the maximum population that the environment can support.
    If $( K )$ is increased, the population can grow to a higher value before stabilizing.

Conclusion

This example demonstrates how Environmental Mathematics uses mathematical models like logistic growth to understand population dynamics in a given environment.

By adjusting parameters such as the intrinsic growth rate and carrying capacity, we can predict how populations will evolve over time and make informed decisions for environmental management, conservation, and resource allocation.