Sistema presa depredador (Lotka-Volterra)#
Las ecuaciones de Lotka-Volterra, también conocidas como ecuaciones predador-presa o presa-predador, son un par de ecuaciones diferenciales de primer orden no lineales que se usan para describir dinámicas de sistemas biológicos en el que dos especies interactúan, una como presa y otra como depredador. Las ecuaciones fueron propuestas de forma independiente por Alfred J. Lotka en 1925 y Vito Volterra en 1926. Tales ecuaciones se definen como:
donde:
\(y\) es el número de algún predador (por ejemplo, un lobo); \(x\) es el número de sus presas (por ejemplo, conejos); \(\dfrac{dy}{dt}\) y \(\dfrac{dx}{dt}\) representa el crecimiento de las dos poblaciones en el tiempo; \(t\) representa el tiempo; y \(\alpha\) , \(\beta\), \(\gamma\) y \(\delta\) son parámetros (positivos) que representan las interacciones de las dos especies.
Explicación de las ecuaciones#
Usando las series de Taylor se obtiene una solución lineal a las ecuaciones:
Con estos coeficientes se puede estudiar los modelos de competición, enfermedad y mutualismo (biología) en un ecosistema.
Presa#
Se asume que las presas tienen suministro de comida ilimitado por tiempo definido, y se reproducen exponencialmente a menos que exista algún predador. Este crecimiento exponencial está representado en la ecuación por el término \(\alpha x\). El término de la ecuación \(\beta xy\) viene a representar el encuentro de las dos especies y su interacción. Si \(x\) o \(y\) son cero no existe interacción.
Se puede interpretar la ecuación como el cambio del número de presas viene dado por su propio crecimiento menos la tasa de encuentros con predadores.
Depredador#
En esta ecuación, \(\delta xy\) representa el crecimiento de los depredadores (fíjese en la similitud con la ecuación para las presas, pero en este caso para el crecimiento de los depredadores es necesario usar la razón a la que se consumen las presas, \(x\). \(\gamma y\) representa la muerte natural de los depredadores de forma exponencial; a más depredadores es necesario que el número de víctimas o presa aumente para mantener la población.
Se puede interpretar la ecuación como el crecimiento de los depredadores por la caza de presas menos la muerte natural de estos.
Simulación numérica#
Show code cell source
import numpy as np
import scipy.integrate as integ
import matplotlib.pyplot as plt
# %matplotlib qt5 # descomentar para figuras en ventanas emergentes interactivas
Primero definimos las constantes del sistema
alpha=0.1 #0.1 tasa de crecimiento de conejos por mes por conejo
beta=0.005 # éxito en la caza del depredador por producto presa depredador
gamma=0.04 # tasa de crecimiento de zorros por zorro
delta=0.00004 # éxito en la caza y cuánto alimenta cazar una presa al depredador
Ahora definimos
def LotkaVolterra(t, v):
x,y = v
dxdt = alpha*x-beta*x*y
dydt = delta*x*y - gamma*y
return dxdt, dydt
Finalmente le damos valores a las condiciones iniciales para poder simular
x0 = 2000 #2000 conejos inicialmente
y0 = 10 #zorros inicialmente
v0 = x0,y0
tspan = (0, 500)
t = np.linspace(*tspan, 2000)
r = integ.solve_ivp(LotkaVolterra, tspan, v0, t_eval=t)
x,y=r.y
r
Show code cell output
message: The solver successfully reached the end of the integration interval.
success: True
status: 0
t: [ 0.000e+00 2.501e-01 ... 4.997e+02 5.000e+02]
y: [[ 2.000e+03 2.025e+03 ... 2.160e+02 2.172e+02]
[ 1.000e+01 1.010e+01 ... 1.583e+01 1.570e+01]]
sol: None
t_events: None
y_events: None
nfev: 326
njev: 0
nlu: 0
Podemos ver los resultados de la simulación en la siguiente figura:
Show code cell source
fig, ax1 = plt.subplots(figsize=(12,4))
ax2 = ax1.twinx()
ax1.plot(t, x, 'g-')
ax2.plot(t, y, 'b-')
ax1.set_xlabel('Tiempo [meses]')
ax1.set_ylabel('Conejos', color='g')
ax1.set_ylim([0,3000])
for label in ax1.get_yticklabels():
label.set_color("green")
ax1.spines["left"].set_color("green")
ax2.set_ylabel('Zorros', color='b')
ax2.set_xlim([0,500])
ax2.set_ylim([0,50])
for label in ax2.get_yticklabels():
label.set_color("blue")
ax1.spines["right"].set_color("blue")
ax1.grid()
ax2.grid()
plt.show()