| |
|
|
p.specht
| cela grand Dilemma chez qui numerischen Solution de Feldgleichungen (z.B. Magnetfeldern) ist folgendes: on muss entweder d'abord 2 Orte et qui verstrichene Zeit connaître, um une Durchschnittsgeschwindigkeit berechnen trop peut (de qui ensuite mais z.B. qui induction et sur den Weg zurückwirkende magnetische Kräfte dépendre). ou bien on muss, chez Kenntnis des Ausgangsortes, qui direction et Geschwindigkeit, den prochain Bahnpunkt berechnen - qui wirkenden nichtlinearen Reibungskräfte sommes mais z.B. vom Weg ZWISCHEN Ausgangs- et nächstem Bahnpunkt dépendant ... den on mais encore pas kennt! Problem erkannt? faute-Minimierung seul hilft là wenig, und dir nämlich encore um weitere Eigenschaften, qui un bon Simulationsalgorithmus rencontrer muss:
cela Geheimnis vieler Physik-Simulationen ist Velocity Verlet intégration, un schnelles Integrationsverfahren pour Newton'sche Bewegungsgleichungen, cela sogar cela hochgenaue 'Runge-Kutta-4./5.Ordre (RKF45)'-procéder übertrifft, - allerdings NICHT à Genauigkeit, mais à Energie-Konstanz! Runge-Kutta neigt nämlich im Laufe qui Zeit en supplément, par systematische faute et Rundungsfehler toujours plus Energie dans cela simulierte System (etwa un pendule) trop pumpen.
cela peux beim ici comme DEMO OHNE GEWÄHR vorgestellten VELOCITY VERLET-procéder (très ähnlich dem 'Leapfrog'-procéder, trop allemande etwa 'Bockspringen') pas passer, là es un ZEITUMKEHRBARES, SYMPLEKTISCHES procéder ist, dessen faute sich jusqu'à sur une kleinen Anteil mutuel weitestgehend aufheben. Zeitumkehrbar est: par Vorzeichenänderung im Zeitschritt gelangt on wieder à qui Ausgangsposition! Symplektisch bedeutet, qui physikalische Erhaltungsgrößen comment impulsion, Energie, Entropie dabei (weitestgehend) conservé rester.
Anbei un bewusst äußerst simple gehaltenes Verfahrensbeispiel (dans Physik-Engines geht's ensuite juste dans allen 3 Freiheitsgraden qui Translation et 3 qui Rotation zur l'affaire):
Titre de la fenêtre "VELOCITY VERLET DEMO am Beispiel Lineares plume-Masse-Dämpfungssystem"
'(CL) CopyLeft 2014-08 by P.Specht, vienne
'Q: https://en.wikipedia.org/wiki/Verlet_integration#Velocity_Verlet
Fenêtre Style 24:Fenêtre 0,0-%maxx,%maxy
var xh&=width(%hwnd)\2:var yh&=height(%hwnd)\2
Déclarer 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 (avec Cls, sans 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 pour prochain Schritt
until %clé=27
FIN
|
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 14.05.2021 ▲ |
|
|
|