Höchstgeschwindigkeit errechnen



  • Hallo, ich hab ein kleines Programm geschrieben, dass die Bewegung eines Objektes simulieren soll. Dafür habe ich eine Variable v, die die Geschwindigkeit des Objektes speichert, sowie eine Variable a die die Beschleunigung des Objekts speichert. Die Geschwindigkeit des Objekts ist zuallererst 0. Es wird dann alle 25 Millisekunden a zu v und v zu der x-Koordinate des Objekts hinzuaddiert. Um Reibung zu simulieren, wird der Wert aus v alle 25 Millisekunden mit dem Faktor 0.98 (wenn jemand weiß, wie das im "wahren Leben" mit der Reibung aussieht bitte dazuschreiben 😉 )multipliziert. Nun möchte ich die Höchstgeschwindigkeit des Objekts wissen, also an dem sich Beschleunigung und Reibung gegenseitig aufheben, um noch einen kleinen Tacho dafür zu erstellen. Ich vermute die volgende Gleichung ist die Richtige dafür: v * 0.98 = v + a. Aber ich komme nicht auf die Lösung weil auf beiden Seiten v steht kann ich v ja nicht subtrahieren oder dividieren. Hoffe jmd kann mir bei den 2 Problemen helfen! 😃



  • v ausklammern?



  • Erstma ist die Frage, ob der update von v durch a vor oder nach dem "Reibungsupdate" erfolgt:

    (v' sei das neue v, b der Reibungsfaktor)

    vor: v' = vb + a , wir wollen v' - v = 0 (keine Änderung)
    v
    b + a - v = 0
    ausklammern
    v*(b-1) + a = 0
    weiter umstellen
    v = a / (1-b)

    nach: v' = (v + a)b
    ähnliche Rechnung wie oben
    v = b
    a / (1-b)


  • Mod

    Vernachlässigen wir mal die Diskretisierung. Idealerweise sollte diese ohnehin so gewählt sein, dass sich das gleiche Ergebnis wie bei einer analytischen Lösung ergeben und für die Endgeschwindigkeit ist dies sowieso irrelevant. Du hast also ein Bewegungsgleichungen:
    x¨=v˙=a0.02v\ddot x = \dot v = a -0.02 v
    Die Lösung davon ist
    v(t)=50a+e0.02tCv(t) = 50 a + e^{-0.02 t} C
    Das geht für große t gegen v=50av = 50 a. Das ist auch recht anschaulich, denn es ist genau der Wert, wenn v * 0.02 > a, also die Geschwindigkeitsänderung durch Reibung größer ist als das was durch die Beschleunigung dazu kommt.

    Diese Art der Reibung, die du hier modelliert hast, nennt man Stoke'sche Reibung. Hier ist die Reibungskraft proportional zur Geschwindigkeit. Diese Form der Reibung hat man bei extrem langsamen Bewegungen (niedrige Reynoldszahl), z.B. ein Goldfisch der in Honig schwimmt. Bei schnellen Bewegungen (z.B. ein Auto über 50 km/h) geht dies über in eine Reibungskraft, die quadratisch zur Geschwindigkeit ist.



  • Achja, ausklammern 🙄 Ist leider schon etwas her 😃 . Naja, vielen Dank für die Lösung. Nochmal zu der Reibung: wie müsste das dann aussehen, wenn man zum Beispiel die Reibung eines 50km/h schnellen Autos auf normaler Straße miteinbeziehen möchte. Wird das dann auch wieder mit der Geschwindigkeit multipliziert bzw. mit welchem Faktor? Und wie ist das dann, ein Auto bleibt ja auch irgendwann stehen, aber wenn ich die Geschwindigkeit immer mit einem Faktor wie 0.98 multipliziere, wird die Geschwindigkeit ja nie 0 und das Auto bewegt sich immer noch minimal.


  • Mod

    Taeli schrieb:

    Achja, ausklammern 🙄 Ist leider schon etwas her 😃 . Naja, vielen Dank für die Lösung. Nochmal zu der Reibung: wie müsste das dann aussehen, wenn man zum Beispiel die Reibung eines 50km/h schnellen Autos auf normaler Straße miteinbeziehen möchte.

    Dann bekommst du eben eine Bewegungsgleichung
    v˙=a0.02v2\dot v = a - 0.02 v^2
    und passt dein Update entsprechend an.

    Wird das dann auch wieder mit der Geschwindigkeit multipliziert bzw. mit welchem Faktor? Und wie ist das dann, ein Auto bleibt ja auch irgendwann stehen, aber wenn ich die Geschwindigkeit immer mit einem Faktor wie 0.98 multipliziere, wird die Geschwindigkeit ja nie 0 und das Auto bewegt sich immer noch minimal.

    Tja, das kommt eben davon, wenn man nur Strömungswiderstand betrachtet und sonst alles vernachlässigt. Immerhin wird, wenn das Auto langsam genug geworden ist, wieder die lineare Reibung dominieren. Und dann erhält man etwas, das zwar nie 0 wird, aber immerhin konvergiert das Integral. Das heißt, das Auto hält zwar nie an, rollte aber höchstens bis zu einem bestimmten Punkt (dem es sich immer langsamer nähert). Wenn man dann noch beachtet, dass die Rollreibung der Reifen ein kleiner, aber von der Geschwindigkeit unabhängiger, Effekt ist, kommt das Auto sogar ganz zum stehen. Die Bewegungsgleichung für das rollende Auto wäre also insgesamt:
    v˙=C_1v2C_2vC3\dot v = - C\_1 v^2 - C\_2 v - C_3
    Und damit kommt man schon auf ziemlich brauchbare Ergebnisse.

    P.S.: Das obige Modell bei dem die Rollreibung einfach nur eine Konstante ist, ist natürlich sehr stark vereinfacht und sollte so nicht zu weit getrieben werden. Denn wenn man das tatsächlich bis zum Erreichen von v=0 durchzieht, würde das Auto danach wieder Beschleunigen 😃 . Diese Gleichung ist eher so für ein rollendes Auto, welches noch nicht zu langsam geworden ist.



  • Danke, hat geholfen die Simulation noch realistischer zu machen. 😃


Anmelden zum Antworten