Cruz: gravitationale Bahn berechnen

Ja hallo,

diesmal ein eher mathematisches Thema. Für eine kleine zweidimensionale "Space Simulation" Spielerei suche ich eine Funktion, die mir die Position, Geschwindigkeit und Richtung eines Objektes unter Einfluss einer Gravitationsquelle in Abhängigkeit von der Zeit berechnet. Ich habe einen festen Himmelskörper als Gravitationsquelle mit den Daten Position (Hx,Hy) und Masse Hm. Irgendwo im Raum setze ich zum Zeitpunkt t0 einen Satelliten aus mit den Daten Position (Sx,Sy), Geschwindigkeit Sv und Richtung Sr € [0,2PI]. Wie lautet die Funktion, die mir die Position des Satelliten zum Zeitpunkt t ausgibt?

((x,y),v,r) = f(t, (Hx,Hy), Hm, (Sx,Sy), Sv, Sr)

Im Internet findet man eine Menge über elliptische Bahnen, aber das ist nicht das was ich suche.

Gruß,
Cruz

  1. Hello out there!

    Ich habe einen festen Himmelskörper als Gravitationsquelle mit den Daten Position (Hx,Hy) und Masse Hm.

    Wenn du dein Koordinatensystem so legst, dass das Ding in O ist, dürfte das die Rechnung etwas vereinfachen.

    Irgendwo im Raum setze ich zum Zeitpunkt t0 einen Satelliten aus mit den Daten Position (Sx,Sy), Geschwindigkeit Sv und Richtung Sr € [0,2PI]. […]
    Im Internet findet man eine Menge über elliptische Bahnen, aber das ist nicht das was ich suche.

    Es ist nicht gesagt, dass die der Ausgesetzte auf einer elliptischen Bahn bewegt. Es ist ein Kegelschnitt, aber je nach Anfangsposition und -geschwindigkeit kann das auch eine Parabel- oder Hyperbelbahn sein.

    Unter „Zweikörperproblem“ dürftest du fündig werden. (Wikipedia, Matroids Matheplanet)

    See ya up the road,
    Gunnar

    --
    “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
    1. Yo,

      Danke für die Links Gunnar.

      Unter „Zweikörperproblem“ dürftest du fündig werden.

      Ja bin ich inzwischen auch geworden und ich muss schon sagen die Komplexität von dem Ding erschlägt mich. Ich wollte mir eigentlich nur einen kleinen Spaß daraus machen und Abends zur Entspannung ein Spielchen programmieren und nicht unbedingt mich mit Differentialgleichungen herumschlagen. So habe ich mich entschlossen mir den Stoff erstmal nicht reinzuziehen, sondern die Aufgabe "nach Gefühl" approximativ lösen. Das macht deutlich mehr Spaß. :) Aber es ergeben sich natürlich immer Probleme, der Satellit fliegt nicht so wie es sollte. Wenn mir alle Ideen ausgegangen sind und ich immer noch den Ehrgeiz in mir habe, dann werde ich mir wohl Herr Kepplers Lehre zur Gemüte führen.

      Dank und Gruß
      Cruz

      1. Hallo Cruz

        Spielchen programmieren und nicht unbedingt mich mit >Differentialgleichungen herumschlagen.

        Schau dir mal
        http://de.wikipedia.org/wiki/Massenanziehung
        an!
        Mit dieser Gleichung kannst du die Anziehungskraft von 2 Massen berechnen, daraus kriegst du die Beschleunigung, und die Bewegung.

        werde ich mir wohl Herr Kepplers Lehre zur Gemüte führen.

        Zieh dir Newton rein.
        Kepler hat die Bahnen beschrieben.
        Du brauchst aber die Massenanziehung ;-)
        gruss
        egga

        1. Hello out there!

          und nicht unbedingt mich mit Differentialgleichungen herumschlagen.

          Mit dieser Gleichung [Gravitationsgesetz] kannst du die Anziehungskraft von 2 Massen berechnen, daraus kriegst du die Beschleunigung, und die Bewegung.

          Und zwar in welcher Form? In einer Differentialgleichung. Eben.

          [latex]F = \gamma \frac{M m}{r^2}[/latex]
          vektoriell:
          [latex]\vec F = -\gamma \frac{M m}{r^2} \frac{\vec r}{r}[/latex]
          eingesetzt in
          [latex]\vec F = m \vec a = m \frac{\mathrm{d}^2 \vec r}{\mathrm{d}t^2}[/latex]
          ergibt
          [latex]\frac{\mathrm{d}^2 \vec r}{\mathrm{d}t^2} = -\gamma M \frac{\vec r}{r^3}[/latex]

          Damit hast du Cruz nichts Neues erzählt.

          See ya up the road,
          Gunnar

          --
          “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
          1. Hallo Gunnar

            Damit hast du Cruz nichts Neues erzählt.

            Neu nicht, aber manchmal sieht ein Problem aus einem anderen Winkel betrachtet gar nicht mehr so furchteinflössend aus.
            z.B. sieht eine Differenzialgleichung, wenn man sie diskretisiert, plötzlich wie eine Differenz aus!

            'Eine Diskretisierung geschieht meist, indem Raum und Zeit durch ein Rechengitter in endlich viele Teile zerlegt werden. Die Ableitungen werden dann nicht mehr durch einen Grenzwert dargestellt, sondern durch Differenzen approximiert.'

            (Da ich nur Ingenieur bin, und kein Mathematiker kann ich mit den dabei entstehenden Fehlern leben ;-)

            Da Cruz die Sache eh programmieren möchte und nicht analytisch lösen (was wie Gunnar richtig festhält die Lösung einer Differentialgleichung bedingt), kann man IMHO das Problem diskretisieren und iterativ berechnen. Dies ergibt dann eine Aufgabenstellung der Dynamik.

            1. Setze die Anfangsbedingungen zum Zeitpunkt t0
            Position (Sx,Sy), Geschwindigkeit Svx, Svy, Masse Sm
            Position (Hx,Hy), Geschwindigkeit Hvx, Hvy, Masse Hm
            (Annahme: Hm >> Sm, sonst wird's schwieriger)
            So kannst du Anziehungskraft des Satelliten auf die Erde vernachlässigen.

            2. Definiere einen Zeitschritt!
            [latex]\Delta t[/latex]

            3. Iterative Berechnung der Kraftwirkung, Beschleunigung zu jedem diskreten Zeitpunkt. Danach Berechnung der nächsten Position.

            [latex]t[n+1] = t[n] + \Delta t [/latex]

            Somit kannst du dann zuerst die Kraft F zur Zeit t[n], welche in der Konstallation zum Zeitpunkt t[n] auf den Satelliten wirkt bestimmen. Aus dieser Kraft kannst du dann die Beschleunigung, welche auf den Satelliten zu diesem Zeitpunkt wirkt berechnen: a=F/Sm

            Daraus ergibt sich dann auch die Geschwindigkeit des Satelliten:

            [latex]\Delta v = a  \Delta t[/latex]

            Und so solltest du dann auch die neue Position berechnen können.
            So können iterativ die Bewegung der Massen berechnet werden.

            Bemerkung: die Diskretisierung hat einen Einfluss auf das Resultat. Das heisst, es kann sehr gut sein, dass dein Himmelskörper (mit den richtigen Anfangsbedinungen) zu Beginn eine schöne Umlaufbahn hat, dann aber langsam abfliegt.

            So. Das war lange, und auch nicht grad viel Neues, aber vielleicht kommst du (Cruz) ja so zu deinen Orbitalbahnen!
            gruss
            egga

            1. Hello out there!

              z.B. sieht eine Differenzialgleichung, wenn man sie diskretisiert, plötzlich wie eine Differenz aus!

              Sollte man aber – wenn möglich – vermeiden, denn ...

              (Da ich nur Ingenieur bin, und kein Mathematiker kann ich mit den dabei entstehenden Fehlern leben ;-)

              ... die Fehler werden von Iterationsschritt zu Iterationsschritt immer größer, bis das errechnete Ergebnis mit dem wirklichen nichts mehr zu tun hat. Das geschieht umso schneller, je größer Δt gewählt wird und je geringer die Rechengenauigkeit des Systems ist.

              (was wie Gunnar richtig festhält die Lösung einer Differentialgleichung bedingt)

              Die wurde ja schon gelöst: Das Ergebnis ist ein Kegelschnitt. Dessen Parameter hängen von den Anfangsbedingungen ab, sind also aus Masse des Zentralkörpers und Anfangsgeschwindigkeit des Satelliten zu berechnen.

              kann man IMHO das Problem diskretisieren und iterativ berechnen.

              Muss man aber nicht. Und wenn man nicht muss, sollte man nicht.

              See ya up the road,
              Gunnar

              --
              “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
            2. Hallo,

              aber vielleicht kommst du (Cruz) ja so zu deinen Orbitalbahnen!

              dein Vorschlag finde ich gut, denn das war genau auch mein erster Ansatz. :) Man braucht nicht viel mehr dafür als nur ein bisschen Vektorrechnung. So habe ich auch ratz fatz mein erstes Ergebnis gehabt, das so aussieht:

              http://marcell.missura.de/gravity/

              Das mag für einen Laien sogar auf den ersten Blick halbwegs real aussehen, aber ich bin damit bei weitem nicht zufrieden. Es dürfte ja gar nicht passieren, dass der Satellit so um den Planeten herumeiert und zum Schluss aus dem Bildschirm katapultiert wird.

              Die diskretisierung verhindert, dass der Planet kontinuierlich seine Gravitation auf den Satelliten ausüben kann. Je schneller das Objekt fliegt und je näher es an das Zentrum der Gravitation herankommt, umso schlechter wird die Simulation.

              Nachdem ich noch einige Versuche unternommen habe die diskretisierung zu tunen, wie z.B. den Satelliten keine allzu größen Sprünge machen lassen, sondern in feineren Schritten rechnen, habe ich dann schließlich diesen Ansatz aufgegeben. Ich will lieber eine geschlossene Formel haben, in die ich nur die Anfangsbedingungen und den Zeitpunkt des nächsten Frames einsetzen kann und der mir die Position des Satelliten ausspuckt. So wies mich Gunnar auf das Zweikörperproblem hin, was mich das Projekt fürs erste kaltstellen ließ, denn ich muss übermorgen eine Seminararbeit abgeben. :)

              Gruß,
              Cruz

      2. Hello out there!

        nicht unbedingt mich mit Differentialgleichungen herumschlagen.

        Der Lösungsansatz ist doch in [Matroids Matheplanet] schon angegeben (unter „Satz: Das 1. Keplersche Gesetz“).

        „Es ist also möglich, aus den Anfangsbedingungen die Parameter ε, P und θ zu berechnen. Auf diese Weise kann bei Bedarf auch entschieden werden, um welche Art von Quadrik es sich handelt. Die Kriterien hierfür sind in der Vorbereitung genannt.“

        See ya up the road,
        Gunnar

        --
        “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
        1. Gunnar,

          danke für den Hinweis, aber ich blicke noch nicht durch. Der Ansatz mit der Quadrik leuchtet mir ein, aber wie man im Detail die Bahn berechnet weiss ich noch nicht. Es steckt eine geballte Ladung Mathematik in dem genannten Absatz und ich brauche mehr Zeit, um es zu analysieren. Wenn ich mich mehr damit beschäftigt habe, kann ich vielleicht auch eine sinnvolle Frage dazu stellen.

          Gruß,
          Cruz