Ich habe das Buch Computersimulation von Flüssigkeiten von Allen und Tildesley gelesen . Ab Seite 71 diskutieren die Autoren die verschiedenen Algorithmen, mit denen Newtons Bewegungsgleichungen in Simulationen der Molekulardynamik (MD) integriert werden. Ab Seite 78 diskutieren die Autoren den Verlet-Algorithmus, bei dem es sich möglicherweise um den kanonischen Integrationsalgorithmus in MD handelt. Sie stellen fest:
Die wahrscheinlich am weitesten verbreitete Methode zur Integration der Bewegungsgleichungen ist die von Verlet (1967) eingeführte und Stormer (Gear 1971) zugeschriebene. Diese Methode ist eine direkte Lösung der Gleichung zweiter Ordnung . Das Verfahren basiert auf Positionen , Beschleunigungen und den Positionen aus dem vorherigen Schritt. Die Gleichung zum Vorrücken der Positionen lautet wie folgt:
In Bezug auf Gleichung (3.14) sind mehrere Punkte zu beachten. Es ist zu sehen, dass die Geschwindigkeiten überhaupt nicht auftreten. Sie wurden durch Addition der durch Taylor-Expansion um erhaltenen Gleichungen eliminiert :
Später (auf Seite 80) geben die Autoren Folgendes an:
Gegenüber dem Verlet-Algorithmus kann die Form des Algorithmus unnötigerweise eine gewisse numerische Ungenauigkeit einführen. Dies entsteht, weil in Gleichung (3.14) ein kleiner Term ( ) zu einer Differenz von großen Terms ( ) addiert wird , um die Trajektorie zu erzeugen.
Ich vermute, dass der "kleine Term" ist und die "Differenz der großen Terme" .
Meine Frage ist, warum numerische Ungenauigkeit durch Hinzufügen eines kleinen Terms zu einem Unterschied von großen Terms entsteht.
Ich interessiere mich für einen eher grundsätzlichen, begrifflichen Grund, da mir Einzelheiten der Gleitkomma-Arithmetik überhaupt nicht bekannt sind. Kennen Sie auch Referenzen vom Typ "Überblick" (Bücher, Artikel oder Websites), die mich mit den Grundgedanken der Gleitkomma-Arithmetik in Verbindung mit dieser Frage bekannt machen? Vielen Dank für Ihre Zeit.
Um das Beispiel von Pedro auf die Gleichung anzuwenden , nehmen Sie an, dass Ihre Variablen mit den folgenden Werten gespeichert sind:( 3.14 )
r ( t - & dgr ; t ) = 100 & dgr; t 2 a ( t ) = 1,49
Aus sollte das folgen(3.14)
Da wir jedoch nur drei Ziffern verwenden können, wird das Ergebnis auf abgeschnitten
Dieser Fehler breitet sich aus, so dass Sie nach 20 Schritten unter der Annahme, dass unverändert bleibt, r ( t + 20 δ t ) = 331 anstelle von 433,90 erhalten .a(t) r(t+20δt)=331 433.90
quelle
Pedro gibt bereits die wichtige Tatsache, nämlich Stornierung. Der Punkt ist, dass jede Zahl, mit der Sie rechnen, eine zugehörige Genauigkeit hat; Beispielsweise kann eine Gleitkommazahl mit einfacher Genauigkeit nur Dinge mit einer Genauigkeit von bis zu 8 Stellen darstellen. Wenn Sie zwei Zahlen haben, die fast genau gleich sind, sich aber in der 7. Ziffer unterscheiden, ist der Unterschied wieder eine 8-stellige Gleitkommazahl mit einfacher Genauigkeit, und es sieht so aus, als ob sie auf 8 Ziffern genau ist, in Wirklichkeit jedoch nur die erste 1 oder 2 Ziffern sind genau, da die Mengen, aus denen Sie sie berechnet haben, über diese ersten 1 oder 2 Ziffern der Differenz hinaus nicht genau sind.
Das Buch, das Sie zitieren, stammt aus dem Jahr 1989. Damals wurden Berechnungen meist in einfacher Genauigkeit durchgeführt, und Abrundung und Löschung waren schwerwiegende Probleme. Heutzutage werden die meisten Berechnungen mit doppelter Genauigkeit und einer Genauigkeit von 16 Stellen durchgeführt, und dies ist heute weitaus weniger ein Problem als früher. Ich denke, es lohnt sich, die von Ihnen zitierten Absätze mit einem Körnchen Salz zu lesen und sie im Kontext ihrer Zeit zu betrachten.
quelle