01 · Punto de partida
El reloj que nunca se detiene
En el Tema 1 vimos que un sistema continuo fluye en todo instante. Ahora miramos el reloj mismo: entre el segundo 2 y el segundo 3 también existen t = 2,1, t = 2,37 y t = 2,718. El tiempo no avanza por turnos ni espera a que lo midamos.
Cuando programamos, en cambio, estamos obligados a avanzar por pasos: calculamos en t = 0, luego en t = dt, luego en t = 2·dt. La pregunta central del tema es: ¿cómo representar un tiempo sin saltos dentro de un programa que avanza por saltos?
- ¿Qué instantes existen entre dos mediciones?
- ¿Qué perdemos al avanzar con pasos grandes?
- ¿Qué significa que dt tienda a cero?
- ¿Hasta cuándo simulamos: cuál es el horizonte?
02 · Definición
¿Qué es el tiempo continuo?
El tiempo continuo tiene tres ingredientes inseparables:
Instante
Cada punto del reloj existe: t = 1,5, t = 1,51, t = 1,515… No hay «siguiente instante», siempre hay uno en el medio.
Intervalo
El tramo entre dos instantes tiene duración real: entre t = 2 y t = 5 pasan 3 minutos de flujo, no un salto.
Horizonte
Hasta dónde seguimos la historia: T = 12 min, T = 30 días. Fuera del horizonte, el modelo no promete nada.
La misma historia puede contarse con relojes distintos: el sistema vive en tiempo continuo, la medición lo muestrea y la simulación lo integra por pasos. Los tres relojes deben distinguirse.
| Reloj | Ejemplo | Qué representa |
|---|---|---|
| Sistema | El tanque fluye siempre | Tiempo continuo real del fenómeno. |
| Medición | Mido cada 2 minutos | Muestreo discreto de la curva continua. |
| Simulación | Integro con dt = 0,1 | Aproximación numérica por pasos finos. |
| Horizonte | Simulo hasta T = 12 | Fin de la historia que nos interesa. |
03 · Anatomía
Instante, paso, horizonte y muestreo
Para no mezclar los relojes conviene nombrar cada pieza con precisión:
- Instante t
- Punto del reloj continuo: puede ser 3, 3,5 o 3,14159. Siempre hay más entre dos dados.
- Paso dt
- Salto de la aproximación numérica: 1, 0,5, 0,1. No es del sistema, es de nuestro programa.
- Horizonte T
- Fin de la simulación: hasta dónde integramos la trayectoria.
- Muestreo
- Cada cuánto observamos o guardamos: puede ser distinto de dt.
Reloj discreto
Solo existen los pasos
El estado solo vive en t = 0, 1, 2… Entre pasos no hay nada. Es el mundo de los turnos y los eventos.
Reloj continuo
Todo instante existe
El estado x(t) está definido en cada punto de [0, T]. El programa lo aproxima con dt fino, pero la curva vive entre los puntos.
04 · Tiempo en los modelos
Dónde aparece el reloj
El tiempo continuo reordena las distinciones clásicas de modelos. Tres preguntas bastan para ubicarse:
- 1Estático o dinámico.
Una foto (costo de hoy) no necesita reloj; una película (nivel durante 12 minutos) sí. Este curso es dinámico.
- 2Discreto, continuo o híbrido.
Por eventos (llegan clientes), por flujos (entra agua) o mezclando ambos (tanque con descargas puntuales).
- 3Horizonte corto o largo.
A corto plazo importa la trayectoria exacta; a largo plazo importan el equilibrio y la tendencia. Lo veremos en el Tema 27.
05 · Representación en Python
El reloj continuo en una lista de tiempos
En Python no podemos guardar infinitos instantes, pero sí una malla fina que los aproxime: [0, dt, 2·dt, …, T]. Con dt = 0,1 la malla tiene 121 puntos en [0, 12]; con dt = 2 solo 7. La curva real vive entre ellos.
Python en tu navegador. Estos bloques se ejecutan localmente con Pyodide, sin instalar nada. Achicá dt y observá cómo la poligonal se acerca a la recta exacta.
def malla_temporal(t_final, dt):
tiempos = []
t = 0.0
while t < t_final + 1e-9:
tiempos.append(round(t, 3))
t += dt
return tiempos
print("dt=2 :", malla_temporal(6, 2))
print("puntos con dt=0.5:", len(malla_temporal(6, 0.5)))
Probá con dt = 0,1: ¿cuántos puntos hay en [0, 6]? ¿Qué pasa si dt no divide exacto a T?
Integrar una tasa constante
Con tasa fija, la solución exacta es una recta x(t) = x0 + tasa·t. Euler con cualquier dt la recupera exacta; la diferencia aparece cuando la tasa depende del estado (Temas 15–16). Por ahora, comparemos malla gruesa y fina sobre la misma recta:
def euler_tasa_constante(x0, tasa, t_final, dt):
x, t = x0, 0.0
historia = [(t, x)]
while t < t_final - 1e-9:
x = x + tasa * dt
t = round(t + dt, 6)
historia.append((round(t, 3), round(x, 3)))
return historia
print(euler_tasa_constante(10, 1, 4, dt=2))
print(euler_tasa_constante(10, 1, 4, dt=0.5)[-1])
06 · Exploración
Laboratorio: dt grueso frente a dt fino
La curva dorada es la solución exacta continua x(t) = x0 + tasa·t. La escalera teal es Euler con tu paso dt: con tasa constante coinciden en los nodos, pero mirá qué pasa con la forma entre ellos y qué lejos queda la escalera cuando el paso es grande.
El mismo flujo, dos resoluciones
x(t) = x₀ + tasa · t
Con dt 2 hay 7 nodos y la escalera se separa de la curva entre ellos.
La recta dorada existe en todo instante; la escalera teal solo conoce los nodos. Entre nodos, Euler supone tasa congelada: con dt grande el dibujo miente aunque el valor final coincida.
Preguntas para explorar
- Con tasa +1 y dt = 4, ¿el valor final es correcto? ¿Y la forma entre nodos?
- Poné la tasa en 0. ¿Cuántos nodos hacen falta para dibujar bien una horizontal?
- Si dt no divide a T = 12 (por ejemplo 5), ¿qué hace el último paso?
Ver respuestas sugeridas
- El final coincide (la recta se recupera en los nodos), pero entre nodos la escalera dibuja mesetas falsas: la forma miente.
- Con tasa 0 bastan 2 nodos para el valor, pero la escalera con dt grande sigue dibujando escalones donde hay una línea.
- El último tramo queda más corto: conviene recortar el paso final a T en vez de pasarse del horizonte.
07 · Comprensión
Confusiones frecuentes
«dt es una propiedad del sistema»
No: el sistema no tiene dt. El paso es una decisión de tu programa: con dt más fino ves mejor la misma curva.
«Si el valor final coincide, el dt era bueno»
Con tasa constante el final siempre coincide y aun así la forma puede mentir. Con tasas que dependen del estado, el final también se desvía.
«Más horizonte siempre es mejor»
Más horizonte acumula más error y cuesta más cómputo. El horizonte debe responder a la pregunta, no a la ambición.
«Muestreo y paso son lo mismo»
Podés integrar con dt = 0,1 y guardar cada 2 minutos. Uno define precisión, el otro define cuánto observás.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: contar nodos
Sin ejecutar primero: ¿cuántos nodos tiene la malla [0, 12] con dt = 3? ¿Y con dt = 0,5? Después comprobalo.
def cantidad_nodos(t_final, dt):
n = 0
t = 0.0
while t < t_final + 1e-9:
n += 1
t += dt
return n
print(cantidad_nodos(12, 3))
print(cantidad_nodos(12, 0.5))
Ver solución
Con dt = 3 hay 5 nodos (0, 3, 6, 9, 12). Con dt = 0,5 hay 25 nodos. Achicar dt multiplica el costo: precisión y cómputo se negocian.
Ejercicio 2: exacto frente a Euler
Completá la comparación para tasa −0,5 desde x0 = 10 hasta T = 6 con dt = 2. ¿Coinciden?
def comparar(x0, tasa, t_final, dt):
exacto = x0 + tasa * t_final
x, t = x0, 0.0
while t < t_final - 1e-9:
x = x + tasa * dt
t += dt
return exacto, x
print(comparar(10, -0.5, 6, 2))
Ver solución
Ambos dan 7,0: con tasa constante, Euler es exacto en los nodos para cualquier dt. La trampa está en la forma entre nodos, no en el número final.
Ejercicio 3: recortar el último paso
Escribí una malla que nunca se pase de T: si el paso siguiente excede el horizonte, recortalo. Probala con T = 12 y dt = 5.
Ver una posible respuesta
def malla_recortada(t_final, dt):
tiempos, t = [0.0], 0.0
while t < t_final - 1e-9:
t = min(t + dt, t_final)
tiempos.append(round(t, 3))
return tiempos
print(malla_recortada(12, 5))
Da [0, 5, 10, 12]: el último paso mide 2 en vez de 5. Respetar el horizonte evita inventar tiempo más allá de la pregunta.
09 · Síntesis
Ideas para recordar
- El tiempo continuo vive en todo punto de [0, T]: entre dos instantes siempre hay más.
- Sistema, medición y simulación tienen relojes distintos: flujo real, muestreo y paso dt.
- dt es resolución numérica: achicarlo acerca la poligonal a la curva y multiplica el costo.
- Con tasa constante, Euler acierta en los nodos pero la escalera deforma la forma entre ellos.
- Horizonte, paso y muestreo son tres argumentos separados: no los mezcles en una sola variable.
En el próximo tema estudiaremos las variables de estado continuas: los niveles que varían en cada instante y cómo elegirlos bien.