Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   Physikgesetze zur Simulation unseres Sonnensystemes (https://www.delphipraxis.net/143668-physikgesetze-zur-simulation-unseres-sonnensystemes.html)

Christian S. 28. Feb 2010 12:19

Re: Physikgesetze zur Simulation unseres Sonnensystemes
 
Zitat:

Zitat von himitsu
Zitat:

Zitat von Christian S.
Es reicht doch auch einfach, alle Vektorkomponenten sauber auszurechnen. Wozu noch mit irgendwelchen Einheitsvektoren und Beträgen hantieren, das macht's doch nur unnötig kompliziert.

Jupp, drum meinte ich ja, daß man es "einfach" auch nur auf 2 Werte reduzieren könnte, zusammen dann noch mit der Zeit dann müßte man sich nicht über genau physikalische regizieren, sondern könnte die Berechnungen einfach nur mit 3 einfachen "Pseudowerten" für Zeit, Kraft und Entfernung durchrechnen.

Du brauchst die Vektoren Ort und Geschwindigkeit. Also sechs Werte. Die Zeit musst Du nicht speichern. Und wieso Pseudowerte? Ist das so ein Aufwand, einfach die realen Werte zu nehmen? Man macht sich doch hinterher viel mehr Ärger, als man einspart!

Zitat:

Zitat von himitsu
> die Entfernung und Kräfte/Energien

Wenn man Anziehungskräfte und die Bewegungsenergie in der selben Einheit speichert, dann kann man diese dann direkt verrechnen, welche sehr gut in so'nen Double/Extendet reinpaßt.

Energie und Kräfte in der selben Einheit? :shock: Und wieder: Warum?? Was ersparst Du Dir damit?

Zitat:

Zitat von himitsu
Wenn das Model dann mal richtig läuft, dann kann man immernoch Umrechnungsfaktoren in reale physikalische Werte erstellen.

Das Modell läuft sofort richtig, wenn man einfach alles so macht, wie die Physik es hergibt. Und komplizierter wird es dadurch auch nicht, eher im Gegenteil.

jfheins 28. Feb 2010 12:35

Re: Physikgesetze zur Simulation unseres Sonnensystemes
 
Zitat:

Zitat von Christian S.
@jfheins: Deinen Formel-Anhang solltest Du nochmal prüfen, Du kommst da auf sowas wie F = irgendwas * F, was nur für F = 0 oder irgendwas = 1 gilt ;-)

Thx, geändert :)
Zitat:

Es reicht doch auch einfach, alle Vektorkomponenten sauber auszurechnen. Wozu noch mit irgendwelchen Einheitsvektoren und Beträgen hantieren, das macht's doch nur unnötig kompliziert.
Naja, ein paar Beträge bilden muss man schon ... und ansonsten natürlich vektoriell rechnen - macht das Leben einfacher


Zitat:

Zitat von himitsu
Jupp, drum meinte ich ja, daß man es "einfach" auch nur auf 2 Werte reduzieren könnte, zusammen dann noch mit der Zeit dann müßte man sich nicht über genau physikalische regizieren, sondern könnte die Berechnungen einfach nur mit 3 einfachen "Pseudowerten" für Zeit, Kraft und Entfernung durchrechnen.

Zur Eindeutigen Bestimmung der Bahn braucht man 6 Zahlen - ob man Position udn Geschwindigkeit (oder z.B. die Keplerelemente) dafür hernimmt ist erstmal egal. Aber für die Simulation sind die beiden Vektoren einfacher ;)

Taggs 5. Apr 2010 16:29

Re: Physikgesetze zur Simulation unseres Sonnensystemes
 
Hi,

ich habe ein kleines Problem, vielleicht einfach nur einen Denkfehler. Wenn ich z.B. aus Christian S.'s den Richtungsvektor vom Merkur am 11. Dezember 2001 nehme (0,022484267 0,001329795 -0,001620828) und folgendes berechne, müsste ich die Momentangeschwindigkeit bekommen, oder?

|(150/86400) * [0.022484267;0.001329795;-0.001620828]|

Ich habe den Richtungsvektor (in AU/Tag) mit 150/86400 multipliziert (AU/Tag -> km/s), das entspräche dann in etwa km/s, oder? Die Länge des Richtungsvektores wäre dann die Geschwindigkeit im km/s

Das Ergebnis der obigen Zeile entspricht dann: 3.92·10^-5 km/s und das kann ja nicht sein (Vergleich: Mittlere Orbitalgeschwindigkeit vom Merkur: 47,87 km/s [Quelle: Wikipedia])

Kann mir jemand helfen, wo mein Denkfehler / Rechenfehler liegt?

jfheins 5. Apr 2010 16:38

Re: Physikgesetze zur Simulation unseres Sonnensystemes
 
Richtungsvektor (in AU/Tag) / 86400 [s/Tag] * 149597870 [km/AU] = [km/s]

