AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Klatsch und Tratsch Physikgesetze zur Simulation unseres Sonnensystemes
Thema durchsuchen
Ansicht
Themen-Optionen

Physikgesetze zur Simulation unseres Sonnensystemes

Ein Thema von Taggs · begonnen am 20. Nov 2009 · letzter Beitrag vom 29. Mai 2010
Antwort Antwort
Seite 1 von 3  1 23      
Taggs

Registriert seit: 20. Nov 2009
8 Beiträge
 
#1

Physikgesetze zur Simulation unseres Sonnensystemes

  Alt 20. Nov 2009, 17:52
Hallo,

ich bin dabei eine Simulation für das Mehrkörperproblem zu schreiben und brauche den ein oder anderen physikalischen Rat, da das schon etwas her ist (Keppler, Newton, Massen ziehen sich an, Zentrifugalkraft, ...)

Erst mal kurz zur Erklärung, wie ich da ran gehen wollte:

TUniversum (fungierend als Liste)
TKörper (die Elemente von TUniversum, Planeten)
  • Name
  • Masse
  • Position im R3 als Vektor (lässt sich der Richtungsvektor sicherlich leichter errechnen)

Ich habe jetzt einige Punkte rausgelassen, das wäre die Geschwindigkeit, die Richtung, etc., das müsste ich nicht unbedingt speichern, da ich diese - zur neuen Positionsbestimmung - immer neu berechnen muss. Desweiteren wäre da die Exzentrizität (keine Ahnung ob ich die brauche).

Bevor ich überhaupt anfange, möchte ich wissen, ob ich das überhaupt so angehen kann, oder ob das nicht viel komplizierter ist. Nehmen wir mal an die Sonne bewegt sich nicht vom Fleck und alle Planeten kreisen drumrum. Dann würde ich im Jahre 2000 anfangen, wo die alle ziemlich in einer Reihe standen. Dann muss ich für je nach Delta t alls 1/x Sekunden die neuen Kräfte, Geschwindigkeiten, Positionen, etc. berechnen. D.h. ich addiere alle Kräfte zu den anderen Planeten zusammen + der Zentrifugalkraft. Dann habe ich einen Richtungsvektor. Aber dann fehlt mir noch die Geschwindigkeit, da sie sich ja nach den Kepplerschen Gesetzen verändern (Ellipse -> "Die Fahrstrahlen der Planeten überstreichen in gleichen Zeiträumen gleiche Flächen."). Das wird sicherlich ein Problem.

Wenn ich das Erwähnte berücksichtige, bewegen sich die Planeten dann wirklich in Bahnen oder brauche ich noch Exzentritäten o.ä.?

Ich hoffe ihr könnt mir helfen ein wenig Licht ins Dunkelne zu bringen.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Physikgesetze zur Simulation unseres Sonnensystemes

  Alt 20. Nov 2009, 19:11
Die Länge des Richtungsvektors ist bereits die Geschwindigkeit. Die Planeten müssen ja am Punkt 0 mit einer Anfangsgeschwindigkeit-/richtung initialisiert werden, sonst fallen sie ja einfach in deine Sonne . Wenn du dann die Einflüsse aller Kräfte auf diesen Anfangsvektor anwendest, beinhaltet der neue natürlich auch schon die Geschwindigkeit.
Was oftmals vergessen wird ist, dass Geschwindigkeit bereits eine gerichtete Größe ist, und nicht wie im Alltag oft gebräuchlich nur ein Skalar. (Zu dem wird sie, wenn man sie nur in der gerade vorherrschenden Richtung betrachtet, was u.a. die Längenberechnung dieses Vektors tun kann.)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: Physikgesetze zur Simulation unseres Sonnensystemes

  Alt 20. Nov 2009, 19:16
Mir ist noch nicht klar, was genau du machen willst. Keplers Gesetze modellieren ja ein ideales Universum. Dafür bräuchtest du nur die exakten Daten der Ellipsen und könntest über die Gesetze die jeweilige Position der Planeten auf diesen zu einem gegebenen Zeitpunkt berechnen.

Oder willst du eine reale Körpersimulation bauen? Dafür brauchst du dann wirklich Beschleunigung, Geschwindigkeit, Position. Zentrifugalkraft allerdings nicht, das ist eine Scheinkraft .
In diesem Fall könnten - im Gegensatz zu Keplers statischem Modell - sich allerdings Ungenauigkeiten hochschaukeln, was neben dem Zeit-Delta vor allem von den Startparametern abhängt: Anfangsposition und -geschwindigkeit jedes einzelnen Körpers.
Genauer gehst du so vor: Jeder Körper besitzt eine Position p und einen Geschwindigkeitsvektor v. Wie du schon beschrieben hast, summierst du die Kräfte zu allen anderen Körpern und kommst so auf einen Beschleunigungsvektor a.
Die neue Geschwindigkeit ist dann v' = v + dt * a und die Position p' = p + dt * v.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Taggs

