RegistrierenRegistrieren   LoginLogin   FAQFAQ    SuchenSuchen   
Newton's Gravitationsgesetz und die Zeit
 
Neue Frage »
Antworten »
    Foren-Übersicht -> Astronomie
Autor Nachricht
npc299792
Gast





Beitrag npc299792 Verfasst am: 22. Jun 2022 21:46    Titel: Newton's Gravitationsgesetz und die Zeit Antworten mit Zitat

Hallo liebe Freunde der Astrophysik,

ich bin gerade dabei eine kleine Simulation des Sonnensystem zu programmieren in der mittels des Newton´schen Gravitationsgesetzes die Planeten animiert werden. Durch rumspielen mit den Werten für Masse und Geschwindigkeit schaffe ich es auch die Planeten auf stabile Umlaufbahnen zu bringen.

Dabei bin ich auf ein Verständnisproblem gestoßen zu dem ich mit Google nichts gefunden habe: Auf welche Zeitspanne bezieht sich F?

In der Realität gibt es dieses "Problem" vermutlich nicht weil die Kraft konstant wirkt aber im Computer muss ich in Schritten arbeiten und je nachdem wie oft ich diese Schritte pro Sekunde ausführe ändert sich das Ergebnis.

Deshalb habe ich eine Zeitkomponente eingebaut, ich messe die Zeit zwischen 2 Frames (idR 16ms), teile diesen Wert durch 1000 und multipliziere das Ergebnis mit F. Damit lege ich F auf 1 Sekunde fest aber ist das korrekt?
TomS
Moderator


Anmeldungsdatum: 20.03.2009
Beiträge: 17902

Beitrag TomS Verfasst am: 22. Jun 2022 21:48    Titel: Antworten mit Zitat

Das ist keine Frage der Physik sondern der Numerik.
_________________
Niels Bohr brainwashed a whole generation of theorists into thinking that the job (interpreting quantum theory) was done 50 years ago.
npc299792
Gast





Beitrag npc299792 Verfasst am: 22. Jun 2022 22:06    Titel: Antworten mit Zitat

TomS hat Folgendes geschrieben:
Das ist keine Frage der Physik sondern der Numerik.

Ok, dann werde ich mich da mal einlesen. Vielen Dank schon mal Thumbs up!

Die Frage wäre dann in einem Mathematik Forum besser aufgehoben falls ich nicht weiter komme?
TomS
Moderator


Anmeldungsdatum: 20.03.2009
Beiträge: 17902

Beitrag TomS Verfasst am: 22. Jun 2022 22:09    Titel: Antworten mit Zitat

Nein, es gibt durchaus Leute hier, die sich mit der numerischen Lösung von Differentialgleichungssystemen auskennen.

Speziell für dein Problem solltest du aber im Internet fertige Algorithmen oder zumindest die Methoden finden.

_________________
Niels Bohr brainwashed a whole generation of theorists into thinking that the job (interpreting quantum theory) was done 50 years ago.
npc299792
Gast





Beitrag npc299792 Verfasst am: 22. Jun 2022 23:06    Titel: Antworten mit Zitat

So, nach etwas einlesen und Googlen bin ich fündig geworden. Auch wenn es hier nicht rein passte bedanke ich vielmals für den entscheidenden Hinweis Gott
TomS
Moderator


Anmeldungsdatum: 20.03.2009
Beiträge: 17902

Beitrag TomS Verfasst am: 22. Jun 2022 23:14    Titel: Antworten mit Zitat

Und was genau hast du jetzt gefunden?
_________________
Niels Bohr brainwashed a whole generation of theorists into thinking that the job (interpreting quantum theory) was done 50 years ago.
npc299792



Anmeldungsdatum: 26.06.2022
Beiträge: 8

Beitrag npc299792 Verfasst am: 26. Jun 2022 12:05    Titel: Antworten mit Zitat

Hallo Tom,

ich hatte einen Java Code gefunden den ich leicht adaptieren könnte weil mein Projekt in Javascript geschrieben ist. Habe mich inzwischen allerdings dagegen entschieden, die rekursiven Approximations Berechnungen würden sich massiv auf die Performance auswirken. Da das ganze später mal ein Spiel werden soll in dem tausende Objekte auf diese Art animiert werden, ist das Kosten/Nutzen Verhältnis nicht mehr gegeben.

