He estado leyendo el libro Computer Simulation of Liquids de Allen y Tildesley. A partir de la página 71, los autores analizan los diversos algoritmos que se utilizan para integrar las ecuaciones de movimiento de Newton en simulaciones de dinámica molecular (DM). A partir de la página 78, los autores discuten el algoritmo Verlet, que es quizás el algoritmo de integración canónica en MD. Ellos declaran:
Quizás el método más utilizado para integrar las ecuaciones de movimiento es el adoptado inicialmente por Verlet (1967) y atribuido a Stormer (Gear 1971). Este método es una solución directa de la ecuación de segundo orden . El método se basa en las posiciones , las aceleraciones y las posiciones del paso anterior. La ecuación para avanzar las posiciones dice lo siguiente:r ( t ) a ( t ) r ( t - δ t )
Hay varios puntos a tener en cuenta sobre la ecuación (3.14). Se verá que las velocidades no aparecen en absoluto. Se han eliminado mediante la adición de las ecuaciones obtenidas por la expansión de Taylor sobre :
Luego, más tarde (en la página 80), los autores declaran:
Contra el algoritmo de Verlet, ... la forma del algoritmo puede introducir innecesariamente alguna imprecisión numérica. Esto surge porque, en la ecuación (3.14), se agrega un término pequeño ( ) a una diferencia de términos grandes ( ), para generar la trayectoria. O ( δ t 0 )
Supongo que el "término pequeño" es , y la "diferencia de términos grandes" es .
Mi pregunta es, ¿por qué la imprecisión numérica resulta de agregar un término pequeño a una diferencia de términos grandes?
Estoy interesado en una razón conceptual bastante básica, ya que no estoy familiarizado con los detalles de la aritmética de coma flotante. Además, ¿conoce alguna referencia de "tipo general" (libros, artículos o sitios web) que me presente ideas básicas de aritmética de coma flotante relacionadas con esta pregunta? Gracias por tu tiempo.
pero, dado que solo podemos usar tres dígitos, el resultado se trunca a
fuente
Pedro ya da el hecho importante, a saber, la cancelación. El punto es que cada número con el que calcula tiene una precisión asociada; por ejemplo, un solo número de coma flotante de precisión solo puede representar cosas de hasta aproximadamente 8 dígitos de precisión. Si tiene dos números que son casi exactamente iguales pero difieren en el séptimo dígito, entonces la diferencia será nuevamente un número de coma flotante de precisión simple de 8 dígitos y parece que tiene una precisión de 8 dígitos, pero en realidad solo el primero 1 o 2 dígitos son precisos porque las cantidades a partir de las cuales lo calculó no son precisos más allá de los primeros 1 o 2 dígitos de la diferencia.
Ahora, el libro que cita es de 1989. En aquel entonces, los cálculos se realizaban con mayor frecuencia en precisión simple y el redondeo y la cancelación eran problemas serios. Hoy en día, la mayoría de los cálculos se realizan con doble precisión con 16 dígitos de precisión, y esto es mucho menos problema de lo que solía ser. Creo que vale la pena leer los párrafos que cita con un grano de sal y tomarlos en el contexto de su tiempo.
fuente