Autor Nachricht
ProfilerOne
BeitragVerfasst am: 07. Okt 2012 10:26    Titel:

Danke Leute für die vielen Antworten, das Problem mit den falsch berechneten Bahnen hab ich dank eurer Hilfe gelöst, es waren, wie von euch angemerkt, die fehlenden Kraftkomponenten bei Berechnung des Einheitsvektors, wäre ich im Leben nicht alleine drauf gekommen, danke smile

Ich habe aber noch eine Frage zu der angesprochenen Problematik bei der Berechnung der Geschwindigkeit. Momentan verwende ich immer noch Euler bei ca. 50 Berechnungen pro Sekunde, ist das präzise Genug, wenn wir von Dimensionen in unserem realen Sonnensystem ausgehen (Erde & Sonne) bei "Echtzeit", also keinem schnellerem Vorlauf?

Kann mir in dem Zusammenhang jemand erklären, wie viel mehr Rechenkapazität der Ströme-Verlet-Algortimus benötigt und ob es sich lohnt diesen einzusetzen, wenn es auch um die Berechnung von mehreren Körpern geht dessen Bahnen aber nicht zu 100% physikalisch korrekt sein müssen?

Ich weiß, dass diese Fragen nicht einfach zu beantworten sind, weil die Präzision eines Verfahrens davon abhängt unter welchen Bedingungen es angewandt wird, aber so eine grobe Richtung wäre toll und ob es sich tatsächlich lohnen würde ein anderes Verfahren anzuwenden.

Danke euch smile
TomS
BeitragVerfasst am: 07. Okt 2012 01:01    Titel:

Danke
DrStupid
BeitragVerfasst am: 06. Okt 2012 19:43    Titel:

TomS hat Folgendes geschrieben:
DrStupid: kannst du erklären, wieso du ein Verfahren bevorzugst, das die Energie nicht erhält, wenn du eines kennst, das m.E. numerisch sehr einfach umsetzbar ist und das sie Energie erhält?


Das ist leicht erklärt: Die Energieerhaltung allein genügt mir nicht. Ich will Ergebnisse, die Lösung der Bewegungsgleichungen sind und in der Beziehung ist der Runge-Kutta-Nyström dem Geschwindigkeits-Störmer-Verlet haushoch überlegen. Da die Energieerhaltung in den Bewegungsgleichungen steckt, wird sie mit einer möglichst guten Lösung automatisch mitgeliefert.

Symplektische Einschrittverfahren sind besser geeignet, wenn es nur auf eine möglichst gute Energieerhaltung und nicht auf möglichst exakte Bahnen einzelner Körper ankommt. Das ist zum Beispiel in der Moleküldynamik der Fall.

TomS hat Folgendes geschrieben:
Btw.: was bedeutet "Energieerhaltung" hier genau? bzw. bis zu welcher Ordnung gilt "Energieerhaltung"?


Das kann ich Dir aus dem Stehgreif nicht beantworten. Ich kann mich zwar dunkel an eine Herleitung des obigen Verfahrens erinnern, bei der schon Glieder zweiter Ordnung vernachlässigt wurden, aber dafür lege ich nicht meine Hand ins Feuer.
TomS
BeitragVerfasst am: 06. Okt 2012 14:50    Titel:

Na, das sind doch zwei wichtige Hinweise.

DrStupid: kannst du erklären, wieso du ein Verfahren bevorzugst, das die Energie nicht erhält, wenn du eines kennst, das m.E. numerisch sehr einfach umsetzbar ist und das sie Energie erhält?

Btw.: was bedeutet "Energieerhaltung" hier genau? bzw. bis zu welcher Ordnung gilt "Energieerhaltung"?
DrStupid
BeitragVerfasst am: 06. Okt 2012 14:41    Titel: Re: Gravitation im Koordinatensystem

ProfilerOne hat Folgendes geschrieben:
Meine Frage:





Auf den Fehler im Nenner wurde ja schon hingewiesen. Davon abgesehen ist der Integrator ungeeignet. Mit dem Euler-Verfahren erhält man beispielsweise Spiralen anstelle von stabilen Umlaufbahnen. Kleinere Schrittweiten mildern das Problem zwar etwas ab (zu lasten der Rechenzeit), aber sie können es nicht wirklich lösen, weil sich die Fehler aller Schritte aufsummieren, anstatt sich gegenseitig auszugleichen.

Das beste mir bekannte Einschritt-Verfahren ist der Geschwindigkeits-Störmer-Verlet-Algoritmus:





