Modelos Continuos · Tema 07

Modelos mediante ecuaciones diferenciales

El lenguaje del cambio continuo: escribir la tasa como ecuación y leer el futuro sin simular todo.

01 · Punto de partida

De la frase a la fórmula

«El tanque sube si entra más de lo que sale» es una frase. dN/dt = entrada − k·N es un modelo: dice lo mismo pero con precisión suficiente para calcular. La ecuación diferencial convierte la intuición de la tasa en un objeto matemático que se puede analizar, programar e integrar.

Todo lo visto hasta ahora —niveles, tasas, equilibrios— cabe en una línea con esta forma: derivada = regla.

  • ¿Qué estado se deriva a la izquierda?
  • ¿Qué regla produce la tasa a la derecha?
  • ¿Qué parámetros y entradas aparecen?
  • ¿Qué condición inicial la acompaña?

02 · Definición

¿Qué es una ecuación diferencial?

Una EDO tiene cuatro piezas visibles:

ẋ

Derivada

Lo que cambia: dx/dt, dN/dt, dT/dt. Siempre a la izquierda del igual.

ƒ

Regla f

Cómo cambia: q − k·N, r·P, −k·(T − T_amb). La hipótesis del modelo.

○

Condición inicial

Dónde arranca: N(0) = 2. Sin ella hay infinitas curvas paralelas.

La ecuación sola describe el campo de pendientes; con la condición inicial elige una curva. Esa separación —regla vs arranque— ordena todo el curso.

Leer una EDO como un programador lee una firma.
EDOEstadoRegla y parámetros
dN/dt = 3 − 2N(t)Tasa fija: sin parámetros libres.
dN/dt = q − k·NN(t)Lineal: q y k configuran N* = q/k.
dP/dt = r·PP(t)Proporcional: r manda el despegue.
dT/dt = −k·(T − T_amb)T(t)Con entrada T_amb impuesta.

03 · Anatomía

Lo que la ecuación ya dice sin integrar

Antes de simular, la EDO responde tres cosas con lápiz:

Equilibrios
Resolver f(x) = 0: dónde la pendiente se anula. Ejemplo: q − k·N = 0 → N* = q/k.
Signo por tramos
Probar un valor a cada lado del equilibrio: dice si la curva sube o baja ahí.
Dimensión y unidades
Izquierda: [nivel]/[tiempo]. Derecha debe igualarla: cada término en L/min, °C/h.
Orden y tamaño
Orden: mayor derivada (aquí 1). Tamaño: cuántos estados (aquí 1; SIR tiene 3).

Ecuación lineal

dN/dt = q − k·N

Un equilibrio N* = q/k, signo positivo abajo y negativo arriba. Predice convergencia sin integrar.

Ecuación proporcional

dP/dt = r·P

Equilibrio en P = 0, signo igual al de P si r > 0. Predice despegue sin integrar.

04 · Traducciones típicas

De la frase del dominio a la EDO

Traducir es el oficio: cada verbo del fenómeno tiene su término en f:

Frase→EDO→Curva
  1. 1
    «Entra fijo, sale fijo».

    dN/dt = q_in − q_out. Recta.

  2. 2
    «Sale según lo que hay».

    dN/dt = q − k·N. Acercamiento a q/k.

  3. 3
    «Se enfría hacia el ambiente».

    dT/dt = −k·(T − T_amb). Acercamiento a T_amb.

  4. 4
    «Crece según lo que hay».

    dP/dt = r·P. Despegue exponencial.

  5. 5
    «Contagia al cruzarse».

    dI/dt = β·S·I/N − γ·I. Joroba con pico.

05 · Representación en Python

La EDO es una función f(estado, t)

En Python, la EDO es una función que recibe estado y tiempo y devuelve la derivada. El integrador (Euler, RK) la llama miles de veces; la condición inicial arranca la historia.

Python en tu navegador. Estos bloques se ejecutan localmente con Pyodide, sin instalar nada. Cambiá q y k y verificá que el equilibrio se mueve a q/k.

def f_tanque(nivel, t, q, k):
    return q - k * nivel


for n in [2, 15, 25]:
    print(n, "→ f =", round(f_tanque(n, 0, 3, 0.2), 2))

f cambia de +2,6 a −2,0 al cruzar N* = 15: la ecuación contiene la convergencia.

Equilibrio y dirección desde f

Sin integrar se extraen el cero y el signo a cada lado:

def equilibrio(q, k):
    return q / k


def direccion(n, q=3, k=0.2):
    v = f_tanque(n, 0, q, k)
    return "sube" if v > 0 else "baja" if v < 0 else "equilibrio"


