Okay, ich schäme mich ernsthaft dafür, das zu fragen, besonders wenn ich eigentlich Physik studiere, aber es gibt etwas, das mich an der Simulation stört, an der ich arbeite.
Ich erschaffe das Sonnensystem in einer n-Körper-Simulation, die ich zuvor programmiert habe. Und ich habe ein Problem mit dem Herunterskalieren der Sonnendaten. Selbst wenn ich kg und km als metrische Einheiten verwende, sind die Werte viel größer, als die Variablen in der Programmierung aufnehmen können. Wie einige von Ihnen wissen, ist der Gleitkommafehler größer, je größer der Wert ist. (Fehlerrauschen in Daten) Außerdem macht es die Verarbeitung langsamer.
Ich beschloss, die Daten mit einem Referenzpunkt zu verkleinern, und nahm dafür den Erdradius als 1 Einheit. Und jede andere Entfernung und jeden Radius entsprechend verkleinert. (Eine Einheit ist also 6371 km, nur um das klarzustellen)
Aber ich bin mir nicht sicher, ob ich die Masse verkleinern soll oder nicht. Mein gesunder Menschenverstand sagt, dass ich die Masse verkleinern sollte, damit die Dichte jedes Körpers gleich bleiben sollte. Also nahm ich die Dichte und berechnete einen neuen Massenwert für jeden Körper mit dem neuen verkleinerten Radius. Aber ich konnte mich irgendwie nicht davon überzeugen, ob es wahr ist oder nicht. Hier frage ich Sie also :) Soll ich auch die Masse verkleinern?
PS.1: Ich habe verwendet Gleichung für die Berechnungen wie gewohnt. (Iteration durch alle Körperpaare)
Wenn es andere Programmierer wie mich gibt, die daran interessiert sind, eine Simulation wie diese zu erstellen, wie haben Sie dieses Problem mit der Datengröße gelöst? Gibt es bessere Lösungen, als die Werte herunterzuskalieren?
PS. Ich habe eine Excel-Datei erstellt, die die Skalierungskonvertierung durchführt. Also teile ich das Blatt in OneDrive. ( http://1drv.ms/1NIekGo ) Wenn Sie meine Berechnungen und Werte überprüfen können, wäre ich auch sehr hilfreich für mich. Danke für jede Hilfe.
Wie Barrycarter in seinem Kommentar erwähnte, sollten Sie sich mehr mit Einheiten und weniger mit Maßstäben befassen.
Im Allgemeinen ist es am besten, sich an herkömmliche Einheiten zu halten, die die Leute kennen. (Das hält Ihren Kopf bei klarem Verstand und erleichtert es anderen, Ihre Arbeit zu überprüfen.) In der Astronomie unterscheiden sich diese ein wenig von den Standard-SI-Einheiten, da die Dinge – sagen wir mal – groß sind und die Zahlen außer Kontrolle geraten schnell (wie Sie bemerkt haben). Hier sind einige Einheiten, die auf der Wikipedia-Seite zum astronomischen Einheitensystem vorgeschlagen werden :
Wenn Sie sich an diese Einheiten halten, sollten Sie in der Lage sein, Rundungsfehler zu begrenzen und die Rechenlast großer Zahlen zu reduzieren.
Stellen Sie sich eine nahezu kreisförmige Umlaufbahn vor. Im Durchschnitt, , und die Gravitationskraft gleicht die Zentrifugalkraft aus:
Ich habe vor einiger Zeit selbst einen programmiert. Ich habe volle SI-Einheiten in Kombination mit Doubles (64-Bit-Floating-Zahlen) verwendet. Sie funktionieren hervorragend für den Maßstab unseres Sonnensystems und sind immer noch extrem präzise.
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);
Wenn Sie interessiert sind, ist mein Code für diese Simulation auf Github: https://github.com/RononDex/Simulation
Die Simulation selbst befindet sich im UnterordnerSimulation.Testing
Benutzer21
Alt Berkay
Hypnosifl