Aus dem gleichen Grund nutze ich auch nicht die realen Werte für Masse und Entfernung da die Zahlen so riesig sind. Wie ich schon herausgefunden habe ist nur das Verhältnis der Massen zueinander wichtig Augenzwinkern

------------

Allerdings bin ich noch auf ein anderes Phänomen gestoßen auf das ich mir keinen Reim machen kann, passt wohl auch besser hier hinein Augenzwinkern Bei meiner Recherche bin auf diese Formel(n) gestoßen:

vx(t + Δt) = vx(t) - (G M x/r³) Δt
vy(t + Δt) = vy(t) - (G M y/r³) Δt

Nachdem ich sie probeweise eingebaut hatte konnte keinen Unterschied zu meiner Version feststellen und war begeistert weil ich damit eine sin, cos und arctan Berechnung einsparen könnte. Dann fiel mir auf das nur eine Masse darin vorkommt, etwas irritiert weil das Ergebnis gleich war wechselte ich wieder zu meiner vorigen Version zurück:

f(t) = G M1 M2 / r²
vx(t + Δt) = vx(t) + cos(a(t)) / M2 f(t) Δt
vy(t + Δt) = vy(t) + sin(a(t)) / M2 f(t) Δt

Dann habe ich festgestellt das die Masse des Planeten (M2) keinen Einfluss auf seine Umlaufbahn hat. Das muss doch ein Fehler in meinem Code sein, oder? Die Masse des Planeten sollte sich doch auf die Umlaufbahn auswirken da er eine höhere kinetische Energie hat grübelnd
ML



Anmeldungsdatum: 17.04.2013
Beiträge: 3384

Beitrag ML Verfasst am: 26. Jun 2022 12:44    Titel: Antworten mit Zitat

Hallo,

npc299792 hat Folgendes geschrieben:

Allerdings bin ich noch auf ein anderes Phänomen gestoßen auf das ich mir keinen Reim machen kann, passt wohl auch besser hier hinein Augenzwinkern Bei meiner Recherche bin auf diese Formel(n) gestoßen:

vx(t + Δt) = vx(t) - (G M x/r³) Δt
vy(t + Δt) = vy(t) - (G M y/r³) Δt


Hier hast Du die Formeln , und als Näherung für die Definitionsgleichung der Beschleunigung benutzt.
Wenn das ganze numerisch etwas besser werden soll, kannst Du Dir überlegen, ob Du eine andere Approximation des Ableitungsoperators nutzen willst.
Im ersten Skript stehen Alternativen zu der o. g. Diskretisierung drin:
https://angemath.unileoben.ac.at/lehre/numerische-methoden-ii
Wenn die Genauigkeit für Dein Projekt reicht, ist aber alles ok.

Zitat:

Dann habe ich festgestellt das die Masse des Planeten (M2) keinen Einfluss auf seine Umlaufbahn hat. Das muss doch ein Fehler in meinem Code sein, oder?

Die Masse des Planeten hat einen Einfluss auf das Geschehen, da der Planet die Bahn des Sterns auch beeinflusst. Dieser Einfluss ist aber indirekt. Die Beschleunigung des Planeten hängt nicht davon ab.


Viele Grüße
Michael
npc299792



Anmeldungsdatum: 26.06.2022
Beiträge: 8

Beitrag npc299792 Verfasst am: 26. Jun 2022 16:02    Titel: Antworten mit Zitat

Hallo ML,

dieses ist die Beschleunigung, oder? Ich muss gestehen das ich derzeit keinerlei solche Komponente in meinem Script habe (das a(t) in meiner Formel oben ist der Winkel zwischen den beiden Massen). Ich vermute es ist eine zusätzliche Variable in der die Beschleunigung, unabhängig von der Geschwindigkeit, gespeichert und bearbeitet werden kann grübelnd

Es wäre evtl noch erwähnenswert das mein Projekt nur 2D ist, dies ist eine bewusste Gamedesign Entscheidung.

ML hat Folgendes geschrieben:

Die Masse des Planeten hat einen Einfluss auf das Geschehen, da der Planet die Bahn des Sterns auch beeinflusst. Dieser Einfluss ist aber indirekt. Die Beschleunigung des Planeten hängt nicht davon ab.l

