Suchergebnisse

Suchergebnisse 1-10 von insgesamt 10.

  • Benutzer-Avatarbild

    Hi wenn $x_0$ und $v_0$ gegeben sind und du alle Konstanten hast, um die Beschleunigung a(t, x) zu berechnen, kannst du ja eigentlich alles bestimmen, was du brauchst. Deine Beschleunigung ist abhängig vom Ort und dieser ist wiederum abhängig von der Beschleunigung: x'' = a(t, x) Deine Beschleunigung erhältst du ja aus den Gleichungen auf der von dir geposteten Webseite. Du musst jetzt zwei mal integrieren - einmal für Geschwindigkeit und einmal für Ort: Deine Funktion a(t, x) ist gegeben, das i…

  • Benutzer-Avatarbild

    Wie gesagt, dein x ist das x aus dem letzten Schritt. Schau dir nochmal meine Formeln an, da steht drin, was zu tun ist. Dein a(t, x) ist durch die Parameter t und x festgelegt, du setzt nur noch x0, xn, k1, usw. ein. Runge-Kutta ist eine Näherung des Integrals. Du hast ja im Prinzip eine Differentialgleichung. Dein r ist von x abhängig. Viele Grüße ~blaze~

  • Benutzer-Avatarbild

    Mit v(t, x) = a(x) * t + v(t-1) hast du jetzt doch wieder einen Euler-Schritt gemacht, oder? Ersetze übrigens Pow(x, 2) durch x * x. Das ist weit effizienter, als der ineffiziente Power-Algorithmus. Die Rechnung in ax und ay macht nur Sinn, wenn du Vektoren verwendest. Formuliere eine Funktion a(t, x), wobei x ein Vektor ist. Die Formel lautet $-G \cdot \frac{r}{{\lvert r \rvert}^3}$ du hast quasi $-G \cdot \frac{r}{{\lvert r \rvert}} \cdot \frac{1}{{\lvert r \rvert}^2}$ hierbei ist $\frac{r}{{\…

  • Benutzer-Avatarbild

    Das r ist entsprechend (x2 - x1), wobei x2 und x1 die Punkte sind, an denen sich die Objekte aufhalten. Du hast an dieser Stelle kein t. Die Beschleunigung hängt nur über den Ort von der Zeit ab und der ist ja offensichtlich von der Zeit abhängig. Das Runge-Kutta-Verfahren ist sehr ähnlich zum Euler-Verfahren. Es macht quasi mehrere verschiedene Eulerschritte und vereinigt diese dann zu einer Lösung. Die k2, ... k4 sind jeweils Näherungen auf Basis des jeweiligen Vorgängers und zum Schluss erfol…

  • Benutzer-Avatarbild

    Ja genau. Das sind relativ gute Näherungen. Wenn sie zu ungenau sind, musst du den Zeitschritt nochmal unterteilen. Gerade für sehr große Geschwindigkeiten sind die numerischen Näherungen nicht so gut geeignet. Das * t sollte nicht nötig sein (wenn dann wäre es eh *h), da es bereits bei den k1, ..., k4 aufmultipliziert wurde. Wann hv bzw. hx welchen Wert annimmt, ist dir klar, oder? Viele Grüße ~blaze~

  • Benutzer-Avatarbild

    Ich habe die nur so geschrieben, weil sie nicht delta entsprechen müssen. hx sollte eigentlich immer delta sein. Für hv ergibt sich der Wert ja in Abhängigkeit von den Parametern, die du an die Funktion v gibst: Ich glaube, dass hv im Fall v(t + 1/2 hx, ...) delta/2 sein sollte (bzw. hx/2). Aber nach meinem anstrengenden Tag bin ich mir nicht mehr ganz sicher, ob das der richtige Gedanke von vorhin war. Ich glaube aber schon... Viele Grüße ~blaze~

  • Benutzer-Avatarbild

    Hi mir fallen mehrere Dinge auf: - du hast ein sehr großes Delta und eine sehr große Geschwindigkeit --> kleinere Schritte simulieren, d.h. kleines delta. Bei großen Werten ist die Abweichung beim Runge-Kutta-Verfahren vom tatsächlichen Wert zu groß. Du könntest höher einen Runge-Kutta höherer Ordnung anwenden, das dürfte die Performance gegenüber der schrittweisen Annäherung weit verbessern. - du arbeitest mit den absoluten Positionen, nicht mit den relativen (falls die Sonne sich nicht dauerha…

  • Benutzer-Avatarbild

    Du kannst auch einen Runge-Kutta höherer Ordnung nutzen. Das sollte dann eine wesentlich bessere Näherung darstellen. Du kannst auch mal einen Testlauf durchführen mit einem dynamischen Runge-Kutta und dann abgleichen, ab welchem Wert der relative Fehler zwischen dem Runge-Kutta mit (n+1)-ter Ordnung und dem mit n-ter Ordnung insignifikant klein wird. Das wäre die übliche Vorgehensweise. Ich denke schon, dass die Implementierung so stimmt. Mir fällt beim schnellen Drüberschauen zumindest kein we…

  • Benutzer-Avatarbild

    Schau dir mal das hier an: en.wikipedia.org/wiki/Runge%E2…nge.E2.80.93Kutta_methods Dort findest du die Definition. Du kannst dir auch den impliziten Runge-Kutta weiter unten anschauen. Allerdings empfehle ich für die Lösung von diesem die Verwendung der GPU über Compute Shader/CUDA/..., wenn es sich um Echtzeitanwendungen handelt. Die Zahl der Berechnungen steigt dann doch enorm an. Runge-Kutta habe ich dafür aber bisher noch nicht implementiert. Viele Grüße ~blaze~

  • Benutzer-Avatarbild

    Du musst auch die Position in den Zwischenschritten updaten. Effizienter wäre es übrigens tatsächlich, höhere Runge-Kutta-Verfahren zu verwenden. Edit: Eventuell wirst du übrigens hier fündig: scholarpedia.org/article/Runge-Kutta_methods Ich glaube, dass die Findung von Runge-Kutta-Verfahren höherer Ordnung nicht ganz trivial ist. Ggf. muss man da auf bereits vorhandene Butcher-Tableaus zurückgreifen. Ich habe jetzt zumindest beim Überfliegen nicht herausgefunden, wie genau die $b_i$ -s konstitu…