Ho letto il libro Computer Simulation of Liquids di Allen e Tildesley. A partire da pagina 71, gli autori discutono i vari algoritmi utilizzati per integrare le equazioni del moto di Newton nelle simulazioni di dinamica molecolare (MD). A partire da pagina 78, gli autori discutono dell'algoritmo Verlet, che è forse l'algoritmo di integrazione canonica in MD. Dichiarano:
Forse il metodo più ampiamente usato per integrare le equazioni del moto è quello inizialmente adottato da Verlet (1967) e attribuito a Stormer (Gear 1971). Questo metodo è una soluzione diretta dell'equazione del secondo ordine . Il metodo si basa sulle posizioni , sulle accelerazioni e sulle posizioni del passaggio precedente. L'equazione per l'avanzamento delle posizioni è la seguente:a ( t ) r ( t - δ t )
Ci sono diversi punti da notare su eqn (3.14). Si vedrà che le velocità non appaiono affatto. Sono stati eliminati aggiungendo le equazioni ottenute dall'espansione di Taylor su :
Quindi, in seguito (a pagina 80), gli autori dichiarano:
Contro l'algoritmo Verlet, ... la forma dell'algoritmo potrebbe inutilmente introdurre alcune imprecisioni numeriche. Ciò deriva dal fatto che, in eqn (3.14), un piccolo termine ( ) viene aggiunto a una differenza di termini grandi ( ), per generare la traiettoria. O ( δ t 0 )
Immagino che il "piccolo termine" sia , e la "differenza di termini grandi" sia .
La mia domanda è: perché l'imprecisione numerica deriva dall'aggiunta di un termine piccolo a una differenza di termini grandi?
Sono interessato a una ragione piuttosto basilare e concettuale, dal momento che non conosco affatto i dettagli dell'aritmetica in virgola mobile. Inoltre, conosci qualche riferimento di tipo "panoramica" (libri, articoli o siti Web) che mi introdurrebbe a idee di base sull'aritmetica in virgola mobile relative a questa domanda? Grazie per il tuo tempo.