Registriert seit: 20. Nov 2009
8 Beiträge
 
#4

Re: Physikgesetze zur Simulation unseres Sonnensystemes

  Alt 20. Nov 2009, 23:49
@Medium: Danke für den Hinweis. Sowas vergesse ich gerne mal.

@Khabarakh: Ich möchte eigentlich eine Simulation schreiben, die das Merhkörperproblem verdeutlicht. (Teil meiner Abiturpräsentation) D.h. möglichst oft die Position neu zu berechnen. Weitere Einschränkungen habe ich nicht. Wenn ich dich richtig verstanden habe, läuft das doch auf eine reale Körpersimulation hinaus.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#5

Re: Physikgesetze zur Simulation unseres Sonnensystemes

  Alt 21. Nov 2009, 00:20
Zitat von Taggs:
Weitere Einschränkungen habe ich nicht. Wenn ich dich richtig verstanden habe, läuft das doch auf eine reale Körpersimulation hinaus.
Ja, dann braucht dich wirklich nur der Positionvektor, seine zwei Ableitungen und natürlich Newton zu interessieren .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.068 Beiträge
 
Delphi 12 Athens
 
#6

Re: Physikgesetze zur Simulation unseres Sonnensystemes

  Alt 21. Nov 2009, 00:30
Zitat von Khabarakh:
Ja, dann braucht dich wirklich nur der Positionvektor, seine zwei Ableitungen und natürlich Newton zu interessieren
Und die Reibung ignorieren wir einfach. (Planet/Sonne/wasauchimmer durch Gaswolke oder Kollisionen)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Physikgesetze zur Simulation unseres Sonnensystemes

  Alt 21. Nov 2009, 01:07
Zitat von Khabarakh:
Zitat von Taggs:
Weitere Einschränkungen habe ich nicht. Wenn ich dich richtig verstanden habe, läuft das doch auf eine reale Körpersimulation hinaus.
Ja, dann braucht dich wirklich nur der Positionvektor, seine zwei Ableitungen und natürlich Newton zu interessieren .
Kepler bitte nicht vergessen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#8

Re: Physikgesetze zur Simulation unseres Sonnensystemes

  Alt 21. Nov 2009, 09:44
Zitat von himitsu:
Und die Reibung ignorieren wir einfach. (Planet/Sonne/wasauchimmer durch Gaswolke oder Kollisionen)
Ich denke, im Falle einer Kollision gibt es wichtigeres zu bedenken als die Reibung - und was ist eigentlich der Reibungskoeffizient der Erde ?

Zitat von Luckie:
Kepler bitte nicht vergessen.
Luckie, vielleicht solltest du dir meinen ersten Post noch einmal durchlesen . Keppler geht von Ellipsen als statische Umlaufbahnen aus, bei einer allgemeinen Körpersimulation werden stattdessen nur die wirkenden Kräfte simuliert.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Christian S.
Christian S.

Registriert seit: 19. Apr 2003
Ort: Düsseldorf
835 Beiträge
 
#9

Re: Physikgesetze zur Simulation unseres Sonnensystemes

  Alt 21. Nov 2009, 12:46
Zitat von Khabarakh:
Genauer gehst du so vor: Jeder Körper besitzt eine Position p und einen Geschwindigkeitsvektor v. Wie du schon beschrieben hast, summierst du die Kräfte zu allen anderen Körpern und kommst so auf einen Beschleunigungsvektor a.
Die neue Geschwindigkeit ist dann v' = v + dt * a und die Position p' = p + dt * v.
Wobei man dann aber schon sowas wie einen Runge-Kutta benutzt und nicht das Euler-Verfahren. Sonst geht die Simulation ziemlich schnell kaputt.

Wir haben in der Uni mal dasselbe simuliert und dabei einen Runge-Kutta verwandt, wobei Zwischenschritte noch interpoliert wurden, um bei reduzierter Anzahl Integrationsschritte noch eine "flüssige" Bewegung zu haben.