Das sich die Gravitation des Planeten auch auf den Stern auswirkt ist mir bewusst, ich habe es aktuell noch nicht eingebaut weil ich zuerst die Planeten sicher um den Stern animieren wollte, diese beeinflussen sich zB schon gegenseitig wie ich auch an den Pendelbewegungen schön erkennen kann.

Wenn aber der Planet keine Kraft auf den Stern ausübt hat seine Masse keinen Einfluss auf seine Umlaufbahn?
TomS
Moderator


Anmeldungsdatum: 20.03.2009
Beiträge: 17902

Beitrag TomS Verfasst am: 26. Jun 2022 16:45    Titel: Antworten mit Zitat

Du solltest z besseren Verständnis, was du da tust, von den Bewegungsgleichungen ausgehen.

Für jeden Planeten i mit Masse m_i gelten ganz allgemein die Newtonschen Bewegungsgleichungen







wobei r, v und a die Vektoren für Position, Geschwindigkeit und Beschleunigung bezeichnen. Diese sind zu integrieren.

Die F_i sind die Summe aller Kräfte, die von den anderen Planeten k auf den jeweils betrachteten Planeten i ausgeübt werden:



Speziell für dein Problem sind dies



Die e_ik stehen für die Einheitsvektoren zwischen dem i-ten und dem k-ten Planeten. Das entspricht gerade



Eingesetzt in die Bewegungsgleichungen lautet dies



wobei sich die Masse des jeweils betrachteten Planeten herauskürzt:


_________________
Niels Bohr brainwashed a whole generation of theorists into thinking that the job (interpreting quantum theory) was done 50 years ago.
TomS
Moderator


Anmeldungsdatum: 20.03.2009
Beiträge: 17902

Beitrag TomS Verfasst am: 26. Jun 2022 16:52    Titel: Antworten mit Zitat

Noch etwas:

Du solltest m.E. auf vernünftige dimensionslose Größen (griechische Buchstaben) skalieren, in dem du jeweils eine typische Skala für Länge, Zeit und Masse einführst (Großbuchstaben)









Für deine Gleichungen bedeutet dies


_________________
Niels Bohr brainwashed a whole generation of theorists into thinking that the job (interpreting quantum theory) was done 50 years ago.
DrStupid



Anmeldungsdatum: 07.10.2009
Beiträge: 5029

Beitrag DrStupid Verfasst am: 26. Jun 2022 17:18    Titel: Antworten mit Zitat

npc299792 hat Folgendes geschrieben:
Da das ganze später mal ein Spiel werden soll in dem tausende Objekte auf diese Art animiert werden, ist das Kosten/Nutzen Verhältnis nicht mehr gegeben.


Da der Rechenaufwand quadratisch mit der Zahl der Objekte steigt, wirst Du das mit JavaScript wohl sowieso nicht komplett simulieren können. Ich würde an Deiner Stelle überlegen, welche Wechselwirkungen mit gutem Gewissen vernachlässigt werden können. Das wäre beispielsweise die Kraft der Planeten auf den oder die Sterne sowie die Kraft zwischen hinreichend weit voneinander entfernten Planeten. Ersteres lässt sich einfach ignorieren, bei letzterem muss man eventuell kreativ werden (z.B. mit einer Linked-Cell Methode). Für das, was dann noch übrig bleibt, brauchst Du dann einen Integrator, der bei vorgegebener Genauigkeit und Schrittweite möglichst wenige Beschleunigungs-Berechnungen braucht. Vielleicht hat da ja jemand Erfahrung.

npc299792 hat Folgendes geschrieben:

f(t) = G M1 M2 / r²
vx(t + Δt) = vx(t) + cos(a(t)) / M2 f(t) Δt
vy(t + Δt) = vy(t) + sin(a(t)) / M2 f(t) Δt


Ich halte es für keine gute Idee, sowohl mit XY-Komponenten, als auch mit Winkeln zu arbeiten. Spätestens für die neuen Positionen musst du beides ineinander umrechnen und Winkelfunktionen sind langsam. Am besten rechnest Du nur mit den XY-Komponenten von Positionen, Geschwindigkeiten und Beschleunigungen.

