Modelos y Simulación · Tema 18

Analíticos y computacionales

Fórmulas cerradas frente a experimentos con código: respuesta directa o historia construida.

01 · Punto de partida

Responder de una vez o construir la respuesta

El nivel en t = 6 sale de una fórmula (10 + 2 × 6) o de un bucle que avanza paso a paso. Ambas dan 22, pero por caminos opuestos: la primera calcula directo, el segundo simula el recorrido.

  • ¿Existe fórmula cerrada para esta pregunta?
  • ¿Necesito solo el final o también el camino?
  • ¿Cuánto cuesta cada corrida y cuántas haré?
  • ¿Con qué verifico el código?

02 · Definiciones

Fórmula y algoritmo

ƒ

Analítico

Solución cerrada: reemplazo valores y obtengo. Exacta e instantánea donde existe.

⟳

Computacional

Algoritmo iterativo: avanza, acumula y registra. Llega donde la fórmula no llega.

⇄

Oráculo

La fórmula como verificadora del código: si difieren, el bug está en el bucle.

Cada uno brilla en su terreno.
AspectoAnalíticoComputacional
RespuestaDirecta, exactaConstruida, aproximada
CostoCasi nuloCrece con pasos y réplicas
AlcanceSolo donde hay fórmulaTopes, azar, híbridos, todo
HistoriaSolo el punto pedidoTrayectoria completa

03 · Decisión

Cómo trabajar con ambos

  1. 1
    Buscá la fórmula primero.

    Si existe, es gratis, exacta y tu mejor test.

  2. 2
    Simulá lo que la fórmula no cubre.

    Topes, horarios, azar y políticas piden código.

  3. 3
    Verificá el código contra la fórmula.

    En el caso simple deben coincidir al decimal.

  4. 4
    Medí el costo.

    Pasos × réplicas × escenarios: el presupuesto manda el dt.

Fórmula

El atajo exacto

Responde el final sin recorrer: ideal para verificar y para decidir rápido.

Código

El camino completo

Entrega historia, picos y métricas donde no hay fórmula que valga.

Solución cerrada
Expresión directa del resultado en función de los datos.
Iteración
Repetición de la transición hasta completar el horizonte.
Oráculo de test
Referencia confiable contra la que se compara el código.
Costo
Operaciones por corrida: pasos por réplicas por escenarios.

04 · Puentes

La fórmula que cuida al código

Fórmula⇄Código→Coinciden→Confianza

Todo simulador serio trae su oráculo: un caso con solución conocida donde código y fórmula deben empatar. Es la verificación del Tema 35 en miniatura.

05 · En Python

La misma respuesta por dos caminos

Python en tu navegador. La fórmula verifica al bucle: si difieren, el bug está en el bucle.

def analitico(n0, balance, t):
    # Fórmula cerrada: respuesta directa.
    return max(n0 + balance * t, 0)


def computacional(n0, balance, pasos):
    # Algoritmo: construye la historia paso a paso.
    n = n0
    historia = []
    for t in range(pasos):
        n = max(n + balance, 0)
        historia.append(n)
    return historia


print(analitico(10, 2, 6))
print(computacional(10, 2, 6))

Donde la fórmula se rinde

def con_tope(n0, balance, pasos, tope):
    # Con tope activo no hay fórmula simple: solo queda iterar.
    n = n0
    historia = []
    for t in range(pasos):
        n = min(max(n + balance, 0), tope)
        historia.append(n)
    return historia


print(con_tope(10, 5, 6, 20))

06 · Exploración

Laboratorio: precio del paso

La curva muestra el error de Euler según el paso elegido: pasos chicos, error chico y muchas operaciones. El marcador es tu dt actual: ¿cuánto pagás por tu precisión?

EXPERIMENTO 18

Error contra costo

llenado con freno · k = 0,3

Los resultados numéricos aparecen debajo.
Pasos usados12
Error con dt actual0,54
Costo relativo25%
LecturaEquilibrado

Con dt = 1,0 usás 12 pasos con error 0,54: un cuarto del costo máximo.

La curva cae rápido al principio y luego se ameseta: ahí está el punto dulce entre error y costo.

Preguntas para explorar

  1. Con dt = 0,25, ¿cuánto baja el error y cuánto sube el costo?
  2. Con k = 0,8, ¿la curva se empina? ¿Qué dt elegirías?
  3. ¿Dónde pondrías el oráculo analítico de este laboratorio?
Ver respuestas sugeridas
  1. El error cae al mínimo (~0,14) pero usás 48 pasos: cuatro veces el costo de dt = 1.
  2. Sí, se empina: con tasas rápidas el error crece y conviene un dt donde la curva se ameseta.
  3. En la solución exacta del llenado: la fórmula cerrada verifica al código.

07 · Comprensión

Confusiones frecuentes

«Computacional es menos serio»

Es la única vía donde no hay fórmula: topes, azar, híbridos. Serio es verificarlo, no evitarlo.

«Si hay fórmula, simular sobra»

La simulación igual aporta historia, picos y escenarios. La fórmula da el final; el código, el camino.

«Verificar es correr una vez»

Verificar es comparar contra el oráculo en varios casos, incluyendo bordes: topes, ceros y pasos extremos.

«Más pasos siempre mejoran»

Hasta que el error deja de mandar: después solo suman costo y redondeo. La curva del laboratorio lo muestra.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: empatar caminos

Verificá que fórmula y bucle empaten en t = 6. ¿Qué harías si difieren?

def analitico(n0, balance, t):
    return max(n0 + balance * t, 0)

def computacional(n0, balance, pasos):
    n = n0
    h = []
    for t in range(pasos):
        n = max(n + balance, 0)
        h.append(n)
    return h


a = analitico(10, 2, 6)
c = computacional(10, 2, 6)[-1]
print(a, c, "OK" if a == c else "BUG")
Ver solución razonada

Ambos dan 22: OK. Si difieren, el bug está en el bucle (la fórmula es el oráculo) y hay que depurar la transición.

Ejercicio 2: el tope sin fórmula

Con balance 5 y tope 20 en 6 pasos, ¿llega la fórmula? Contrastala con el bucle.

print("fórmula ingenua:", 10 + 5 * 6)

def con_tope(n0, balance, pasos, tope):
    n = n0
    h = []
    for t in range(pasos):
        n = min(max(n + balance, 0), tope)
        h.append(n)
    return h


print("bucle:", con_tope(10, 5, 6, 20))
Ver solución

La fórmula ingenua dice 40; el bucle, [15, 20, 20, 20, 20, 20]. Con tope activo no hay atajo: solo iterar.

Ejercicio 3: presupuestar corridas

Si cada paso cuesta 1 unidad y harás 50 escenarios × 20 réplicas, ¿cuánto cuesta dt = 0,25 frente a dt = 1 en 12 segundos?

Ver una posible respuesta
def costo(dt, segundos=12, escenarios=50, replicas=20):
    pasos = int(segundos / dt)
    return pasos * escenarios * replicas


print("dt 0.25:", costo(0.25))
print("dt 1:", costo(1.0))

Cuestan 48000 frente a 12000: el paso fino cuadruplica la cuenta. La curva error–costo decide si lo vale.

09 · Síntesis

Ideas para recordar

  • Analítico calcula directo; computacional itera y registra.
  • La fórmula es el oráculo: verifica al código en casos simples.
  • Con topes, azar o híbridos no hay atajo: solo queda iterar.
  • El dt equilibra error y costo: la curva lo muestra.
  • En Python: funciones cerradas y bucles que deben empatar.

En el próximo tema calibraremos el zoom: el nivel de detalle de un modelo.