Angehangen habe ich Dir mal die Startwerte für die Planeten, die wir damals benutzt haben. Es sind für Sonne, Planeten und unseren Mond die Position und Geschwindigkeit zu verschiedenen Tagen angegeben. Als Startwerte reichen natürlich pro Körper ein Satz von Daten, die anderen kannst Du aber vielleicht zur Kontrolle benutzen. IIRC waren das nämlich "echte" Daten
Angehängte Dateien
Dateityp: txt sonnensytem_geschw_139.txt (10,0 KB, 18x aufgerufen)
Christian S.
Admin in der Entwickler-Ecke
  Mit Zitat antworten Zitat
Taggs

Registriert seit: 20. Nov 2009
8 Beiträge
 
#10

Re: Physikgesetze zur Simulation unseres Sonnensystemes

  Alt 27. Feb 2010, 22:30
Hi,

auch wenn es schon etwas her ist, möchte ich meinen Thread noch einmal ausgraben.

Ich habe mich jetzt entschieden, wie ich das Ganze programmieren möchte (von der physikalischen Seite aus):

Nehmen wir einmal an ich habe nur 3 Körper im Universum: Sonne, Erde, Jupiter.

Dann müsste ich über jeden Körper (Ruhe-)Masse m0, Startposition x0 (als Vektor) und Momentangeschwindigkeit v0 an dem Punkt, auf den der Vektor x0 zeigt, wissen.

Da die Sonne bei mir in der Mitte des Bildschirmes stehen bleiben soll, habe ich mir gedacht, dass ich von der Sonne nur m0 und x0 brauche und diese Werte konstant bleiben.

F(Koerper1, Koerper2) = (9,61 * m0(Koerper1) * m0(Koerper2)) / |x0(Koerper1) - x0(Koerper2)| // Das ist die normale Formel um die Kraft zwischen 2 Körpern zu berechnen.

Jetzt würde ich wie folgt die Position von Erde und Jupiter ausrechnen:

a(Erde) = [F(Sonne, Erde) * (x0(Sonne) - x0(Erde))] + [F(Jupiter, Erde) * (x0(Jupiter) - x0(Erde))] // Wenn ich x0 von Erde von x0 von Sonne subtrahiere, habe ich ja letzlich einen Vektor von dem Punkt der Erde zum Punkt der Sonne, der dann nur noch mit der Anziehungskraft "gewichtet" werden muss. Am Ende werden alle gewichteten Vektoren zwischen den Planeten aufaddiert, sodass ich die Richtung und Beschleunigung in einem Vektor habe. Nach meinem Vorgehen, habe ich in a jetzt einen Richtungsvektor, wohin der Planet fliegt, und auch wie "schnell".

v(Erde) = v0(Erde) + dt * |a(Erde)| // a darf hier natürlich nicht der Vektor sein, sondern muss die Länge des Vektors sein, deshalb Betragsstriche. Oder muss ich doch den Vektor a nehmen? Brauche ich nur die Geschwindigkeit als Zahl in v oder ist v ein Vektor (Geschwindigkeitsvektor)? Das ist nämlich schon mal mein 1. Problem.

x(Erde) = x0(Erde) + dt * v(Erde) // Hier müsste v(Erde) nämlich ein Vektor sein ...

Dann würde ich die 3 Zeilen (a, v und x) noch einmal für den Jupiter ausrechnen, allerdings würde ich da nicht die neuen Werte von der Erde nehmen, sondern noch die "alten". Ich denke das gibt weniger Ungenauigkeitsfehler, wenn mein dt hinreichend klein ist.

Neben dem Problem mit der Geschwindigkeit / mit dem Geschwindigkeitsvektor, habe ich noch ein 2. Problem, die "Verhältnisse". Bei der Berechnung der Beschleunigung, gewichte ich ja die Vektoren zw. den einzelnen Planeten mit der Kraft zwischen ihnen, bevor ich alle Vektoren zusammenaddiere. Kann ich das so lassen, oder muss ich noch Faktoren einfügen? Ich weiß nicht wie ich das erklären soll, aber ich befürchte so, werden meine Planeten in null-komma-nix vom Bildschirm fliegen. Schließlich gibt mir F einen Wert in Newton zurück. Ich kann mir beim besten Willen nicht vorstellen, dass ich den einfach mit einem Vektor multiplizieren kann.

Bezüglich des dt kann ich einfach eine beliebige Zahl einsetzen, ohne dass ich dadurch die anderen Werte (verhältnismäßig) ändern müsste, oder? Ich nehme mal an, dass bei dt = 1 jede Stunde die Planeten neu berechnet werden. Ist das richtig so?

Bevor das Thema gleich aufgegriffen wird: Ich möchte es erstmal ganz einfach machen, bevor ich mich an Runge-Kutta & Co ranmache.

Viele Grüße und ein schönes Wochenende noch.

Alex
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:56 Uhr.
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