Die Verwendung von Winkel macht meiner Meinung nach nur Sinn, wenn Du eine bestimmte Objekthierarchie vorgibst - z.B. Mond A umkreist Planet B, Planet B umkreist Stern C usw. Wenn alle Körper wild durcheinander wuseln können, dann gibt es so eine feste Zurdnung nicht. Es kommt hier also darauf an, was Du genau vor hast.
ML



Anmeldungsdatum: 17.04.2013
Beiträge: 3384

Beitrag ML Verfasst am: 26. Jun 2022 17:55    Titel: Antworten mit Zitat

Hallo,

ja, a ist die Beschleunigung.

npc299792 hat Folgendes geschrieben:

Wenn aber der Planet keine Kraft auf den Stern ausübt hat seine Masse keinen Einfluss auf seine Umlaufbahn?

Oh, da hast Du bestimmt was missverstanden, was ich geschrieben habe.

Der Planet übt die gleiche Kraft auf den Stern aus wie umgekehrt.
Da die Masse des Sterns normalerweise viel größer als die des Planeten ist, stört das den Stern nicht sonderlich (a=F/m wird bei großem m klein).

Wenn Du die Sache verallgemeinern willst, wählst Du am besten als Bezugssystem den Schwerpunkt von allem, was es in dem Weltraum so gibt und berechnest für jedes der Objekte (inkl. Zentralgestirn) die Geschwindigkeit in Bezug auf dieses Bezugssystem aus.


Viele Grüße
Michael
npc299792



Anmeldungsdatum: 26.06.2022
Beiträge: 8

Beitrag npc299792 Verfasst am: 26. Jun 2022 21:23    Titel: Antworten mit Zitat

TomS hat Folgendes geschrieben:
Du solltest z besseren Verständnis, was du da tust, von den Bewegungsgleichungen ausgehen.

[..]

Hallo Tom,

vielen Dank für diesen Beitrag, da muss ich mich erst mal durch arbeiten Augenzwinkern Bis auf ein etwas eingerostetes Abi Mathe bin ich da nicht mehr so ganz Fit. Besonders diese Formelschreibweisen kann ich schwer lesen, als Quellcode fällt mir das irgendwie deutlich leichter Big Laugh
npc299792



Anmeldungsdatum: 26.06.2022
Beiträge: 8

Beitrag npc299792 Verfasst am: 26. Jun 2022 21:29    Titel: Antworten mit Zitat

TomS hat Folgendes geschrieben:
Noch etwas:

Du solltest m.E. auf vernünftige dimensionslose Größen (griechische Buchstaben) skalieren, in dem du jeweils eine typische Skala für Länge, Zeit und Masse einführst (Großbuchstaben)

[..]

Diese habe ich bereits implementiert, neben der Gravitationskonstante kann ich den Raum, Zeit und Massen bereits nach belieben skalieren, das scheint auch fehlerlos zu funktionieren *aufHolzKlopf*
npc299792



Anmeldungsdatum: 26.06.2022
Beiträge: 8

Beitrag npc299792 Verfasst am: 26. Jun 2022 21:45    Titel: Antworten mit Zitat

DrStupid hat Folgendes geschrieben:
Da der Rechenaufwand quadratisch mit der Zahl der Objekte steigt, wirst Du das mit JavaScript wohl sowieso nicht komplett simulieren können. Ich würde an Deiner Stelle überlegen, welche Wechselwirkungen mit gutem Gewissen vernachlässigt werden können. [..]

Ich weiß natürlich das die Perfomance von JS beschränkt ist aber es soll unbedingt im Browser spielbar sein. Überlegt habe ich mir bereits mehrere Methoden wie ich die Perfomance optimieren kann, so werden die Planeten, Monde & Asteroiden den Stern nicht beeinflussen und Asteroiden nicht Planeten und Monde. Für die stellaren Objekte wollte ich eine Quadtree ähnliche Methode einsetzen.

DrStupid hat Folgendes geschrieben:

Ich halte es für keine gute Idee, sowohl mit XY-Komponenten, als auch mit Winkeln zu arbeiten. Spätestens für die neuen Positionen musst du beides ineinander umrechnen und Winkelfunktionen sind langsam.

Ja, das ist mir bewusst, deshalb war ich ja von der anderen Methode so angetan weil da gar keine Winkelberechnungen mehr vorkommen Augenzwinkern


