El modelo de crecimiento poblacional consta de dos modelos simples:
- El Modelo de Crecimiento Exponencial:
$${\large \begin{align*} \frac{dP}{dt} = rP \end{align*} }$$
- El Modelo de Crecimiento Logístico:
$${\large \begin{align*} \frac{dP}{dt} = rP\left(1 - \frac{P}{k}\right) \end{align*} }$$
Donde:
P es la población
t es el tiempo
r es la constante de proporcionalidad
k es la capacidad de carga del sistema
Estas ecuaciones diferenciales si tienen una solución analítica correspondiente. No obstante en este articulo se resolveran las ecuaciones diferenciales por el método del análisis numérico.
Antes de crear el código fuente es necesario que se importan algunas librerías correspondientes para compilar este código.
import numpy as np
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
Ahora iniciaremos el código respectivamente
Código Fuente del Modelo de Crecimiento Poblacional
def mcp(t0, tn, n, P, r, k):
""" t0 = es el tiempo inicial
tn 0 es el tiempo final
n es el número de pasos
[P] es la condicion inicial
[r,k] son las constantes del modelo de crecimiento poblacional"""
f1 = lambda t,x,y: r*x
f2 = lambda t,x,y: r*y - (r/k)*(y**2)
t = np.linspace(t0, tn, n+1)
x = np.zeros(n+1)
y = np.zeros(n+1)
x[0] = P
y[0] = P
h = (tn-t0)/n
for i in range(1,n+1):
x[i] = x[i-1] + h*f1(t[i-1], x[i-1])
y[i] = y[i-1] + h*f2(t[i-1], y[i-1])
fig, ((ax1, ax2)) = plt.subplots(1,2)
fig.set_size_inches(16,8)
ax1.plot(t, x, lw = 3, color = 'r', label = "Exponencial")
ax1.set_xlabel('Tiempo', size = 20)
ax1.set_xlabel('Crecimiento Exponencial', size = 20)
ax1.set_title("Modelo de Crecimiento Exponencial", size=20)
ax1.legend(fontsize = 20)
ax1.grid()
ax2.plot(c/d, b/a, lw = 1, color = 'k', label = "Atractor")
ax2.axhline(y=k/2, color = 'k', lw = 3, ls = '--', label = "Inflexión")
ax2.set_xlabel('Tiempo' , size = 20)
ax2.set_ylabel('Crecimiento Logístico', size = 20)
ax2.set_title("Modelo de Crecimiento Logístico", size=20)
ax2.legend(fontsize = 20)
ax2.grid()
plt.suptitle('Modelo de Crecimiento Poblacional Exponencial - Logístico', fontsize=25, size=20)
plt.tight_layout()
plt.show()
return mcp
Aplicación del código fuente
mcp(0,10,1000,10,2,50) |
Comentarios
Publicar un comentario