Wenn die Zahl der Körper überschaubar bleibt, bevorzuge ich allerdings den Runge-Kutta-Nyström:

http://theory.gsi.de/~vanhees/faq/gravitation/node62.html

Im Gegensatz zum Geschwindigkeits-Störmer-Verlet ist der zwar nicht energieerhaltend, aber dafür so genau, dass die Fehler auch bei relativ großen Schrittweiten erträglich bleiben.
TomS
BeitragVerfasst am: 06. Okt 2012 13:59    Titel:

ah, ja, genau, da hast recht, das ist falsch

(EDIT: habe ich tatsächlich - genauso wie deine Korrektur - übersehen)
Huggy
BeitragVerfasst am: 06. Okt 2012 13:58    Titel:

Aber er hat im Nenner nur die Differenz einer Koordinate eingehen lassen, nicht die aller 3 Koordinaten.
TomS
BeitragVerfasst am: 06. Okt 2012 13:56    Titel:

Was soll daran falsch sein? Das ist doch nur eine Koordinatentransformation. Natürlich geht nur die Differenz der Koordinatenvektoren ein.
Huggy
BeitragVerfasst am: 06. Okt 2012 13:47    Titel:

@TomS

Ist dir nicht aufgefallen, dass beim Fragesteller der Nenner falsch ist? Da steht bei ihm nur das drin!
TomS
BeitragVerfasst am: 06. Okt 2012 13:39    Titel: Re: Gravitation im Koordinatensystem

Nun, das ganze sieht zunächst vernünftig aus:



wobei ich hier den Richtungsvektor zwischen den beiden Objekten einführe und dessen Einheitsvektor sowie dessen Betrag verwende. Das passt also.

Dann ist



wobei du das für x,y,z berechnen musst; insbs. musst du auf eine genügend kleine Schrittweite Delta t achten.

Die von dir verwendete "iterative" Lösung der Bewegungsgleichung ist der einfachste Ansatz - verbunden mit diversen Schwierigkeiten. Für kleine r und damit große F bzw. a müsste man z.B. die Schrittweite Delta t verringern, um eine bessere Genauigkeit zu erzielen. Es gibt viele Ansätze, die die numerische Behandlung sowohl effizienter als auch präziser implementieren; aber welche davon für deine Zwecke geeignet sind (und noch hinreichend einfach sind) kann ich nicht beurteilen.
Huggy
BeitragVerfasst am: 06. Okt 2012 13:30    Titel:

Der Fehler steckt im Nenner der Kraft. Du hast dort hingeschrieben. Der richtige Nenner ist:



Dieser Nenner ist für alle 3 Kraftkomponenten gleich. Nur der Zähler ändert sich.
ProfilerOne
BeitragVerfasst am: 06. Okt 2012 11:50    Titel: Gravitation im Koordinatensystem

Meine Frage:
Hallo Leute,
ich hab folgendes Probleme: Die Gravitation tut nicht, was sie sonst tut. Ich programmiere zur Zeit ein Spiel und möchte dafür die Physik zwischen Himmelskörpern simulieren. Momentan ist die Situation noch recht überschaulich - eine Sonne und ein weiteres Objekt von geringer Masse. Das Ganze muss natürlich in einem 3-dimensionalem Raum berechnet werden. Hier Beispielhaft die verwendeten Werte:








Meine Ideen:
Als Ansatz hab ich das Newtonsche Gravitationsgesetz gewählt, ich hab zwar Physik LK, aber wir haben die Gravitation nie im 3-dimensionalen Raum unter Berücksichtigung von v-Vektoren etc. besprochen, von daher hab ich versucht unser etwas einfachen Überlegungen und das was ich im Internet gefunden habe zu verbinden. Das sieht bis jetzt so aus (Beispielhaft an der x-Komponente):





Die erhaltene Geschwindigkeit wird dann dazu genutzt, die nächste Koordinate zu berechnen, welche wiederum als Grundlage für die nächste Rechnung genutzt wird.

Ich bin mir sehr unsicher, was diesen Ansatz angeht und, ich hab mir das alles grafisch anzeigen lassen, das Ergebnis gibt mir recht, das irgendwo ein Fehler sein muss, aber ich bin hier wirklich mit meiner Physik am Ende :/

Ich hoffe jemand hat da einen guten Rat und danke schonmal für eure Hilfe smile

Powered by phpBB © 2001, 2005 phpBB Group