DrStupid hat Folgendes geschrieben:
[..]
Die Verwendung von Winkel macht meiner Meinung nach nur Sinn, wenn Du eine bestimmte Objekthierarchie vorgibst - z.B. Mond A umkreist Planet B, Planet B umkreist Stern C usw. Wenn alle Körper wild durcheinander wuseln können, dann gibt es so eine feste Zurdnung nicht. Es kommt hier also darauf an, was Du genau vor hast.

Letzteres ist zutreffend. Das Planeten, Monde und Asteroiden aus der Umlaufbahn geworfen bzw manipuliert werden können soll Bestandteil des Spiels werden.
npc299792



Anmeldungsdatum: 26.06.2022
Beiträge: 8

Beitrag npc299792 Verfasst am: 26. Jun 2022 21:58    Titel: Antworten mit Zitat

ML hat Folgendes geschrieben:

Der Planet übt die gleiche Kraft auf den Stern aus wie umgekehrt.
Da die Masse des Sterns normalerweise viel größer als die des Planeten ist, stört das den Stern nicht sonderlich (a=F/m wird bei großem m klein).

Aha, das die Masse des Planeten den Stern normalerweise nicht groß beeinflusst ist mir bekannt, deshalb werde ich es auch nicht einbauen um Leistung zu sparen. Aber auch wenn ich die Masse des Planeten ein vielfaches so hoch ansetze wie die des Sterns, ändert sich die Umlaufbahn des Planeten nicht. Wenn aber auf beide die gleiche Kraft wirkt wäre das ja korrekt solange der Planet keine Kraft auf den Stern ausübt, oder?

Der Stern bewegt sich übrigens nicht, ich weiß natürlich das er das in der Realität tun aber für mein Projekt ist dies nicht notwendig da ich ja keine komplette Galaxie animieren will Augenzwinkern

ML hat Folgendes geschrieben:

Wenn Du die Sache verallgemeinern willst, wählst Du am besten als Bezugssystem den Schwerpunkt von allem, was es in dem Weltraum so gibt und berechnest für jedes der Objekte (inkl. Zentralgestirn) die Geschwindigkeit in Bezug auf dieses Bezugssystem aus.

Das hatte ich mir auch schon überlegt, ich habe bereits mit einem Mehrfach Sternsystemen rumgespielt. Um die Performance zu verbessern ermittle ich den gemeinsamen Masseschwerpunkt der Sterne und lasse die Planeten um diesen kreisen.

Falls die Planeten aber den Sternen zu nahe kommen wird das inakkurat da sie sich mathematisch um einen Stern drehen der eigentlich gar nicht existiert und die existierenden Sterne nicht mehr beachten.
DrStupid



Anmeldungsdatum: 07.10.2009
Beiträge: 5029

Beitrag DrStupid Verfasst am: 26. Jun 2022 22:19    Titel: Antworten mit Zitat

npc299792 hat Folgendes geschrieben:
Für die stellaren Objekte wollte ich eine Quadtree ähnliche Methode einsetzen.