print("N* =", equilibrio(3, 0.2))
for n in [5, 15, 25]:
    print(n, direccion(n))

06 · Exploración

Laboratorio: la ecuación dibuja su curva

Modelo dN/dt = q − k·N con tu q, tu k y tu N₀. Arriba ves la ecuación viva con sus números; abajo, la curva que genera y la recta de pendientes (tasa frente a nivel) con su cero en N*. Tocá un parámetro y mirá los tres paneles a la vez.

EXPERIMENTO 07

De f a la trayectoria

dN/dt = 3 − 0,2 · N · N(0) = 2

Los resultados numéricos aparecen debajo.
Equilibrio N*15,00
f en N(0)+2,60
N final (T=30)14,97
LecturaSube a N*

Con q 3 y k 0,2, N* = 15 y la pendiente inicial es +2,60.

Izquierda: trayectoria N(t) con equilibrio punteado. Derecha: recta de pendientes f(N) con su cero: el signo a cada lado anticipa la curva.

Preguntas para explorar

  1. Con q = 0, ¿cómo queda la ecuación y a dónde va cualquier N₀?
  2. Duplicá q y k juntos (6 y 0,4). ¿Cambia N*? ¿Cambia la velocidad?
  3. Si N(0) = N*, ¿qué curva dibuja? ¿Qué dice f ahí?
Ver respuestas sugeridas
  1. dN/dt = −k·N: decaimiento puro hacia 0. El equilibrio se muda al origen.
  2. N* = 15 igual, pero llega al doble de rápido: q/k fija el destino, k fija la velocidad.
  3. Horizontal en N*: f = 0 y la condición inicial ya está en el equilibrio.

07 · Comprensión

Confusiones frecuentes

«La EDO ya es la solución»

No: la EDO es la regla de pendientes; la solución N(t) es la curva que la cumple desde N(0). Una EDO, infinitas curvas; una condición inicial, una.

«f(N) es el nivel»

f devuelve velocidad (L/min), no litros. Igualar f con N mezcla dimensiones y rompe el modelo.

«Sin N(0) igual simulo»

Sin arranque el integrador no tiene dónde pararse: cualquier traslación vertical cumple la misma EDO.

«Ecuación lineal significa recta»

Lineal en N significa f recta en el plano (N, f): la solución N(t) es una curva que se suaviza, no una recta.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: escribir la EDO

Traducí «entra 5 por minuto, sale el 10 % del nivel por minuto» a f y evaluála en N = 10 y N = 60.

def f(nivel, q=5, k=0.1):
    return q - k * nivel


print(round(f(10), 2))
print(round(f(60), 2))
Ver solución

+4,0 y −1,0: el equilibrio está en N* = 50. La frase quedó convertida en regla computable.

Ejercicio 2: chequear unidades

Si N está en litros y t en minutos, ¿en qué unidades están q = 3 y k = 0,2? Verificá que cada término iguale L/min.

print("q: L/min, k: 1/min")
print("k*N: (1/min)*L = L/min ✓")
print("q - k*N: L/min ✓")
Ver solución

q en L/min y k en 1/min: k·N da L/min y la resta cierra. Sin este chequeo, la EDO puede ser poesía con símbolos.

Ejercicio 3: del cero al pronóstico

Escribí equilibrio() y pronostico() que diga «sube / baja / reposa» desde cualquier N. Probalas con q = 3, k = 0,2.

Ver una posible respuesta
def equilibrio(q, k):
    return q / k


def pronostico(n, q=3, k=0.2):
    v = q - k * n
    if v > 0:
        return "sube"
    if v < 0:
        return "baja"
    return "reposa"


print(equilibrio(3, 0.2))
for n in [5, 15, 25]:
    print(n, pronostico(n))

N* = 15; 5 sube, 15 reposa, 25 baja. Pronóstico sin integrar: la EDO ya lo dice.

09 · Síntesis

Ideas para recordar

  • EDO = derivada igualada a regla: dx/dt = f(x, t), más x(0), es un modelo completo.
  • La ecuación anticipa equilibrios (f = 0) y direcciones (signo) sin integrar.
  • Chequear unidades iguala [nivel]/[tiempo] a cada lado: es el primer test del modelo.
  • En Python: f(estado, t, …) separada del integrador; la condición inicial es otro argumento.
  • Recta de pendientes f(N) y trayectoria N(t) son dos caras de la misma regla.

En el próximo tema bajaremos a las ecuaciones de primer orden: la forma dx/dt = f(x, t) en detalle.