Me preguntaba si podría usar la simulación de Barnes-Hut más allá de lo que originalmente se pretendía. Para muchos algoritmos de Barnes-Hut, las fuerzas solo se consideran para un solo cuadrante, el centroide o el cuerpo estelar. Luego, el algoritmo se ramifica a partir de ahí, afectando áreas de influencia y cuadrantes recursivamente. Por ejemplo:
Parece que el algoritmo de Barnes-Hut anterior se basó en el cuerpo central de la animación.
Mi pregunta:
¿La ejecución de Barnes-Hut iterativamente en todos los cuerpos, tratando cada cuerpo a su vez como el centroide, daría como resultado una representación precisa de un problema de n cuerpos donde se considera la fuerza de gravedad suma de todos los cuerpos? ¿O estoy malinterpretando exactamente qué es el algoritmo de Barnes-Hut?
Si no entiendo bien el algoritmo, ¿alguien puede volver a explicar exactamente cómo funciona este algoritmo? Para cualquiera que entienda de programación hasta cierto punto, ¿alguien podría mirar este proyecto y decirme si me estoy perdiendo algo importante aquí? Es una implementación de Java GitHub del algoritmo Barnes-Hut , pero lo he iterado en todos los cuerpos (lo que puede ser increíblemente estúpido). Además... sí, sé que no es así como funciona el tiempo. Nota: Crédito debido al profesor original, como se indica en GitHub.
Además, para aquellos que no son expertos en tecnología, ¿pueden mirar este GIF y ver algo intrínsecamente incorrecto? El rojo es menos masa, el blanco es más masa; amarillo son dos o más masas colisionadas. Una vez que aparece el tercer punto amarillo (masa combinada), las cosas se ponen interesantes. No puedo decir si interesante bueno, o interesante... malo.
Se sabe razonablemente que a distancias lo suficientemente grandes, la fuerza entre un grupo de objetos y otro objeto es esencialmente equivalente a la fuerza entre el centro de masa del grupo y el otro objeto:
El algoritmo de Barnes-Hut aplica esto a -simulaciones de cuerpo al dividir el dominio en grupos de tamaño razonable y, por lo tanto, reducir la cantidad de cuerpos efectivos para iterar, en lugar de sumar partículas veces. Por lo que puedo ver/decir, el -Las simulaciones corporales que utilizan el algoritmo BH son bastante precisas, aunque hay mejores algoritmos en términos de velocidad (p. ej., método multipolar rápido u otros esquemas híbridos).
¿La ejecución de Barnes-Hut iterativamente en todos los cuerpos, tratando cada cuerpo a su vez como el centroide, daría como resultado una representación precisa de un problema de n cuerpos donde se considera la fuerza de gravedad suma de todos los cuerpos? ¿O estoy malinterpretando exactamente qué es el algoritmo de Barnes-Hut?
Su propuesta esencialmente quiere volver a la suma de partículas veces, lo que equivaldría a no usar BH en absoluto. Será preciso, aunque probablemente no mucho más preciso que BH, y ciertamente sería muy lento.
Entonces, al cuestionar si uno puede aplicar BH iterativamente a todos los cuerpos, sospecho que está malinterpretando el algoritmo BH. El objetivo es reducir la carga de trabajo requerida para encontrar las fuerzas sobre las partículas en cada paso de tiempo. Realmente no quiere aumentar el número de clústeres, quiere que se minimice porque haciendo un actualizar cada paso de tiempo es muy, muy lento.
Urna de pulpo mágico
kyle kanos
Urna de pulpo mágico
kyle kanos
kyle kanos
Urna de pulpo mágico
O(n^2log(n))
así-- ¿verdad?O(n)
xO(nlog(n))
?Urna de pulpo mágico
O(nlog(n))
las tareas para cada cuerpo pueden ejecutarse en paralelo. Por supuesto, esto tiene un límite superior de cuán alton
puede llegar a depender de la arquitectura. Simplemente se consideró si la física y la lógica de la interacción de partículas seguían siendo sólidas dado el método iterativo.kyle kanos
Urna de pulpo mágico
N
y resolver los problemas reales de n cuerpos, en términos de complejidad de tiempo y precisión? Sería negligente si no te pidiera algoritmos alternativos que conozcas, pareces estar bastante bien informado, y este es el primer algoritmo de física con el que honestamente me metí en cualquier capacidad. Gracias por tomarte tu tiempo :).