01 · Punto de partida
Lo que salta y lo que fluye
Los clientes llegan de a uno: la cola salta. El agua entra sin pausa: el nivel fluye. Los modelos discretos cambian en instantes contables (eventos); los continuos cambian a cada momento (tasas).
- ¿El estado cambia de a saltos o sin parar?
- ¿Qué conviene contar: eventos o tiempo corrido?
- ¿Con qué paso simulo el flujo sin romperlo?
- ¿Dónde duele más el error: en el salto o en la tasa?
02 · Definiciones
Saltos y flujos
Discreto
El estado cambia en eventos: llega, sale, se rompe, se compra. Entre eventos, nada cambia.
Continuo
El estado fluye con tasas: litros por minuto, interés por día. Siempre está cambiando.
Paso dt
El truco para simular flujos: avanzar de a pedacitos y suponer la tasa fija en cada uno.
| Sistema | Tipo | Reloj natural |
|---|---|---|
| Fila de banco | Discreto | Eventos: llegada, fin de atención |
| Inventario por unidades | Discreto | Eventos: venta, reposición |
| Tanque con caudales | Continuo | Flujo permanente en el tiempo |
| Temperatura | Continuo | Cambia a cada instante |
03 · El reloj
Tres formas de avanzar el tiempo
- 1Por eventos.
Saltar al próximo evento: ideal discreto, sin pasos vacíos. La agenda manda.
- 2Por paso fijo.
Avanzar dt parejos: simple y versátil. El paso manda el error y el costo.
- 3Continuo exacto.
Resolver la tasa con matemática (cuando se puede): sin pasos ni error de reloj.
Paso chico
Más fiel, más caro
Sigue mejor las curvas pero multiplica los cálculos. Rendimiento decreciente.
Paso grande
Barato y riesgoso
Pocos cálculos, pero puede saltar topes, oscilar o inventar historias.
- Evento
- Instante donde algo cambia: llegada, salida, ruptura.
- Tasa
- Velocidad de cambio: litros por minuto, clientes por hora.
- Paso dt
- Pedacito de tiempo simulado de una vez.
- Método de Euler
- Avanzar
nuevo = actual + tasa × dt: simple y aproximado.
04 · Puentes
Discretizar flujos, suavizar eventos
Todo flujo simulado en computadora se discretiza: la pregunta es con qué dt el error deja de importar. Y muchos discretos se suavizan con tasas promedio para estimar rápido. El Tema 15 mezclará ambos mundos.
05 · En Python
Eventos que saltan, Euler que fluye
Python en tu navegador. El discreto recorre eventos; el continuo aproxima la tasa con Euler.
def max_cola(llegadas, duracion):
# Discreto por eventos: llegadas ordenadas, un servidor.
libre, cola, pico = 0, 0, 0
for t in llegadas:
if t >= libre:
libre = t + duracion
cola = 0
else:
cola = cola + 1
pico = max(pico, cola)
libre = libre + duracion
return pico
print(max_cola([0, 1, 2, 5], 2))
Euler: el flujo en pedacitos
def euler(n0, entrada, salida, dt, pasos):
# Continuo aproximado: tasa fija durante cada dt.
n = n0
historia = []
for t in range(pasos):
n = n + (entrada - salida) * dt
historia.append(round(n, 2))
return historia
print(euler(10, 3, 2, 0.5, 6))
06 · Exploración
Laboratorio: el paso que miente
Un llenado que se frena solo (tasa proporcional a lo que falta). La curva blanca es la solución exacta; las otras, Euler con paso grueso y fino. Achicá el paso y mirá converger.
Euler contra la solución exacta
llenado con freno · 12 s
El paso fino casi calca la exacta; el grueso se desvía casi un punto.
Euler supone la tasa fija en cada paso: cuanto más largo el paso, más vieja la tasa y mayor el error.
Preguntas para explorar
- Con k = 0,8 y paso 3, ¿el grueso todavía parece un llenado? ¿Qué inventa?
- Bajá el paso grueso a 0,5. ¿Cuánto cae su error?
- ¿En qué casos usarías eventos y en cuáles Euler?
Ver respuestas sugeridas
- No: con k × dt = 2,4 el método oscila y diverge; inventa rebotes en vez de un llenado.
- Mucho: bajando a 0,5 el error cae varias veces. Medilo en el laboratorio.
- Eventos para saltos (colas, llegadas); Euler para flujos con tasas.
07 · Comprensión
Confusiones frecuentes
«Discreto es aproximado y continuo es exacto»
Ambos pueden ser exactos o aproximados: un modelo de eventos bien hecho es exacto, y Euler es una aproximación de un continuo.
«Paso más chico siempre es mejor»
Mejora hasta que el error del paso deja de mandar; después solo suma costo y errores de redondeo.
«Los eventos son casos especiales del paso fijo»
Al revés: el paso fijo muestrea; los eventos saltan exactamente a cada cambio. Para colas, eventos suele ganar.
«La tasa vale en todo el paso»
Eso supone Euler, y es falso cuando la tasa depende del nivel. Por eso el paso debe ser corto frente a la escala del sistema.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: leer eventos
Con llegadas en 0, 1, 2 y 5 y atención de 2, ¿cuál es la cola máxima? Ejecutá y razoná cada evento.
def max_cola(llegadas, duracion):
libre, cola, pico = 0, 0, 0
for t in llegadas:
if t >= libre:
libre = t + duracion
cola = 0
else:
cola = cola + 1
pico = max(pico, cola)
libre = libre + duracion
return pico
print(max_cola([0, 1, 2, 5], 2))
Ver solución razonada
Da 3: en t = 0 arranca, en t = 1 y 2 se encola (pico 2) y en t = 5, todavía ocupado hasta las 8, llega a 3. Sin pasos vacíos: puro evento.
Ejercicio 2: Euler a mano
Calculá 6 pasos de Euler con n0 = 10, tasa neta 1 y dt = 0,5. ¿A dónde llega?
def euler(n0, entrada, salida, dt, pasos):
n = n0
historia = []
for t in range(pasos):
n = n + (entrada - salida) * dt
historia.append(round(n, 2))
return historia
print(euler(10, 3, 2, 0.5, 6))
Ver solución
Da [10.5, 11.0, 11.5, 12.0, 12.5, 13.0]: 6 pasos de media unidad avanzan 3 unidades de tiempo con tasa 1.
Ejercicio 3: elegir el reloj
Clasificá cada caso en eventos, paso fijo o continuo exacto: cola del banco, temperatura del tanque, interés mensual, llenado con freno.
Ver una posible respuesta
casos = {
"cola del banco": "eventos",
"temperatura del tanque": "paso fijo (Euler)",
"interes mensual": "paso fijo (periodo dado)",
"llenado con freno": "continuo exacto o Euler fino",
}
for c, r in casos.items():
print(c, "->", r)
Los saltos piden eventos; los flujos, tasas. Y cuando la tasa tiene fórmula cerrada, lo exacto ahorra pasos.
09 · Síntesis
Ideas para recordar
- Discreto suma eventos; continuo acumula tasas.
- Eventos saltan sin pasos vacíos; Euler avanza dt con tasa congelada.
- El dt es parámetro del experimento: se declara y se varía.
- Paso grande con tasas que dependen del nivel inventa historias.
- En Python: listas de eventos o bucles con
tasa × dt.
En el próximo tema mezclaremos ambos mundos: modelos híbridos.