Beschleunigung

Neue Frage »

ilja Auf diesen Beitrag antworten »
Beschleunigung
Meine Frage:

Hey ich möchte in einem Programm ein schwarzes Loch simulieren.
Jetzt hab ich eine Frage:

Wie kann ich für die Kugeln die im 2 dimensionalen Raum sind die neue Position ermitteln. Ok ich brauch jetzt nciht den gesamten Gedankengang sondern ich stecke an eienr Stelle fest.

Und zwar errechne ich immer jeweils die Kraft bzw. Beschleunigung zum Zeitpunkt t0 an position p0(x0|y0).

So jetzt um p1(x1|y1) auszurechnen brauch ich eure Hilfe da tue ich mich grad etwas schwer im Kopf:

Und zwar hab ich ja delta t und anhand dessen könnte ich ja ganz bequem die neue Position ausrechnen mit z.B. wenn ich die beschleunigung in x und y beschleunigung aufteile unter zuhilfenahme des winkels, für die x koordinate: x1=a/2*t^2+v0*t+x0

so aber: die Beschleunigung bleibt ja nicht Konstant (ich bin mir auch sehr unsicher ob ich das berücksichtigen soll um mir das leben zu erleichtern aber ich möchte es schon genau haben)

so jetzt kann ich ja wieder die aktuell an pos1 herrschende Beschleunigung ausrechnen und kann dadurch delta beschleunigung rausbekommen.

was tue ich jetzt damit? wie kann ich diese delta Beschleunigung mit in der Formal berücksichtigen?


Meine Ideen:
Integration der Beschleunigung! ABER wie sieht dann die Formel aus
theniles Auf diesen Beitrag antworten »
RE: Beschleunigung
moin,

ich verstehe das Problem noch nicht ganz. kannst du (möglichst mit dem Formeleditor, den du auf der rechten Seite findest) zeigen welche Formeln du bisher aufgestellt hast?

Ist dein Problem jetzt nur, dass du nicht weißt, wie du von der Beschleunigung auf die neue Position kommst?
Falls ja:
Erst von der Beschleunigung auf die Geschwindigkeit kommen und dann von der Geschwindigkeit auf die Position kommen. Das geschieht jeweils durch Integration nach t.
Bevor ich das jetzt vorrechne bestätige mir aber bitte nochmal ob du das auch meinst ^^
ilja2 Auf diesen Beitrag antworten »

hey cool dass sich mal ejmand meldet

ja ok ich hab das jetzt dadurch gelöst dass ich in sehr kleinen schritten die jeweilige berechnung durch führe

also so:

velX/velY/velZ sind die geschwindigkeit(svektoren)/en in die jew. Richtung
posX/posY/posZ sind dann die jeweiligen positionskoordinatenpunkte

dann nehm ich einfach die Formel:

(neue position)=0.5*a*t^2+v*t+(alte position)

delPos = Wuzel(delX^2+delY^2+delZ^2) delPos ist der abstand vom gravitationspunkt

velX=velX*a*t*(gX-posX)/delPos gX ist das x vom gravitationspunkt

(gX-posX)/delPos) entspricht dem cosinus des Winkels zum gravitationspunkt die Beschleunigung wirkt ja eben mit dem kosinus vom winkel auf diesen gravitationsvektor von x
und mit dem sinus beim velY

velY=velY*a*t*(gY-posY)/delPos
velZ=velZ*a*t*(gZ-posZ)/delPos gZ=0


Irgendiwe denke ich gerade dass ich einen denkfehler habe mit den winkeln!!!
aber es sieht eigentlich richtig auf dem schirm aus wäre nett wenn jemand meinen gedanken nachvollzieghen könnte und meine möglichen fehler zeigen könnte



zum schluss berechne ich die jeweiligen wege in x/y/z direction und addiere dann die erhaltenen delta geschwindigkeiten zu den herrschenden geschwindigkeiten
Ilja3 Auf diesen Beitrag antworten »

Hier mal der Code:

delPos=Math.sqrt((gX-posX)*(gX-posX)+(gY-posY)*(gY-posY)+(posZ*posZ));

if(delPos!=0)
{
dVX=a*timeStep*(gX-posX)/delPos;
dVY=a*timeStep*(gY-posY)/delPos;
dVZ=a*timeStep*(-posZ)/delPos;
}
else
{
dVX=0;
dVY=0;
dVZ=0;
}

posX=posX+dVX*timeStep/2d+velX*timeStep;
posY=posY+dVY*timeStep/2d+velY*timeStep;
posZ=posZ+dVZ*timeStep/2d+velZ*timeStep;

velX+=dVX;
velY+=dVY;
velZ+=dVZ;
Dopap Auf diesen Beitrag antworten »

deine lineare Iteration für die x-Komponente:





Beachte: kein impliziertes Mal, z.B. ist vx die x-Komponente von v

Das ist z.B für einen schrägen Raketenstart etc. gut geeignet, wenn man so wählt,dass sich kaum ändert.

