| |
|
|
p.specht
| Das große Dilemma en numerischen Solución de Feldgleichungen (z.B. Magnetfeldern) es folgendes: Man muss entweder zuerst 2 Orte y el verstrichene Tiempo kennen, una Durchschnittsgeschwindigkeit berechnen a puede (de el entonces aber z.B. el Induktion y en el Weg zurückwirkende magnetische Kräfte abhängen). Oder uno muss, en Kenntnis des Ausgangsortes, el Richtung y Geschwindigkeit, el nächsten Bahnpunkt berechnen - el wirkenden nichtlinearen Reibungskräfte son aber z.B. vom Weg ZWISCHEN Ausgangs- y nächstem Bahnpunkt abhängig ... el uno aber todavía no sabe! Problema erkannt? Fehler-Minimierung allein hilft como wenig, lo va nämlich todavía en weitere Características, el una guter Simulationsalgorithmus erfüllen muss:
Das Geheimnis vieler Physik-Simulationen es Velocity Verlet Integration, una schnelles Integrationsverfahren para Newton'sche Bewegungsgleichungen, el incluso el hochgenaue 'Runge-Kutta-4./5.Orden (RKF45)'-Verfahren übertrifft, - allerdings NICHT a Genauigkeit, pero a Energie-Konstanz! Runge-Kutta neigt nämlich en el Laufe el Tiempo dazu, por systematische Fehler y Rundungsfehler siempre mehr Energie en el simulierte Sistema (etwa una Pendel) a pumpen.
Das kann beim aquí como DEMO OHNE GEWÄHR vorgestellten VELOCITY VERLET-Verfahren (muy ähnlich el 'Leapfrog'-Verfahren, a Alemán etwa 'Bockspringen') no passieren, como lo una ZEITUMKEHRBARES, SYMPLEKTISCHES Verfahren es, dessen Fehler se salvo una pequeña Anteil gegenseitig weitestgehend aufheben. Zeitumkehrbar heißt: Durch Vorzeichenänderung en el Zeitschritt gelangt uno otra vez a el Ausgangsposition! Symplektisch bedeutet, daß physikalische Erhaltungsgrößen como Impuls, Energie, Entropie esta (weitestgehend) obtener bleiben.
Anbei una bewusst äußerst simplemente gehaltenes Verfahrensbeispiel (In Physik-Engines geht's entonces igual en allen 3 Freiheitsgraden el Translation y 3 el Rotation a Sache):
Título de la ventana "VELOCITY VERLET DEMO al Ejemplo Lineares Feder-Masse-Dämpfungssystem"
'(CL) CopyLeft 2014-08 by P.Pájaro carpintero, Wien
'Q: https://en.wikipedia.org/wiki/Verlet_integration#Velocity_Verlet
Ventana de Estilo 24:Ventana 0,0-%maxx,%maxy
var xh&=width(%hwnd)\2:var yh&=height(%hwnd)\2
Declarar m!,dt!,x1!,x2!,v1!,v15!,v2!,a1!,a2!
proc A :parámetros 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
volver (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 (con Cls, sin 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 para nächsten Schritt
until %key=27
FIN
|
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 14.05.2021 ▲ |
|
|
|