27.1 Aproximar implica cometer error
Un integrador reemplaza una evolución continua por una secuencia finita. Excepto en casos particulares, el estado calculado no coincide exactamente con la solución matemática. Llamamos error numérico a la diferencia producida por la representación y el algoritmo.
Error no significa necesariamente que el programa esté mal escrito. Una implementación correcta de Euler posee error porque el método aproxima la curva con pendientes constantes durante cada paso. La pregunta útil es si el error está medido y resulta aceptable para el propósito.
27.2 Fuentes de error
Reducir Δt ataca principalmente el error de discretización. No corrige una aceleración equivocada, una unidad mal convertida ni una condición inicial incorrecta.
27.3 Error absoluto y relativo
Si conocemos un valor de referencia yref y obtenemos ynum:
error absoluto = |ynum − yref|
error relativo = error absoluto / |yref|
El error firmado indica si sobrestimamos o subestimamos. El absoluto expresa el tamaño en la unidad original. El relativo permite comparar escalas y suele mostrarse como porcentaje.
Cuando el valor de referencia es cero o muy próximo a cero, el error relativo deja de ser informativo o se vuelve enorme. En ese caso usamos error absoluto o una escala característica del problema.
27.4 Implementar medidas de error
function medirError(calculado, referencia, escalaMinima = 1e-12) {
const firmado = calculado - referencia;
const absoluto = Math.abs(firmado);
const escala = Math.max(Math.abs(referencia), escalaMinima);
return {
firmado,
absoluto,
relativo: absoluto / escala
};
}
console.log(medirError(9.8, 10));
console.log(medirError(0.001, 0));escalaMinima evita una división por cero, pero debe elegirse según el dominio. No convierte automáticamente en significativo un porcentaje calculado cerca de cero.
27.5 Error local y error global
El error local de truncamiento es el introducido por un paso suponiendo que comenzamos desde el estado exacto. El error global es la diferencia acumulada después de muchos pasos, que parten de estados ya aproximados.
Un error local pequeño puede repetirse miles de veces y modificar el resultado. Además, el sistema puede amortiguar los errores previos o amplificarlos. Por eso no basta con analizar una sola actualización.
La relación real depende del método, del paso y de cómo responde el sistema a perturbaciones.
27.6 Orden de convergencia
Un método de orden p suele tener, para pasos suficientemente pequeños y un intervalo fijo:
Euler explícito y semimplícito son de orden 1. Velocity Verlet es de orden 2 para los problemas a los que se aplica. Si reducimos Δt a la mitad, esperamos aproximadamente:
La razón esperada es 2 para primer orden y 4 para segundo orden. Esto se observa cuando domina el error de discretización; pasos enormes o extremadamente pequeños pueden quedar fuera de ese régimen.
27.7 Estimar el orden experimentalmente
function ordenObservado(errorPaso, errorMedioPaso) {
if (errorPaso <= 0 || errorMedioPaso <= 0) return null;
return Math.log2(errorPaso / errorMedioPaso);
}
console.log(ordenObservado(0.08, 0.04));
console.log(ordenObservado(0.08, 0.02));Los resultados son 1 y 2. Si el orden medido difiere mucho del esperado, puede haber un error de implementación, un paso inadecuado, una discontinuidad o una medida dominada por redondeo.
27.8 Qué significa estabilidad
Un método es estable para un problema y un paso cuando los errores y perturbaciones numéricas permanecen controlados durante el intervalo considerado. La estabilidad no pertenece al integrador aislado: depende también de la ecuación y de Δt.
Una solución física acotada puede transformarse en una secuencia que crece sin límite si la combinación método-paso es inestable. Reducir Δt o elegir otro integrador puede cambiar ese comportamiento.
Estable tampoco significa preciso. Una secuencia puede permanecer finita y suave, pero tener una fase, amplitud o posición incorrectas.
27.9 Un modelo de prueba: decaimiento
Consideremos dy/dt=−λy, cuya solución exacta es y(t)=y₀e−λt. Euler explícito produce:
El factor g=1−λΔt se multiplica en cada paso. Para que la magnitud no crezca necesitamos |g|≤1, es decir:
Si λΔt>2, la solución numérica alterna de signo y aumenta aunque la solución exacta decaiga hacia cero. Esta condición muestra que un método puede exigir pasos más pequeños cuando el sistema cambia más rápido.
27.10 Comprobar el factor de amplificación
function simularDecaimientoEuler(y0, lambda, dt, pasos) {
let y = y0;
const historia = [y];
for (let n = 0; n < pasos; n++) {
y += -lambda * y * dt;
historia.push(y);
}
return historia;
}
console.log(simularDecaimientoEuler(1, 1, 0.5, 5));
console.log(simularDecaimientoEuler(1, 1, 2.5, 5));Con Δt=0,5 la magnitud se reduce. Con Δt=2,5 el factor es −1,5: los valores alternan y crecen. El programa ejecuta exactamente la fórmula, pero la aproximación es inestable.
27.11 Estabilidad en un oscilador
Para a=−ω²x, la solución exacta mantiene amplitud constante. Euler explícito añade energía y su amplitud crece para cualquier Δt positivo, aunque con pasos pequeños el crecimiento tarda más en notarse.
Euler semimplícito mantiene el movimiento acotado cuando, para este oscilador ideal, se cumple aproximadamente ωΔt<2. Cerca del límite la trayectoria puede ser muy poco precisa aunque no explote. Velocity Verlet posee el mismo límite básico de estabilidad para este caso, con error de fase generalmente menor.
Comparar Δt sin considerar ω es insuficiente: 0,1 s puede ser pequeño para un movimiento lento y enorme para uno muy rápido.
27.12 Actividad interactiva: precisión y estabilidad
Variá el método, ω, Δt y duración. La gráfica limita la escala para mantener visible la solución exacta; si la aproximación excede el rango, el diagnóstico y la amplitud máxima revelarán el crecimiento.
Laboratorio de error y estabilidad
Oscilador ideal: x(0)=1 m, v(0)=0 y a=−ω²x.
27.13 Error de fase y error de amplitud
En un movimiento periódico debemos observar más que la posición final:
Dos curvas pueden coincidir accidentalmente al final y haberse separado durante casi toda la simulación. Por eso registramos error máximo o error cuadrático sobre toda la historia.
27.14 Métricas sobre una trayectoria
function resumirErrores(calculados, referenciaEn) {
let maximo = 0;
let sumaCuadrados = 0;
for (const estado of calculados) {
const error = estado.posicionM - referenciaEn(estado.tiempoS);
maximo = Math.max(maximo, Math.abs(error));
sumaCuadrados += error ** 2;
}
return {
maximo,
rms: Math.sqrt(sumaCuadrados / calculados.length)
};
}
const datos = [
{ tiempoS: 0, posicionM: 1 },
{ tiempoS: 0.5, posicionM: 0.6 },
{ tiempoS: 1, posicionM: -0.3 }
];
console.log(resumirErrores(datos, t => Math.cos(t)));El error RMS resume el tamaño típico, mientras que el máximo protege contra el peor caso observado. La métrica adecuada depende de si nos importa la trayectoria completa, un evento o solo el estado final.
27.15 Estudio de convergencia por refinamiento
Un procedimiento básico para elegir Δt es repetir exactamente el mismo problema:
- Simular con un paso inicial Δt.
- Repetir con Δt/2 y Δt/4.
- Comparar las mismas magnitudes en los mismos instantes físicos.
- Medir error contra una solución conocida o diferencia entre refinamientos.
- Continuar hasta que la diferencia quede bajo la tolerancia requerida.
Las condiciones iniciales, duración, eventos e integrador deben permanecer iguales. Comparar ejecuciones con otras diferencias no aísla el efecto del paso.
27.16 Convergencia sin solución exacta
Si no conocemos la solución, utilizamos el resultado más refinado como referencia provisional. No demuestra exactitud, pero permite comprobar si las respuestas se estabilizan.
function diferenciasDeRefinamiento(resultados) {
const diferencias = [];
for (let i = 0; i < resultados.length - 1; i++) {
diferencias.push(Math.abs(resultados[i] - resultados[i + 1]));
}
return diferencias;
}
const posicionesFinales = [8.2, 8.6, 8.7, 8.725];
console.log(diferenciasDeRefinamiento(posicionesFinales));Las diferencias 0,4; 0,1 y 0,025 sugieren una reducción por factor cuatro, compatible con segundo orden. Aun así, todas las ejecuciones podrían compartir un error de modelo.
27.17 Redondeo y pasos excesivamente pequeños
Reducir Δt disminuye el error de discretización, pero aumenta la cantidad de operaciones. Cada operación introduce redondeos diminutos. Si Δt es extremadamente pequeño, el incremento puede ser insignificante frente al valor acumulado o el redondeo total puede dominar.
Además, duplicar la cantidad de pasos duplica aproximadamente el costo. La meta no es el menor Δt representable, sino un paso que satisfaga precisión, estabilidad, detección de eventos y presupuesto de cálculo.
Conservar un contador entero y calcular t=t₀+nΔt evita que el error de sumar tiempos se acumule paso tras paso.
27.18 Escalas espaciales y detección
La estabilidad algebraica no garantiza detectar colisiones. Si un móvil alcanza velocidad máxima vmax y el obstáculo más fino tiene grosor L, el desplazamiento aproximado por paso es:
Conviene que esa distancia sea claramente menor que la escala relevante, o utilizar detección continua de colisiones. Un paso adecuado para integrar una trayectoria suave puede seguir siendo demasiado grande para eventos espaciales pequeños.
27.19 Un selector experimental de paso
function refinarHastaConverger(simular, pasoInicialS, tolerancia, maximo = 12) {
let pasoS = pasoInicialS;
let anterior = simular(pasoS);
for (let intento = 1; intento <= maximo; intento++) {
pasoS /= 2;
const actual = simular(pasoS);
const diferencia = Math.abs(actual - anterior);
if (diferencia <= tolerancia) {
return { pasoS, resultado: actual, diferencia, intento };
}
anterior = actual;
}
throw new Error("No se alcanzó la tolerancia");
}
const aproximar = dt => 10 - 3 * dt;
console.log(refinarHastaConverger(aproximar, 0.5, 0.01));Este patrón compara solo un resultado escalar. Una aplicación real debe verificar la trayectoria, eventos y magnitudes de interés, además de imponer límites de costo y estabilidad.
27.20 Procedimiento para elegir Δt
- Definir qué error es aceptable y en qué magnitudes.
- Identificar la escala temporal más rápida y las escalas espaciales pequeñas.
- Elegir un integrador apropiado para la estructura del problema.
- Comenzar con un paso conservador y comprobar que la ejecución permanece acotada.
- Realizar un estudio de refinamiento y medir el orden observado.
- Comprobar eventos, casos extremos y duraciones mayores que la demostración habitual.
- Medir costo y documentar el paso, método, tolerancias y evidencia obtenida.
El valor final debe surgir de requisitos verificables, no de que una animación “se vea bien”.
27.21 Errores frecuentes
- Confundir precisión con estabilidad: una solución acotada todavía puede ser inexacta.
- Medir solo el estado final: puede ocultar grandes errores intermedios.
- Usar error relativo cerca de cero: elegir una escala característica o error absoluto.
- Reducir Δt para corregir el modelo: la discretización no arregla fuerzas, unidades o parámetros erróneos.
- Comparar distintos instantes: interpolar o registrar estados en tiempos comunes.
- Suponer el orden teórico con cualquier paso: medir el régimen de convergencia.
- Ignorar el tiempo total: una deriva lenta puede aparecer solamente en ejecuciones largas.
- Elegir un paso solo por la tasa de dibujo: física y renderizado poseen requisitos diferentes.
27.22 Ejercicios propuestos
- Calculá error firmado, absoluto y relativo si la posición numérica es 9,7 m y la referencia 10 m.
- Un método produce errores 0,16; 0,08 y 0,04 al dividir sucesivamente Δt por dos. Estimá su orden.
- Otro método produce 0,16; 0,04 y 0,01. ¿Qué orden sugiere?
- Para
dy/dt=−3y, determiná el máximo Δt dentro de la condición de estabilidad de Euler explícito. - Clasificá como precisión o estabilidad: una oscilación mantiene amplitud pero acumula retraso de fase.
- Un móvil alcanza 20 m/s y debe detectar regiones de 0,5 m. Proponé un límite inicial para Δt y justificá.
- Explicá por qué cuatro ejecuciones convergentes todavía podrían describir mal el fenómeno real.
- Diseñá un estudio de refinamiento para una simulación sin solución analítica.
Ver soluciones y explicaciones
- Error firmado −0,3 m; absoluto 0,3 m; relativo 0,03, es decir 3 %.
- La razón es 2, por lo que sugiere orden 1.
- La razón es 4, compatible con orden 2.
λΔt≤2; con λ=3,Δt≤2/3 s. Conviene permanecer lejos del límite si también se exige precisión.- Es un problema de precisión: permanece acotada, pero los instantes característicos son incorrectos.
- Para recorrer menos de 0,5 m por paso se requiere
Δt<0,025 s; usar, por ejemplo, 0,01 s deja margen, aunque debe verificarse. - La convergencia estudia la solución del modelo discretizado. Si el modelo omite efectos o usa datos erróneos, puede converger hacia la respuesta equivocada.
- Ejecutar con Δt, Δt/2, Δt/4 y Δt/8; registrar magnitudes en tiempos comunes, comparar cada par, estimar orden y continuar hasta cumplir una tolerancia definida.
27.23 Ideas para recordar
- Error de modelo, discretización, redondeo e implementación tienen causas distintas.
- El error debe medirse con una escala y una métrica apropiadas.
- El error local nace en un paso; el global incorpora su propagación.
- Un método de orden p tiende a reducir el error por 2ᵖ al dividir Δt por dos.
- Estabilidad significa que las perturbaciones permanecen controladas, no que el resultado sea exacto.
- La combinación entre ecuación, integrador y paso determina el comportamiento.
- Un estudio de convergencia aporta evidencia para elegir Δt.
- Eventos, duración, costo y escala espacial también condicionan el paso.
En el próximo tema relacionaremos estos avances con tiempo real, paso fijo e interpolación para animaciones fluidas.