Eine Astronomische Einheit hat 150 Millionen Kilometer ;)

Taggs 6. Apr 2010 20:55

Re: Physikgesetze zur Simulation unseres Sonnensystemes
 
Danke dir, das sagt wohl alles aus: :wall:

:mrgreen:

Ein anderes Problem (ich glaube es ist eher ein physikalisches, daher nur Pseudocode):

Code:
# Mir liegen die Werte in den Grundeinheiten vor, d.h. m, s und kg
# Vektoren (Richtung und Position) enthalten X, Y, Z

PlanetX = Aktueller Planet, für den gerade neue Werte berechnet werden

Mache mit allen Planeten (jeweils PlanetY), wenn PlanetX <> PlanetY:

  Kraft := (0.0000000000667428 * PlanetX.Masse * PlanetY.GetMasse) / (Abstand(PlanetX, PlanetY))
  Summe := Summe + Kraft * (PlanetY.Position - PlanetX.Position)

# Neue Richtung (gerichtete Geschwindigkeit)
PlanetX.Richtung := PlanetX.Richtung + (dt * (Summe / PlanetX.Masse))

PlanetX.Position := PlanetX.Position + (dt * PlanetX.Richtung)
Die Planetenbewegungen sehen nicht sehr natürlich aus und wenn ich ehrlich bin, bin ich beim Tippen dieses Beitrages in mehreren Zeilen gestutzt. Vielleicht komme ich noch selbst darauf, was ich falsch gemacht habe, ansonsten bräuchte ich nochmal eure Hilfe. :oops:

jfheins 6. Apr 2010 21:42

Re: Physikgesetze zur Simulation unseres Sonnensystemes
 
Ich seh den Fehler :mrgreen:

Wie sieht Abstand() aus? ich vermute, du nimmst hier die normale euklidische Norm. Dann muss da aber Abstand^3 stehen ;)

Das liegt daran, dass du nachher noch einmal den Abstand drauf multiplizierst. Würdest du nachher den Vektor auf 1 normieren (da, wo du die Kraft zur Summe addierst) müsstest du immernoch durch Abstand^2 teilen.

So, wie das jetzt da steht, spielt der Abstand keine Rolle für die Größe der Kraft. Das wäre sicherlich ein interessantes Universum :mrgreen:

Taggs 29. Mai 2010 15:48

Re: Physikgesetze zur Simulation unseres Sonnensystemes
 
Ja danke, das ist mir dann irgendwann auch aufgefallen. ^^

Code:
# Mir liegen die Werte in den Grundeinheiten vor, d.h. m, s und kg
# Vektoren (Richtung und Position) enthalten X, Y, Z

PlanetX = Aktueller Planet, für den gerade neue Werte berechnet werden

Mache mit allen Planeten (jeweils PlanetY), wenn PlanetX <> PlanetY:

  Kraft := (0.0000000000667428 * PlanetX.Masse * PlanetY.GetMasse) / (Abstand(PlanetX, PlanetY))
  Summe := Summe + Kraft * (PlanetY.Position - PlanetX.Position)

# Neue Richtung (gerichtete Geschwindigkeit)
PlanetX.Richtung := PlanetX.Richtung + (dt * (Summe / PlanetX.Masse))

PlanetX.Position := PlanetX.Position + (dt * PlanetX.Richtung)
Wenn ich mich nicht irre, ist in meinem letzten Beitrag ein Fehler drin. Die Position berechnet sich: s = 1/2 * a*dt^2 + v0*dt + s0

Ich hatte die Position aber mit s = s0 + dt (v0 + dt * a) berechnet. Ausmultipliziert heißt das: s0 + v0*dt + a*dt^2. Da scheint 1/2 abhanden bekommen zu sein.

Dennoch bin ich mit beiden Rechnungen nicht zufrieden, da ich selbst bei einem dt von 1 Sekunde nach 1 Tag Abweichungen habe (Werte mit der Datei von Christian S. abgeglichen). Die X-Koordinate der Sonne z.B. hat eine Abweichung von 0,000000061. Da die Koordinaten in Astronomischer Einheit angegeben sind, beträgt die Abweichung 9 km nach einem Tag. Das ist zwar nicht sehr viel, aber woher kann das kommen? Andere Körper im Weltall, die ich in meiner Simulation nicht berücksichtige? Ungewollte Rundungen seitens des Computers?

EDIT: Das mit der Abweichung hat sich erledigt. Seitdem ich noch die anderen Himmelskörper hinzugefügt habe (Pluto und Mond) war eine Abweichung kaum noch messbar.

Mittlerweile bin ich mir auch sicher, dass mein Weg schon richtig ist. Es gibt ja auch die Formel s = a*t^2, wobei hier a die Endbeschleunigung und nicht die Durchschnittsbeschleunigung ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:31 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz