Documentaciónlotka_volterra(expr_dx, expr_dy, t0, x0, y0, h, n)
Nombre
lotka_volterra - Modela la dinamica presa-depredador con integracion numerica.
Sinopsis
tray = numericos.lotka_volterra(expr_dx, expr_dy, t0, x0, y0, h, n)
Descripcion
Resuelve un sistema de dos ecuaciones diferenciales acopladas para estudiar la evolucion temporal de una poblacion de presas y otra de depredadores.
Usa el metodo de Runge-Kutta de orden 4 y retorna una trayectoria lista para inspeccion numerica o para graficarse luego con las funciones de graficos.api.
Validaciones y casos borde
- Valida que
hno sea cero. - Valida que
nsea entero y no negativo. - Si
n == 0, retorna una tabla con el unico estado inicial(t0, x0, y0). - Admite
hnegativo para integrar hacia tiempos decrecientes. - Si una validacion falla, emite
ERROR().
Comportamiento
- Evalua
dx/dtydy/dtconRESOLVER(). - Calcula cuatro pendientes intermedias por paso para cada variable.
- Avanza el sistema en el tiempo desde
t0con pasohduranteniteraciones. - Retorna una
TABLAcon tres vectores:t,xey.
Funciones API relacionadas
graficos.graficar_lotka_volterra()graficos.graficar_fase_lotka_volterra()graficos.graficar_fases_lotka_volterra()
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| expr_dx | STRING | Expresion que define dx/dt. |
| expr_dy | STRING | Expresion que define dy/dt. |
| t0 | NUMERICO | Tiempo inicial. |
| x0 | NUMERICO | Posicion inicial en x; en formulas se representa como . |
| y0 | NUMERICO | Posicion inicial en y; en formulas se representa como . |
| h | NUMERICO | Paso numerico usado en derivacion, integracion o EDO. |
| n | NUMERICO | Cantidad de pasos; debe ser un entero no negativo. |
Valor de retorno
TABLA - Tabla con los resultados estructurados.
Ejemplo
ejemplo.blox
INCLUIR "numericos.api"
INCLUIR "matrices.api"
INCLUIR "tablas.api"
INCLUIR "graficos.api"
FUNCION PRINCIPAL
INICIO "Lotka-Volterra (RK4)"
STRING f, g
NUMERICO t0, x0, y0, h, n
VECTOR T, X, Y
// Definimos la EDO: dy/dt = f(x(t), y(t), t) dy/dt = g(x(t), y(t), t)
// En este caso dy_f/dt = r1x (1 - ((x + a12y)/K1))
// En este caso dy_g/dt = r2y (1 - ((y + a21x)/K2))
//
// Tasas de Crecimiento
// r1 = 0.9
// r2 = 0.9
//
// Capacidades de Carga
// K1 = 150
// k2 = 150
//
// Afectaciones
// a12 = -0.9 E2 afecta a E1
// a21 = -0.2 E1 afecta a E2
f = "0.9*x*(1-((x-0.9*y)/150))" // x(t) es la poblacion 1
g = "0.9*y*(1-((y-0.2*x)/150))" // y(t) es la poblacion 2
n = 100
h = 0.1
TABLA trayect
t0 = 0 x0 = 20 y0 = 60
trayect = numericos.lotka_volterra(f, g, t0, x0, y0, h, n)
graficos.graficar_lotka_volterra(trayect, "Lotka-Volterra - competencia", "PROG900 - API - NUMERICOS - 5.2 Lotka-Volterra - competencia.png")
FINAL
Restringido: este ejemplo no puede ejecutarse en el Playground web porque la API requerida no está disponible en el sandbox.