01 · Punto de partida
El patrón que aparece en todas partes
Agua en un tanque, stock en un depósito, carga en una batería, espera en una cola: todos son niveles que acumulan la diferencia entre entrar y salir. La ecuación madre es dN/dt = q_in(t) − q_out(N), con entradas que el entorno impone y salidas que el nivel decide.
Dominar el tanque es dominar el 80 % de los modelos continuos aplicados: cambia el líquido, no la cuenta.
- ¿Qué entra (q_in) y quién lo decide?
- ¿Qué sale (q_out) y depende de N o es fijo?
- ¿Hay piso (0) y techo (capacidad)?
- ¿La entrada es fija, pulsante o con ritmo?
02 · Definición
¿Qué es un modelo de tanque?
Un nivel con sus dos canillas:
Entrada q_in(t)
Lo que llega: fija, pulsante o sinusoidal. La impone el entorno o el escenario. Ejemplo: 3 + 2·sin.
Salida q_out(N)
Lo que se va: fija (bomba) o proporcional k·N (desagüe libre). La decide el nivel.
Nivel N(t) con límites
Lo que queda entre piso 0 y techo C: si se vacía, se queda; si rebalsa, vierte.
Sin límites es la EDO ideal; con límites es el modelo útil: el piso y el techo son condiciones de contorno físicas.
| Sistema | Entrada | Salida |
|---|---|---|
| Agua | Canilla q fija | Desagüe k·N libre. |
| Stock | Compras q(t) por mes | Ventas proporcionales. |
| Batería | Carga P fija | Consumo según uso. |
| Cola fluida | Llegadas q(t) con pico | Atención k·N (más cola, más salida). |
03 · Anatomía
Fija, pulsante y con ritmo
La entrada manda la forma de la respuesta:
- Entrada fija
- q constante: el nivel converge a q/k y se queda. Régimen plano.
- Entrada pulsante
- Escalones (abro/cierro): el nivel persigue cada escalón con retardo 1/k.
- Entrada con ritmo
- q₀ + A·sin(2πt/Tp): el nivel oscila atenuado y desfasado alrededor de q₀/k.
- Límites 0 y C
- Piso que recorta vaciados, techo que vierte excedentes: la EDO se pausa en los bordes.
Salida fija (bomba)
Recta hasta el borde
dN/dt = q − b: sube o baja sin freno hasta 0 o C. Sin realimentación, sin piedad.
Salida libre (k·N)
Curva que se regula
dN/dt = q − k·N: converge a q/k venga de donde venga. El desagüe cuida solo.
04 · Tanques en el curso
El arquetipo con cinco líquidos
Cada acumulación con entradas y salidas es un tanque:
- 1Agua.
El original: canilla, desagüe, rebalse. Referencia de todo.
- 2Inventario.
Compras menos ventas con capacidad de galpón.
- 3Batería.
Carga menos consumo entre 0 y 100 %.
- 4Cola.
Llegadas menos atenciones: espera acumulada.
- 5Contaminante.
Vertido menos degradación k·N en un lago.
05 · Representación en Python
Entradas que dependen de t, salidas de N
En Python, la entrada es función del tiempo y la salida función del nivel. Euler con recorte respeta piso y techo.
Python en tu navegador. Estos bloques se ejecutan localmente con Pyodide, sin instalar nada. Subí la amplitud y observá que el nivel oscila sin pasarse del techo.
import math
def entrada(t, q0=3.0, amp=2.0, periodo=10.0):
return q0 + amp * math.sin(2 * math.pi * t / periodo)
def paso(nivel, t, dt=0.1, k=0.2, techo=30.0):
d = entrada(t) - k * nivel
nuevo = nivel + d * dt
return max(0.0, min(techo, nuevo))
print(round(entrada(0), 2), round(entrada(2.5), 2))
3,0 en t = 0 y 5,0 en t = 2,5: la canilla respira con período 10.
Simular con ritmo y límites
El bucle integra la EDO no autónoma con recorte físico:
def simular(n0=15.0, t_final=40.0, dt=0.1, k=0.2, techo=30.0):
n, t = n0, 0.0
historia = [(t, n)]
while t < t_final - 1e-9:
n = paso(n, t, dt, k, techo)
t += dt
historia.append((round(t, 1), round(n, 2)))
return historia
hist = simular()
print(hist[0], "…", hist[-1])
06 · Exploración
Laboratorio: la canilla que respira
Tanque con desagüe k y entrada rítmica q₀ + A·sin(2πt/10) desde N₀ = q₀/k. La teal punteada es la entrada (eje propio); la dorada es el nivel que la sigue atenuado y con retardo. Subí A y observá que el nivel oscila sin desbocarse: el desagüe lo cuida.
Nivel que sigue el ritmo
q(t) = q₀ + A·sin · dN/dt = q − k·N
Con A 2 el nivel oscila ±3,02 alrededor de 15: atenuado por k.
La entrada oscila ±2 pero el nivel solo ±3,02 alrededor de 15 con retardo: el tanque filtra el ritmo (pasa-bajos).
Preguntas para explorar
- Con A = 0, ¿qué dibuja el nivel? ¿Cuál es su valor?
- Duplicá k con la misma A. ¿La oscilación del nivel crece o se achica?
- Si A > q₀ (entra negativo a ratos), ¿qué significa y qué hace el piso 0?
Ver respuestas sugeridas
- Horizontal en q₀/k = 15: sin ritmo no hay historia, solo equilibrio.
- Se achica: más desagüe filtra más. El tanque con k grande copia menos el ritmo.
- La canilla «chupa»: el modelo lo permite en la EDO ideal, pero el piso 0 recorta el vaciado físico.
07 · Comprensión
Confusiones frecuentes
«El nivel copia la entrada»
La sigue atenuada y con retardo 1/k: el tanque es un filtro pasa-bajos, no un espejo.
«Recortar en 0 es trampa numérica»
Es física: el tanque vacío no entrega. La EDO ideal no sabe de pisos; el modelo sí.
«Con entrada variable no hay equilibrio»
Hay régimen periódico: oscila alrededor de q₀/k con la misma frecuencia. Equilibrio dinámico con ritmo.
«Más capacidad cambia la forma»
Solo si se toca el techo: mientras N < C, la capacidad no existe para la EDO.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: medio que manda
Con q₀ = 4, A = 1 y k = 0,2, ¿alrededor de qué nivel oscila? Comprobalo con el promedio.
print(4 / 0.2)
Ver solución
20,0: la base q₀ fija el medio; la amplitud A solo pone el vaivén. Medios y vaivenes se deciden por separado.
Ejercicio 2: atenuación
La oscilación del nivel es A/√(k² + ω²) con ω = 2π/10. Calculala con A = 2 y k = 0,2. ¿Cierra con ±3,02?
import math
def oscilacion(a=2.0, k=0.2, periodo=10.0):
w = 2 * math.pi / periodo
return a / math.sqrt(k ** 2 + w ** 2)
print(round(oscilacion(), 2))
Ver solución
3,03: la cuenta cerrada confirma al simulador. Más k o más frecuencia, menos vaivén.
Ejercicio 3: con piso y techo
Agregá piso 0 y techo 18 al simulador con q₀ = 3, A = 3 y k = 0,2. ¿El techo recorta?
Ver una posible respuesta
import math
def simular(q0=3.0, amp=3.0, k=0.2, techo=18.0, t_final=40.0, dt=0.1):
n, t, mx = q0 / k, 0.0, 0.0
while t < t_final - 1e-9:
q = q0 + amp * math.sin(2 * math.pi * t / 10)
n = max(0.0, min(techo, n + (q - k * n) * dt))
mx = max(mx, n)
t += dt
return round(mx, 2)
print(simular())
El máximo da 18,0: el techo recorta el pico (sin techo llegaría a ≈ 19,5). El rebalse existe.
09 · Síntesis
Ideas para recordar
- dN/dt = q_in(t) − q_out(N): entradas del escenario, salidas del nivel, nivel que integra.
- Salida libre k·N regula sola hacia q₀/k; salida fija va recta al borde.
- Entrada rítmica → régimen periódico atenuado A/√(k² + ω²) con retardo 1/k.
- En Python: entrada(t) + salida(n) + paso con max(0, min(C, …)).
- Piso y techo son física: la EDO ideal se recorta en los bordes.
En el próximo tema generalizaremos la máquina: sistemas dinámicos y su comportamiento global.