Kepler Differenzielgleichungen Euler Verfahren
-
Hi!
Also es müsste eigentlich ganz einfach sein, ..vorrausgesetzt man hat einen plan wie es geht _ (den ich grad gar nicht hab)
Also folgende Differenzialgleichungen : (alle konstanten gleich 1 gesetzt)
d²x/dt² = -x/r³
d²y/dt² = -y/r³r = sqrt(x²+y²)
diese Diffgleichungen soll man lösen, euler :
y(x+h) = y(x) + h*y'(x)
hab also zwei 2D-Arrays definiert mit 100 "Zeilen" und 2 "Spalten" in denen ich die Wertepaare x dx/dt und y dy/dt reinschreibe für meine 100 Zeitschritte
Das dieht dann so aus:
float X[2][100]; float Y[2][100]; double fx(double x, double y) { return(-x/r3(x,y)); } double fy(double x, double y) { return(-y/r3(x,y)); } double r3(double x, double y) { return ((x*x+y*y)*sqrt(x*x+y*y)); } //Startwerte X[0][0]=1; X[1][0]=0; Y[0][0]=0; Y[1][0]=0.75; //Euler fülle alle elemente meiner Arrays mit den raumpunkten nach Euler berechnet void euler() { for (int i=1;i<100;i++) { Y[0][i]=Y[0][i-1]+Y[1][i-1]; Y[1][i]=Y[1][i-1]+fy(X[0][i-1],Y[0][i-1]); X[0][i]=X[0][i-1]+X[1][i-1]; X[1][i]=X[1][i-1]+fx(X[0][i-1],Y[0][i-1]); } }
Das Problem : ich bekomme keine kreisbahn oder elipse oder irgendetwas einigermaßen rundes sondern eine gerade die radial vom koordinatenpunkt weggeht
So, also ich hab das mal mehr oder wenig intuitiv zusammengeschreiben.. im Netz hab ich einfach keine codes gefunden, und die Aufgabenstellung die ich hab fand ich einfach zu dürftig.
So oder so komm ich einfach nicht weiterwär klasse wenn ihr mir bisl unter die Arme greifen könntet.. wo mein denkfehler zum beispiel liegt^^
freue mich über jede Antwort, lg, Victor
-
Dir fehlt noch ne Gleichung für den Drehimpuls. Solang dein Drehimpuls null ist stimmt das mit der radialen Bewegung vollkommen. Du brauchst als Anfangsbedingungen halt ne Position und eine Geschwindigkeit. Wenn du nur ne Position hast, dann heißt das du packst den Körper in das Zentralpotential und lässt los - so dass er sich einfach Richtung Mitte bewegt und hin- und herpendelt.
-
warum hast du das h weggelassen? lass das h nicht weg. setze es auf 0.01 und beobachte eine fast-ellipsenbahn
pumuckl schrieb:
Dir fehlt noch ne Gleichung für den Drehimpuls.
nein
Solang dein Drehimpuls null ist stimmt das mit der radialen Bewegung vollkommen. Du brauchst als Anfangsbedingungen halt ne Position und eine Geschwindigkeit.
hat er
-
nja, in dem was ich vorhin gepostet hab war jetzt kein h drinen, hatte am anfang schon 0,01 drinnen, aber das hat nix gebracht, mein "planet" startet am anfangspunkt und bewegt sich dann auf eine lineare Achse und geht aus dem Bild raus
hab halt mit dem parameter h gespielt, verschiedene werte getestet, aber das ändert ja nix an der Form der Bahn
also ich weiß auch nicht was ich rauskriegen kann überhaupt.. dachte das das verfahren zumindest ein paar umdrehungen erlaubt oder so..
-
Ach ich hab das problem gefunden
..also meinen denkfehler^^ ..der code war in Ordnung, also mit 0.01 als h..
das er nicht mal eine ganze umdrehung hinbekam irritierte mich..
muss noch bischen tüfteln das er die macht
danke für eure Zeit