Inicio › Temas › Ecuaciones diferenciales
🌀 Ecuaciones diferenciales nivel avanzado
Depredador y presa (Lotka-Volterra)
Dos especies acopladas que oscilan describiendo ciclos cerrados en el plano de fases.
🕹️ Ábrelo en el curso interactivo (simulador y código ejecutable)
La idea
El modelo de Lotka-Volterra acopla dos poblaciones: las presas x, que crecerían exponencialmente a tasa α si no hubiera depredadores, y los depredadores y, que se extinguirían a tasa γ si no hubiera presas. El acoplamiento es el término de encuentro x·y, proporcional al número de parejas posibles: resta β x y a las presas y suma δ x y a los depredadores. El sistema resultante, x′ = α x − β x y e y′ = δ x y − γ y, es no lineal y no tiene solución en funciones elementales, pero su comportamiento se entiende por completo con análisis cualitativo.
Hay dos equilibrios: el origen (0, 0), inestable en la dirección de las presas, y el punto interior x* = γ/δ, y* = α/β. Linealizando alrededor de ese punto interior la matriz jacobiana tiene valores propios imaginarios puros ±i√(αγ), lo que lo convierte en un centro: las trayectorias cercanas giran a su alrededor con periodo aproximado 2π/√(αγ) sin acercarse ni alejarse. Esa neutralidad hace el modelo estructuralmente frágil: cualquier término adicional, como competencia entre presas, convierte el centro en espiral estable o inestable.
La clave para ver que las órbitas son cerradas y no espirales es que existe una cantidad conservada: V = δ x − γ ln x + β y − α ln y permanece constante a lo largo de cada solución, como puede comprobarse derivando. Cada valor de V dibuja una curva cerrada en el plano de fases, recorrida periódicamente. Otra consecuencia elegante es que los promedios temporales de las poblaciones a lo largo de un ciclo son exactamente los valores de equilibrio, independientemente de la amplitud de la oscilación.
Fórmulas clave
- Presasdx/dt = α x − β x y
- Depredadoresdy/dt = δ x y − γ y
- Equilibrio interiorx* = γ/δ, y* = α/β
- Cantidad conservadaV = δ x − γ ln x + β y − α ln y = constante
- Periodo de oscilaciones pequeñasT ≈ 2π / √(α γ)
- Promedios temporalesmedia de x = γ/δ, media de y = α/β
Dónde se aplica
Los registros de pieles de lince y liebre de la Compañía de la Bahía de Hudson mostraron durante casi un siglo ciclos de unos diez años que este modelo reprodujo por primera vez. En control biológico de plagas las mismas ecuaciones advierten de la paradoja del insecticida: matar indiscriminadamente presas y depredadores eleva el promedio de la plaga, porque el equilibrio de las presas depende sólo de los parámetros del depredador. Variantes del modelo describen la competencia entre empresas por una cuota de mercado, la dinámica entre células inmunitarias y tumorales, y en química las oscilaciones de reacciones autocatalíticas como la de Belousov-Zhabotinsky.
Con programación (Python)
import math
alfa, beta, gamma, delta = 1.1, 0.4, 0.4, 0.1
def f(t, s):
x, y = s
return [alfa * x - beta * x * y, delta * x * y - gamma * y]
def rk4(f, t, s, h):
a = f(t, s)
b = f(t + h / 2, [s[i] + h / 2 * a[i] for i in range(2)])
c = f(t + h / 2, [s[i] + h / 2 * b[i] for i in range(2)])
d = f(t + h, [s[i] + h * c[i] for i in range(2)])
return [s[i] + h * (a[i] + 2 * b[i] + 2 * c[i] + d[i]) / 6 for i in range(2)]
def V(s):
return delta * s[0] - gamma * math.log(s[0]) + beta * s[1] - alfa * math.log(s[1])
print("Equilibrio: x* =", gamma / delta, " y* =", alfa / beta)
print("Periodo aproximado:", round(2 * math.pi / math.sqrt(alfa * gamma), 4))
s, t, h = [10.0, 5.0], 0.0, 0.01
print("V inicial:", round(V(s), 8))
for n in range(1, 2001):
s = rk4(f, t, s, h)
t += h
if n % 500 == 0:
print("t =", round(t, 2), " presas =", round(s[0], 4),
" depredadores =", round(s[1], 4), " V =", round(V(s), 8))La versión en JavaScript, editable y ejecutable en el navegador, está en la página interactiva del tema.
Temas relacionados
Modelo epidémico SIR · Crecimiento logístico · Campos de direcciones, Euler y RK4 · Valores y vectores propios