J'ai lu le livre Computer Simulation of Liquids d'Allen et Tildesley. À partir de la page 71, les auteurs discutent des divers algorithmes utilisés pour intégrer les équations de mouvement de Newton dans les simulations de dynamique moléculaire (MD). À partir de la page 78, les auteurs discutent de l'algorithme de Verlet, qui est peut-être l'algorithme canonique d'intégration dans MD. Ils déclarent:
La méthode d'intégration des équations du mouvement la plus utilisée est peut-être celle initialement adoptée par Verlet (1967) et attribuée à Stormer (Gear 1971). Cette méthode est une solution directe de l'équation du second ordre . La méthode est basée sur les positions r ( t ) , les accélérations a ( t ) et les positions r ( t - δ t ) de l'étape précédente. L'équation pour faire avancer les positions se lit comme suit:
Il y a plusieurs points à noter à propos de l'équation (3.14). On verra que les vitesses n'apparaissent pas du tout. Ils ont été éliminés par addition des équations obtenues par expansion de Taylor sur :
Plus tard (à la page 80), les auteurs déclarent:
Contre l'algorithme de Verlet, ... la forme de l'algorithme peut inutilement introduire une certaine imprécision numérique. Cela vient du fait que, dans l'équation (3.14), un petit terme ( ) s'ajoute à une différence de grands termes ( O ( δ t 0 ) ), afin de générer la trajectoire.
Je suppose que le "petit terme" est , et la "différence des grands termes" est 2 r ( t ) - r ( t - δ t ) .
Ma question est la suivante: pourquoi l'imprécision numérique résulte-t-elle de l'ajout d'un petit terme à une différence de grands termes?
Je m'intéresse à une raison conceptuelle plutôt basique, car je ne connais pas du tout les détails de l'arithmétique à virgule flottante. Connaissez-vous également des références de type «aperçu» (livres, articles ou sites Web) qui pourraient me présenter des idées de base de l'arithmétique à virgule flottante liées à cette question? Merci pour votre temps.
De( 3.14 ) il devrait en découler
mais, comme nous ne pouvons utiliser que trois chiffres, le résultat devient tronqué à
Cette erreur se propagera, de sorte qu'après 20 étapes, en supposanta (t) reste inchangé, vous obtenez r (t+20δt ) = 331 au lieu de 433,90 ,
la source
Pedro donne déjà le fait important, à savoir l'annulation. Le fait est que chaque nombre avec lequel vous calculez a une précision associée; par exemple, un nombre à virgule flottante simple précision ne peut représenter que des choses jusqu'à environ 8 chiffres de précision. Si vous avez deux nombres qui sont presque exactement les mêmes mais qui diffèrent au 7e chiffre, alors la différence sera à nouveau un nombre à virgule flottante à 8 chiffres et il semble qu'il soit précis à 8 chiffres, mais en réalité seulement le premier 1 ou 2 chiffres sont exacts car les quantités à partir desquelles vous l'avez calculé ne sont pas précises au-delà de ces 1 ou 2 premiers chiffres de la différence.
Maintenant, le livre que vous citez date de 1989. À l'époque, les calculs étaient le plus souvent effectués en simple précision et l'arrondi et l'annulation étaient de graves problèmes. Aujourd'hui, la plupart des calculs sont effectués en double précision avec 16 chiffres de précision, et c'est beaucoup moins un problème aujourd'hui qu'il ne l'était auparavant. Je pense qu'il vaut la peine de lire les paragraphes que vous citez avec un grain de sel et de les prendre dans le contexte de leur époque.
la source