Das klingt nach Barnes-Hut-Algorithmus (https://de.wikipedia.org/wiki/Barnes-Hut-Algorithmus). Das lohnt sich aber erst bei sehr vielen Sternen.

Wenn sich Planeten, Monde oder Asteroiden gegenseitig aus der Bahn kegeln sollen, dann musst Du natürlich auch die Wechselwirkungen zwischen ihnen berücksichtigen. Dafür würde ich die bereits erwähnte Linked-Cell Methode empfehlen. Dabei zerlegt man den Raum in gleich große Zellen und berechnet nur die Kräfte zwischen Objekten in derselben oder angrenzenden Zellen. Die Größe der Zellen wird durch den Abstand bestimmt, ab dem man die Wechselwirkung vernachlässigt. Das macht man normalerweise nur bei kurzreichweitigen Kräften. Aber wenn man es auf Objekte begrenzt, die das Feld nur lokal dominieren können (also alles unterhalb von Sternen), dann geht das auch mit der Gravitation.

Da die Berechnung mit all den Vereinfachungen ohnehin nicht so genau ist und weil es für ein Spiel üblicherweise ausreicht, wenn das Ganze halbwegs realistisch aussieht, brauchst Du keinen besonders guten Integrator. Versuche es mal mit dem Leapfrog-Verfahren (https://de.wikipedia.org/wiki/Leapfrog-Verfahren).


Zuletzt bearbeitet von DrStupid am 26. Jun 2022 22:21, insgesamt einmal bearbeitet
npc299792



Anmeldungsdatum: 26.06.2022
Beiträge: 8

Beitrag npc299792 Verfasst am: 26. Jun 2022 22:20    Titel: Antworten mit Zitat

Ich möchte mich hiermit nochmal ausdrücklich für die Hilfe bedanken, ich bin schon fast etwas eingeschüchtert von der Kompetenz die mir hier entgegenschlägt Gott

Ich bin eigentlich Mediendesigner mit viel Programmiererfahrung und interessiere mich schon seit Jahren für Astronomie und Kosmologie aber es das erste mal das ich so direkt in die "Materie" eintauche. Damit ihr einen kleinen Eindruck von dem bekommen könnt wie das ganze aussieht habe ich hier ein paar Screenshots einer früheren Version hochgeladen:

Bild 1 Bild 2 Bild 3 Bild 4
(Vorschaubilder scheinen nicht zu funktionieren)

Dazu ist erwähnen das jedes neue Bild über das alte gerendert wird, dies ist sonst natürlich nicht der Fall aber es ist sehr hilfreich bei der Entwicklung und sieht schön aus. Texturen gibt es auch noch keine, es sind nur farbige Kreise deren Größe durch die Masse bestimmt wird.

Ich bin immer noch total fasziniert was alles mit solch, eigentlich simplen Mechaniken, möglich ist. Besonders diese "Schmetterlings-Flügelschlag Effekte" sind atemberaubend. Man brauch nur einen, scheinbar unbedeutenden, Wert zu ändern und schon entwickelt sich alles anders geschockt
npc299792



Anmeldungsdatum: 26.06.2022
Beiträge: 8

Beitrag npc299792 Verfasst am: 26. Jun 2022 22:28    Titel: Antworten mit Zitat

DrStupid hat Folgendes geschrieben:
npc299792 hat Folgendes geschrieben:
Für die stellaren Objekte wollte ich eine Quadtree ähnliche Methode einsetzen.


Das klingt nach Barnes-Hut-Algorithmus (https://de.wikipedia.org/wiki/Barnes-Hut-Algorithmus). Das lohnt sich aber erst bei sehr vielen Sternen.

Wenn sich Planeten, Monde oder Asteroiden gegenseitig aus der Bahn kegeln sollen, dann musst Du natürlich auch die Wechselwirkungen zwischen ihnen berücksichtigen. Dafür würde ich die bereits erwähnte Linked-Cell Methode empfehlen. Dabei zerlegt man den Raum in gleich große Zellen und berechnet nur die Kräfte zwischen Objekten in derselben oder angrenzenden Zellen. Die Größe der Zellen wird durch den Abstand bestimmt, ab dem man die Wechselwirkung vernachlässigt. Das macht man normalerweise nur bei kurzreichweitigen Kräften. Aber wenn man es auf Objekte begrenzt, die das Feld nur lokal dominieren können (also alles unterhalb von Sternen), dann geht das auch mit der Gravitation.

Da die Berechnung mit all den Vereinfachungen ohnehin nicht so genau ist und weil es für ein Spiel üblicherweise ausreicht, wenn das Ganze halbwegs realistisch aussieht, brauchst Du keinen besonders guten Integrator. Versuche es mal mit dem Leapfrog-Verfahren (https://de.wikipedia.org/wiki/Leapfrog-Verfahren).

Super, vielen Dank für die Tips, werde mir das auf jeden Fall genauer anschauen. Allerdings bin ich an dem Punkt noch nicht angekommen, ich muss erst mal die grundlegenden Himmels-Mechaniken hinkriegen Augenzwinkern
jmd



Anmeldungsdatum: 28.10.2012
Beiträge: 577

Beitrag jmd Verfasst am: 26. Jun 2022 23:06    Titel: Antworten mit Zitat

Interessant ist auch das 3 Körper Problem mit periodischen Lösungen
https://www.youtube.com/watch?v=8_RRZcqBEAc&t=50s
Neue Frage »
Antworten »
    Foren-Übersicht -> Astronomie