De acuerdo, estoy muy avergonzado de preguntar esto, especialmente cuando estudio física geniualmente, pero hay algo que me molesta con la simulación en la que estoy trabajando.
Estoy recreando el sistema solar en una simulación de n cuerpos que programé antes. Y tengo un problema con la reducción de los datos solares. Entonces, incluso si uso kg y km para las unidades métricas, los valores son mucho más grandes de lo que las variables pueden contener en la programación. Además, como algunos de ustedes saben, cuanto mayor es el valor, mayor es el error de coma flotante que comete. (ruido de error en los datos) También hace que sea más lento de procesar.
Decidí reducir la escala de los datos con un punto de referencia y, para eso, tomé el radio de la Tierra como 1 unidad. Y redujo todas las demás distancias y radios de acuerdo con él. (Entonces, una unidad es 6371 km solo para ser claros)
Pero no estoy seguro de si debería reducir la masa o no. Mi sentido común dice que debo reducir la masa para que la densidad de cada cuerpo permanezca igual. Así que tomé la densidad y calculé un nuevo valor de masa para cada cuerpo, con el nuevo radio reducido. Pero de alguna manera no puedo convencerme de si es verdad o no. Así que aquí estoy, preguntándote :) ¿Debería también reducir la masa?
PD.1: Solía usar ecuación para los cálculos como de costumbre. (Iterándolo a través de cada par de cuerpos)
Si hay otros programadores como yo interesados en hacer una simulación como esta, ¿cómo solucionaste este problema de tamaño de datos? ¿Existen mejores soluciones que reducir los valores?
PD. He creado un archivo de Excel que hace la conversión de escala. Así que estoy compartiendo la hoja en OneDrive. ( http://1drv.ms/1NIekGo ) Si puede verificar mis cálculos y valores, también sería muy útil para mí. Gracias por cualquier ayuda.
Como mencionó barrycarter en su comentario, debería preocuparse más por las unidades y menos por la escala.
En general, es mejor ceñirse a las unidades convencionales que la gente reconoce. (Mantendrá su cabeza en orden y facilitará que otros revisen su trabajo). En astronomía, estas son un poco diferentes a las unidades SI estándar, ya que las cosas son, digamos , grandes y los números se salen de control. rápidamente (como usted ha notado). Aquí hay algunas unidades sugeridas en la página de Wikipedia del sistema astronómico de unidades :
Si se apega a estas unidades, debería poder limitar el error debido al redondeo y reducir la carga computacional de los números grandes.
Considere una órbita casi circular. De media, , y la fuerza gravitacional equilibra la fuerza centrífuga:
Yo mismo programé uno hace algún tiempo. Usé unidades SI completas en combinación con dobles (números flotantes de 64 bits). Funcionan muy bien para la escala de nuestro sistema solar y siguen siendo extremadamente precisos.
var sun = new Star();
sun.Position = new Vector3D(0,0,0);
sun.Velocity = new Vector3D(0,0,0);
sun.Mass = 1.998855e30;
var earth = new Planet();
earth.Mass = 5.9722e24;
earth.Position = new Vector3D(0, 149.6e9, 0);
earth.Velocity = new Vector3D(29780,0,0);
system.World.Objects.Add(sun);
system.World.Objects.Add(earth);
Si está interesado, mi código para esta simulación está en github: https://github.com/RononDex/Simulation
La simulación en sí está en la subcarpeta.Simulation.Testing
usuario21
viejoberkay
hipnótico