Deutsch
Quelltexte/ Codesnippets

Geheimnis vieler Physik-Engines: Velocity Verlet Integrator

 

p.specht

Das große Dilemma bei der numerischen Lösung von Feldgleichungen (z.B. Magnetfeldern) ist folgendes: Man muss entweder zuerst 2 Orte und die verstrichene Zeit kennen, um eine Durchschnittsgeschwindigkeit berechnen zu können (von der dann aber z.B. die Induktion und auf den Weg zurückwirkende magnetische Kräfte abhängen). Oder man muss, bei Kenntnis des Ausgangsortes, der Richtung und Geschwindigkeit, den nächsten Bahnpunkt berechnen - die wirkenden nichtlinearen Reibungskräfte sind aber z.B. vom Weg ZWISCHEN Ausgangs- und nächstem Bahnpunkt abhängig ... den man aber noch nicht kennt! Problem erkannt?
Fehler-Minimierung allein hilft da wenig, es geht nämlich noch um weitere Eigenschaften, die ein guter Simulationsalgorithmus erfüllen muss:

Das Geheimnis vieler Physik-Simulationen ist Velocity Verlet Integration, ein schnelles Integrationsverfahren für Newton'sche Bewegungsgleichungen, das sogar das hochgenaue 'Runge-Kutta-4./5.Ordnung (RKF45)'-Verfahren übertrifft, - allerdings NICHT an Genauigkeit, sondern an Energie-Konstanz! Runge-Kutta neigt nämlich im Laufe der Zeit dazu, durch systematische Fehler und Rundungsfehler immer mehr Energie in das simulierte System (etwa ein Pendel) zu pumpen.

Das kann beim hier als DEMO OHNE GEWÄHR vorgestellten VELOCITY VERLET-Verfahren (sehr ähnlich dem 'Leapfrog'-Verfahren, zu deutsch etwa 'Bockspringen') nicht passieren, da es ein ZEITUMKEHRBARES, SYMPLEKTISCHES Verfahren ist, dessen Fehler sich bis auf einen kleinen Anteil gegenseitig weitestgehend aufheben. Zeitumkehrbar heißt: Durch Vorzeichenänderung im Zeitschritt gelangt man wieder an die Ausgangsposition! Symplektisch bedeutet, daß physikalische Erhaltungsgrößen wie Impuls, Energie, Entropie dabei (weitestgehend) erhalten bleiben.

Anbei ein bewusst äußerst einfach gehaltenes Verfahrensbeispiel (In Physik-Engines geht's dann gleich in allen 3 Freiheitsgraden der Translation und 3 der Rotation zur Sache):
WindowTitle "VELOCITY VERLET DEMO am Beispiel Lineares Feder-Masse-Dämpfungssystem"
'(CL) CopyLeft 2014-08 by P.Specht, Wien
'Q: https://en.wikipedia.org/wiki/Verlet_integration#Velocity_Verlet
WindowStyle 24:Window 0,0-%maxx,%maxy
var xh&=width(%hwnd)\2:var yh&=height(%hwnd)\2
Declare m!,dt!,x1!,x2!,v1!,v15!,v2!,a1!,a2!

proc A :parameters x!,v!

    var l!=200' Federlänge m/1000
    var fk!=25' Federkonstante N/m 'Kraft pro Auslenkung
    var rk!=0.2' Reibungskonstante N*s/m
    return (l!-x!)*fk!/m! - v!*rk!
    'Beschleunigung = Kraft / Masse - Reibungsdämpfung

endproc

proc DRAW

    usepen 0,(xh&-x2!)/30  ,255
    cls
    line xh&-500,yh& - xh&+x2!-200,yh&
    usepen 0,37,rgb(0,0,255)
    line xh&+x2!-200,yh& - xh&+x2!-199,yh&

endproc

'Startwerte:
dt!=0.03's
m!=1'kg
'Einfachstes Zeichenmodell (mit Cls, ohne MemCopy)
'Hauptschleife
Repeat :waitinput 33
'VELOCITY VERLET (aka Leapfrog)
v15!= v1!+a1!/2*dt!
x2! = x1!+v15!*dt!
a2! = A(x2!,v15!)
v2! = v15!+dt!*a2!/2
DRAW
a1!=a2!:v1!=v2!:x1!=x2!' Umgreifen für nächsten Schritt

until %key=27

END
 
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
14.05.2021  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.950 Betrachtungen

Unbenanntvor 0 min.
Jens-Arne Reumschüssel08.07.2022
p.specht01.07.2022
RudiB.07.03.2022
R.Schneider20.11.2021
Mehr...

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

p.specht (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie