68. Aplicaciones en simulaciones

Una simulación usa fórmulas y algoritmos para representar cómo cambia un sistema con el tiempo.

68.1 Introducción

Simular significa crear un modelo computacional de un fenómeno. El modelo no copia toda la realidad, pero reproduce relaciones importantes mediante variables y fórmulas.

Una simulación necesita:
estado inicial, reglas de cambio y pasos de tiempo.

El álgebra permite expresar esas reglas de cambio de forma clara.

68.2 Estado de una simulación

El estado contiene los valores actuales del sistema: posición, velocidad, temperatura, población, energía u otras variables.

const estado = {
  tiempo: 0,
  posicion: 10,
  velocidad: 3
};

console.log(estado);

Cada paso de la simulación calcula un nuevo estado a partir del anterior.

68.3 Paso de tiempo

Muchas simulaciones avanzan en intervalos pequeños llamados pasos de tiempo.

nuevoTiempo = tiempoActual + deltaTiempo

El valor deltaTiempo representa cuánto avanza la simulación en cada actualización.

68.4 Movimiento uniforme

Si la velocidad es constante, la posición cambia de manera lineal.

nuevaPosición = posición + velocidad · deltaTiempo

Esta fórmula es una de las más utilizadas en simulaciones simples.

68.5 Movimiento uniforme en JavaScript

La fórmula de movimiento puede actualizar el estado en cada paso.

function actualizarMovimiento(estado, deltaTiempo) {
  return {
    tiempo: estado.tiempo + deltaTiempo,
    posicion: estado.posicion + estado.velocidad * deltaTiempo,
    velocidad: estado.velocidad
  };
}

const inicial = { tiempo: 0, posicion: 10, velocidad: 3 };

console.log(actualizarMovimiento(inicial, 1));
console.log(actualizarMovimiento(inicial, 2));

El resultado es un nuevo estado calculado desde el estado inicial.

68.6 Aceleración

Cuando la velocidad cambia, se usa aceleración. La aceleración indica cuánto cambia la velocidad por unidad de tiempo.

nuevaVelocidad = velocidad + aceleración · deltaTiempo
nuevaPosición = posición + nuevaVelocidad · deltaTiempo

Este modelo se usa para gravedad, empuje, frenado y caída de objetos.

68.7 Simular caída

Una caída simple puede modelarse con velocidad vertical y gravedad.

function actualizarCaida(estado, deltaTiempo) {
  const gravedad = 9.8;
  const nuevaVelocidad = estado.velocidad + gravedad * deltaTiempo;

  return {
    tiempo: estado.tiempo + deltaTiempo,
    altura: estado.altura - nuevaVelocidad * deltaTiempo,
    velocidad: nuevaVelocidad
  };
}

const objeto = { tiempo: 0, altura: 100, velocidad: 0 };

console.log(actualizarCaida(objeto, 1));
console.log(actualizarCaida(objeto, 2));

La altura disminuye porque el objeto cae hacia el suelo.

68.8 Límites del sistema

Una simulación debe controlar límites para evitar valores imposibles.

Si altura < 0, altura = 0.
Si temperatura < mínimo, usar el mínimo permitido.

Los límites convierten una fórmula ideal en un modelo más útil para software.

68.9 Aplicar límites en JavaScript

La función Math.max puede impedir que una variable baje de cierto valor.

function limitarAltura(altura) {
  return Math.max(altura, 0);
}

console.log(limitarAltura(25));
console.log(limitarAltura(-3));

Este control evita que el modelo devuelva una altura negativa.

68.10 Crecimiento de población

El crecimiento puede modelarse con una tasa aplicada al valor actual.

nuevaPoblación = población · (1 + tasa)

Este tipo de modelo representa crecimiento proporcional.

68.11 Simular crecimiento

Un ciclo permite calcular varios pasos de una simulación de crecimiento.

function simularCrecimiento(poblacionInicial, tasa, pasos) {
  const historial = [];
  let poblacion = poblacionInicial;

  for (let paso = 1; paso <= pasos; paso++) {
    poblacion = poblacion * (1 + tasa);
    historial.push(poblacion);
  }

  return historial;
}

console.log(simularCrecimiento(1000, 0.05, 5));

El historial permite ver cómo evoluciona el sistema paso a paso.

68.12 Decaimiento

El decaimiento representa una disminución proporcional, como enfriamiento, pérdida de energía o desgaste.

nuevoValor = valor · (1 - tasa)

Si la tasa es 0.10, el sistema conserva el 90% del valor en cada paso.

68.13 Simular pérdida de energía

Una simulación puede reducir energía progresivamente hasta llegar a un límite mínimo.

function simularEnergia(energiaInicial, perdida, pasos) {
  const valores = [];
  let energia = energiaInicial;

  for (let paso = 1; paso <= pasos; paso++) {
    energia = energia * (1 - perdida);
    energia = Math.max(energia, 0);
    valores.push(energia);
  }

  return valores;
}

console.log(simularEnergia(100, 0.2, 6));

El modelo evita valores negativos y conserva la evolución de cada paso.

68.14 Errores comunes

Los errores más frecuentes son usar unidades incompatibles, aplicar pasos de tiempo demasiado grandes o no controlar límites del sistema.

Revisión útil:
¿Las unidades son coherentes?
¿El paso de tiempo es razonable?
¿Existen valores mínimos o máximos?
¿El modelo representa lo necesario?

Una simulación simple puede ser útil si sus supuestos están claros.

68.15 Conclusión

Las simulaciones convierten fórmulas algebraicas en sistemas que evolucionan. Variables, tasas, límites y pasos de tiempo permiten construir modelos programables.

Simular es actualizar un estado mediante reglas matemáticas repetidas en el tiempo.

En el próximo tema se estudiarán aplicaciones del álgebra en ciencia de datos.