Cómo reducir los datos del sistema solar a valores simulables

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 F = GRAMO METRO metro / r 2 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.

No reduzca nada, pero haga lo que hace la NASA: ilrs.gsfc.nasa.gov/docs/2014/196C.pdf y use distancias en unidades astronómicas (AU), tiempo en segundos y masas en proporción relativa a cada uno. otro, no en kg.
@barrycarter Entonces, ¿qué formato de constante G debo usar en la ecuación F = GMM/r^2? Quiero decir, si uso la masa en proporciones relativas y longitudes en AU, las unidades constantes G habituales se vuelven obsoletas. Necesito convertirlo, pero ¿cómo lo hago con valores de masa relativa?
¿Tienes claro cómo funciona la conversión de unidades? Por ejemplo, si te dan el valor de la constante gravitacional en unidades de metros ^ 3 / (kilogramos * segundos ^ 2), ¿sabrías cómo convertir eso al valor de la constante gravitacional en unidades de AU ^ 3 / (masas terrestres * años ^ 2)?

Respuestas (3)

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 :

  • Hora : Día. Esto probablemente no sea demasiado importante, así que siéntase libre de usar segundos aquí. (Después de todo, es solo una diferencia de 5 órdenes de magnitud).
  • Masa : Hay varias convenciones, pero la que personalmente he visto más es la de las masas solares. Dado que está modelando nuestro sistema solar, es una referencia conveniente.
  • Longitud : definitivamente usaría unidades astronómicas. (¡Qué nombre tan apropiado!)

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.

Gracias por la respuesta. Sí, usar au tiene mucho más sentido. Pero todavía hay algo que me molesta. En la página wiki que vinculaste, 1 masa solar es 1.988*E30 y GM☉ es 1.327 × E20 kg m3s−2 Entonces está en formato de metros y kilogramos. Como estoy usando la ecuación F=GMm/r^2; ¿No debería convertir el formato G a au y masa solar si estoy usando au en r (distancia) y masa solar en masas corporales? Quiero decir que es básicamente el mismo problema con el problema de escala que mencioné en la pregunta principal. Hay algo de lo que no puedo convencerme al respecto, y no sé por qué.
Para que quede más claro: si revisó mi hoja de Excel, mientras estoy reduciendo las longitudes, también estoy reduciendo las masas, por lo que las densidades corporales siguen siendo las mismas. ¿Es esto realmente necesario? La longitud y la masa son dos unidades independientes, no deberían afectarse entre sí cuando reduzca la escala. Pero por otro lado, la densidad debe permanecer igual. Entonces, ¿son dependientes entre sí por densidad después de todo?
No necesita preocuparse por la densidad en absoluto. Simplemente convierta sus unidades hasta que tengan escalas manejables.

Considere una órbita casi circular. De media, v = 2 π r / T , y la fuerza gravitacional equilibra la fuerza centrífuga:

GRAMO METRO metro r 2 = metro v 2 r = 4 π 2 metro r T 2
Resolver GRAMO y valores sustitutivos para la órbita de la Tierra alrededor del Sol:
GRAMO = 4 π 2 r 3 METRO T 2 = 4 π 2 A tu 3 METRO   y 2
Si prefiere unidades de día, use un factor de conversión para cancelar los años:
GRAMO = 39.5 A tu 3 METRO   y 2 ( 1   y 365.25   d ) 2 = 2.96 × 10 4 A tu 3 METRO   d 2
El método de etiqueta de factor también funciona si comienza con el valor MKS:
GRAMO = 6.67 × 10 11 metro 3 k gramo   s 2 ( 1   A tu 1.496 × 10 11   metro ) 3 ( 1.99 × 10 30   k gramo 1   METRO ) ( 86400   s 1   d ) 2 = 2.96 × 10 4 A tu 3 METRO   d 2
Las pruebas de validación dirán si su simulación funciona correctamente. Configure una variedad de sistemas simples en los que tenga una idea clara de lo que debería suceder y luego verifique lo que realmente sucede.

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

"sol.Masa = 1.998855e30;" Eso todavía no está reducido...
@Hohmannfan Como dije, usé valores SI, eso no se redujo.
Lo que quiero decir es que en muchos de los cálculos requeridos, tienes que multiplicar varios números de ese tipo de magnitud, antes de volver a los números razonables. Aunque la constante en sí está dentro de los límites, aún pueden causar errores inesperados en los cálculos.
@Hohmannfan, le sugiero que lea algunos recursos sobre el tema de la doble precisión (flotadores de 64 bits), incluso para valores como la masa del sol con 10 ^ 30, la precisión sigue siendo mejor que 0.0001 kg (si 1 = 1 kg)
Bien, al exponente se le asignan 11 bits, y eso sigue siendo una magnitud de 4 bits mayor que el peor ejemplo de cálculo que se me ocurre. Punto a favor.