wesentlich genauer wird es, wenn man erst einen Prädiktor an der neuen Position bestimmt, und dann wieder von n nach n+1 iteriert aber

den Beschleunigungsvektor verwendet.
ilja4 Auf diesen Beitrag antworten »

hi da hast du recht mit dem neuen an+1 aber ich kann ja die neue position ja nur bestimmen indem ich weiß um wieviel sich a verändert.irgendwie ein abstrakteres henne ei problem

zur zeit benutze ich ja einfach die alte beschleunigung und lasse es die neue position errechnen und berechne erst im nächsten iterationsschritt das neue a


am besten wäre es natürlich a(t) über die zeit zu integrieren um die wirkung von zu ermitteln während der zeitspanne
werde es wohl auch so versuchen zu implementieren

ich hab nicht ganz deine allererst bemerkung verstanden könntest du vllt näher darauf eingehen?
 
 
Dopap Auf diesen Beitrag antworten »

nehmen wir an, die Beschleunigung nähme zu.

Verwende ich für das folgende Intervall, dann bin ich zu "kurz".

verwende ich das zukünftige für das folgende Intervall, dann bin ich zu "lang".

Besser ist logischerweise der Mittelwert für das Intervall. Das war mal meine Idee. Ich war dann aber überrascht wie gut das geht.

Alles sind Iterationen, also kein Henne - Ei Problem.
ilja5 Auf diesen Beitrag antworten »

es klappt aber nur weil ich auch die beschleunigung drossele sonst kann es mir passieren dass er eine beschleunigung die so immens hoch ausrechnet falls der abstand von der gravitationsquelle sehr nah an 0 dran ist(ich benutze die allgemein gültige newtonsche graviationsformel) und mir eine derartig hohe geschwindigkeitszunahme ausrechnet dass das ding die lichtgeschwindigkeit durchbricht und weg ist.


deswegen ja meine idee die beschleunigung einfach zu integrieren dann kann nichts schief gehen eigenltich

die beshcleunigung zu drosseln klappt auch besser als die geschwindigkeit zu drosseln habe ich gemerkt obwohl das der bessere ansatz ist aber nicht klappt ohne die integrationsgeschichte dann

So jetzt mal zu deinem Vorschlag: den mitellwert der Beschleunigung zu nehmen wäre natürlich auch eine gute lösung

Doch was ich meine was das Problem bei der Sache ist: wie soll ich denn bitte a n+1 ausrechnen dafür müsste ich doch einen ort bestimmen das heißt ich müsste die Formel wieder anwenden und das heißt ich benutze das jetzige an
dann wäre ich wie du richtig sagst zu Kurz und hätte ein kleineres an+1 heraus deswegen kann ich den ort nciht ohne die richtige beschleunigung und die richtige endbeschleunigung nicht ohne den ort.



wie dem auch sei das wäre immer noch genauer als meine jetzige methode

ich werd mal sehen wie ich das Löse und poste es hier dann für andere interressierte
ilja6 Auf diesen Beitrag antworten »

achja ich bekomme vom hauptprogramm eine deltatime die sich immer zwischen 20-30 ms besteht

dann iteriere ich die neuen position immer um eine mikrosekunde deswegen habe ich wohl auch so ein gutes normales verhalten udn die annomalien fallen nciht so auf! Darunter elidet aber leider die Performance bei mehr als 500 objekten Big Laugh
Dopap Auf diesen Beitrag antworten »

1.) mit Iteration in ein schwarzes Loch zu stürzen ist keine gute Idee.

2.) aber Umlaufbahnen (Keplerellipsen ) sind gut möglich.

Aber gerade für diese ist das Einschrittverfahren nicht gut geeignet. Ich habe dann damals "mein" Zweischrittverfahren auf dem TR implementiert und es klappte sehr gut.
Mit Delta t im Sekundenbereich oder länger. (TR! )

Hintergrund : antriebsloser Mondschuss mit Umkehrbahn like Apollo 13.

3.) klar, mit einem delta t im Millisekundenbereich ( oder gar Mikrosekunden ) ist man fein raus Augenzwinkern

4.) Zur Ort-Beschleunigungsproblematik: klar ist, dass alles am Ende des Intervalls am "Franzen" ist. Es ist gut möglich, dass ein geringfügig anderer Wert als 1/2 noch besser wäre. Leider habe ich bisher noch niemand gefunden der dies begründen könnte.
verwirrt
ilja Auf diesen Beitrag antworten »

hey ich hab wenigstens jetzt rausbekommen dass es sich bei meinem Problem um das Zwei-Körper-Problem/Mehrkörperproblem/Kepplerproblem handelt. Ich muss mcih da erstmal noch reinlesen aber auf den ersten Blick scheint die Lösung nciht ganz Trivial zu sein.
ilja Auf diesen Beitrag antworten »

hey:

Mein Vorschlag wäre jetzt einfach folgende formel zu benutzen:

Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »