27.1 Superposición convertida en algoritmo
La fuerza resultante sobre un cuerpo es la suma vectorial de todas las fuerzas externas que recibe:
En un programa, cada interacción puede calcularse por separado. Un acumulador combina sus componentes sin perder la identidad del cuerpo receptor.
27.2 Qué es un acumulador de fuerzas
Es un vector temporal asociado a un cuerpo. Comienza en cero al evaluar un instante y recibe cada fuerza activa mediante sumas sucesivas.
El acumulador no es una fuerza adicional. Es la representación numérica de la suma de fuerzas reales y, si corresponde al marco elegido, aparentes.
27.3 Ciclo de evaluación
(0; 0) Na = ΣF/mEl orden debe repetirse para cada evaluación dinámica. Reiniciar no elimina reglas persistentes como la gravedad; solo borra el resultado numérico anterior para que esas reglas vuelvan a evaluarse.
27.4 Por qué debe reiniciarse
Supongamos que un peso de 10 N se suma en cada paso y el acumulador nunca vuelve a cero. Después de tres pasos contendría 30 N, aunque físicamente el peso siga siendo 10 N.
Correcto: Facum ← 0; luego sumar fuerzas actuales
Este error produce aceleraciones que crecen sin causa y suele confundirse con un fallo del integrador.
27.5 Sumar sin reemplazar
Cuando llega una fuerza nueva, sus componentes deben agregarse:
acumulador.y += fuerza.y
Asignar con = borraría las contribuciones anteriores y haría que solo la última fuerza evaluada afectara al cuerpo.
La operación debe rechazar componentes no finitas. Un único NaN contamina toda la suma y se propaga a la aceleración.
27.6 Evaluar todas las fuerzas con el mismo estado
Las reglas dependientes de posición o velocidad deben leer una instantánea coherente. Ninguna debería avanzar el cuerpo antes de que las demás terminen.
Si una regla modifica la velocidad y la siguiente la utiliza, el resultado dependerá del orden del arreglo. Separar evaluación e integración elimina esa dependencia accidental.
27.7 De la resultante a la aceleración
Para un cuerpo móvil de masa positiva:
ay = FR,y/m
Si el objeto almacena masaInversa = 1/m, puede usarse una multiplicación:
La aceleración es un resultado derivado del instante. En el siguiente paso puede cambiar aunque la masa permanezca constante.
27.8 Cuerpos inmóviles
Un cuerpo marcado como inmóvil suele tener masaInversa = 0. Puede recibir fuerzas para fines de diagnóstico, pero su aceleración impuesta permanece en cero:
Esto representa una decisión del modelo: el suelo no se mueve bajo las cargas simuladas. No afirma que en el mundo real no experimente fuerzas ni deformaciones.
27.9 Un acumulador por cuerpo
En un mundo con varios cuerpos, una estructura indexada por identificador evita mezclar receptores:
Map<cuerpoId, { x, y }>Cada fuerza declara receptorId. El sistema busca su acumulador y suma allí el vector. Si el receptor no existe, conviene informar un error en lugar de ignorarlo silenciosamente.
Al terminar, cada cuerpo obtiene una aceleración diferente según su resultante y su masa.
27.10 Aplicar pares de interacción
Una interacción entre A y B produce dos fuerzas opuestas sobre receptores diferentes. La implementación debe actualizar ambos acumuladores:
acum[A] += −FA→B
Si luego se analiza el sistema compuesto A+B, esas contribuciones internas se cancelan. Individualmente siguen siendo esenciales para obtener la aceleración de cada cuerpo.
Aplicar solo una mitad del par viola la conservación interna del modelo y puede acelerar artificialmente el centro de masa del conjunto.
27.11 Orden de suma y precisión
Matemáticamente, la suma vectorial es conmutativa. En punto flotante, cambiar el orden puede producir diferencias diminutas cuando se combinan valores de escalas muy distintas.
Para simulaciones habituales basta con:
- Usar siempre el mismo orden para obtener resultados reproducibles.
- Evitar unidades que generen magnitudes extremas innecesarias.
- Comparar con tolerancias y no mediante igualdad exacta.
- Investigar sumas compensadas si la precisión acumulada es crítica.
Una diferencia de redondeo pequeña no debe confundirse con una fuerza física faltante.
27.12 Resultado rápido y registro de contribuciones
El acumulador mínimo solo conserva dos números. Para depurar conviene mantener además un registro temporal de contribuciones:
El registro permite responder por qué se mueve un cuerpo y comprobar el diagrama de cuerpo libre. Puede desactivarse en producción si su costo de memoria no se justifica.
27.13 Resultante cero y restricciones
Si el acumulador termina en cero, la aceleración calculada es cero. Esto puede representar equilibrio o una cancelación instantánea de fuerzas dependientes del estado.
Las fuerzas de restricción, como normales y tensiones, deben evaluarse antes del resultado final. No se obtiene una normal simplemente sumando fuerzas conocidas: a menudo su valor surge de imponer la condición cinemática del contacto.
27.14 Actividad interactiva: acumular tres fuerzas
Modificá dos fuerzas y la gravedad. El laboratorio reinicia el acumulador, suma las tres contribuciones y calcula la aceleración.
Laboratorio del acumulador
Las flechas F₁, F₂ y P se suman para formar FR; la aceleración tiene su misma dirección.
27.15 Implementar el acumulador con JavaScript
Un acumulador pequeño puede exponer operaciones explícitas de reinicio y suma:
function crearAcumulador() {
return {
x: 0,
y: 0,
reiniciar() {
this.x = 0;
this.y = 0;
},
agregar(fuerza) {
if (!Number.isFinite(fuerza.x) || !Number.isFinite(fuerza.y)) {
throw new TypeError('La fuerza debe tener componentes finitas');
}
this.x += fuerza.x;
this.y += fuerza.y;
}
};
}
const acumulador = crearAcumulador();
acumulador.agregar({ x: 30, y: 20 });
acumulador.agregar({ x: -10, y: 5 });
console.log({ x: acumulador.x, y: acumulador.y }); // { x: 20, y: 25 }La aceleración se calcula sin mutar el acumulador:
function calcularAceleracion(cuerpo, fuerzaResultanteN) {
if (!cuerpo.movil) return { x: 0, y: 0 };
if (!(cuerpo.masaInversa > 0)) {
throw new RangeError('La masa inversa móvil debe ser positiva');
}
return {
x: fuerzaResultanteN.x * cuerpo.masaInversa,
y: fuerzaResultanteN.y * cuerpo.masaInversa
};
}
const cuerpo = { movil: true, masaInversa: 0.2 };
console.log(calcularAceleracion(cuerpo, { x: 20, y: -24.05 }));
// { x: 4, y: -4.8100000000000005 }27.16 Estrategia de implementación y pruebas
- Crear un acumulador independiente para cada cuerpo.
- Reiniciarlos todos al comenzar la evaluación del instante.
- Evaluar cada interacción con la misma instantánea del mundo.
- Verificar el receptor y sumar sus componentes.
- Calcular aceleraciones después de terminar todas las sumas.
- Conservar opcionalmente un registro para diagnóstico.
Pruebas mínimas:
- Sumar vectores conocidos y comparar el resultado.
- Reiniciar y comprobar que ambas componentes vuelven a cero.
- Cambiar el orden de fuerzas y obtener el mismo resultado dentro de una tolerancia.
- Rechazar
NaNe infinito. - Aplicar un par opuesto a dos cuerpos y verificar que la resultante global sea cero.
- Confirmar aceleración cero para un cuerpo inmóvil.
27.17 Errores frecuentes y ejercicios
Errores frecuentes
- No reiniciar el acumulador entre evaluaciones.
- Reemplazar el vector en vez de sumar una contribución.
- Mezclar fuerzas pertenecientes a receptores diferentes.
- Calcular aceleración antes de evaluar todas las interacciones.
- Modificar el estado desde una función de fuerza.
- Dividir por masa cero o permitir que
NaNse propague.
Ejercicios propuestos
- Sumá las fuerzas
(12; −4) N,(−7; 9) Ny(5; −3) N. - Calculá la aceleración del ejercicio anterior para una masa de 2 kg.
- Una masa de 5 kg recibe
(30; 20) N,(−10; 5) Ny su peso terrestre. Calculá resultante y aceleración. - Explicá qué ocurre si el acumulador del ejercicio anterior no se reinicia durante tres evaluaciones idénticas.
- La interacción entre A y B genera sobre B la fuerza
(8; −6) N. Indicá qué vector debe acumularse sobre A. - Un cuerpo inmóvil acumula
(100; −50) N. ¿Qué aceleración devuelve el modelo con masa inversa cero?
Ver soluciones
ΣF = (12 − 7 + 5; −4 + 9 − 3) = (10; 2) N.a = (10; 2)/2 = (5; 1) m/s².- El peso es
(0; −49,05) N; la resultante es(20; −24,05) Ny la aceleración(4; −4,81) m/s². - El acumulador terminaría en
(60; −72,15) N, tres veces la fuerza real, y produciría una aceleración ficticia triple. - Por la tercera ley, sobre A debe acumularse
(−8; 6) N. a = (100; −50) · 0 = (0; 0) m/s².
27.18 Ideas para recordar
- El acumulador representa la suma de fuerzas del instante, no una fuerza adicional.
- Debe reiniciarse antes de reevaluar todas las interacciones.
- Cada cuerpo necesita su propio acumulador.
- Todas las reglas deben leer un estado coherente y no modificarlo.
- La aceleración se calcula después de la suma mediante
a = ΣF/m. - Un registro de contribuciones facilita verificar y depurar el modelo.
En el próximo tema usaremos la aceleración resultante dentro de un bucle de simulación para actualizar velocidad y posición.