Algoritmo de integración numérica
El algoritmo de Beeman es un método para integrar numéricamente ecuaciones diferenciales ordinarias de orden 2, más específicamente las ecuaciones de movimiento de Newton . Fue diseñado para permitir un gran número de partículas en simulaciones de dinámica molecular. Hay una variante directa o explícita y una implícita del método. La variante directa fue publicada por Schofield en 1973 [1] como comunicación personal de Beeman. Esto es lo que comúnmente se conoce como método de Beeman . Es una variante del método de integración de Verlet . Produce posiciones idénticas, pero utiliza una fórmula diferente para las velocidades. Beeman publicó en 1976 [2] una clase de métodos implícitos (predictor-corrector) de varios pasos, donde el método de Beeman es la variante directa del método de tercer orden en esta clase.![{\displaystyle {\ddot {x}}=A(x)}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Ecuación
La fórmula utilizada para calcular las posiciones en el tiempo en el esquema predictor-corrector completo [2] es:![{\displaystyle t+\Delta t}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- Predecir a partir de datos en ocasiones
![{\displaystyle x(t+\Delta t)}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle t{\text{ y }}t-\Delta t}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
.
- Corrija la posición y las velocidades en el momento a partir de los datos mediante la evaluación repetida de la ecuación diferencial para obtener la aceleración y de las ecuaciones del sistema implícito.
![{\displaystyle t+\Delta t}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle t{\text{ y }}t+\Delta t}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle a(t+\Delta t)}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle {\begin{aligned}x(t+\Delta t)&=x(t)+v(t)\Delta t+{\frac {1}{6}}{\Bigl (}a(t+\Delta t)+2a(t){\Bigr )}\Delta t^{2}+O(\Delta t^{4});\\v(t+\Delta t)\Delta t&=x(t+\Delta t )-x(t)+{\frac {1}{6}}{\Bigl (}2a(t+\Delta t)+a(t){\Bigr )}\Delta t^{2}+O(\ Delta t^{4});\end{aligned}}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- En las pruebas se demostró que este paso del corrector debe repetirse como máximo dos veces. Los valores de la derecha son los valores antiguos de las últimas iteraciones, lo que da como resultado los nuevos valores de la izquierda.
Utilizando únicamente la fórmula predictora y el corrector de las velocidades se obtiene un método directo o explícito [1] que es una variante del método de integración de Verlet: [3]
![{\displaystyle {\begin{aligned}x(t+\Delta t)&=x(t)+v(t)\Delta t+{\frac {1}{6}}{\Bigl (}4a(t)- a(t-\Delta t){\Bigr )}\Delta t^{2}+O(\Delta t^{4})\\v(t+\Delta t)&=v(t)+{\frac {1}{6}}{\Bigl (}2a(t+\Delta t)+5a(t)-a(t-\Delta t){\Bigr )}\Delta t+O(\Delta t^{3 });\end{alineado}}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Esta es la variante que suele entenderse como método de Beeman .
Beeman [2] también propuso reemplazar alternativamente la actualización de velocidad en la última ecuación por el método Adams-Moulton de segundo orden :
![{\displaystyle v(t+\Delta t)=v(t)+{\frac {1}{12}}{\Bigl (}5a(t+\Delta t)+8a(t)-a(t-\Delta t){\Bigr )}\Delta t+O(\Delta t^{3})}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
dónde
es el tiempo presente (es decir, variable independiente)
es el tamaño del paso de tiempo
es la posición en el tiempo t
es la velocidad en el tiempo t
es la aceleración en el tiempo t, calculada en función de![{\displaystyle x(t)}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- el último término es el término de error, usando la notación O grande
Modificaciones predictor-corrector
En sistemas donde las fuerzas son función de la velocidad además de la posición, las ecuaciones anteriores deben modificarse a una forma predictor-corrector mediante la cual se predicen las velocidades en el tiempo y se calculan las fuerzas, antes de producir una forma corregida de las velocidades.![{\displaystyle t+\Delta t}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Un ejemplo es:
![{\displaystyle x(t+\Delta t)=x(t)+v(t)\Delta t+{\frac {2}{3}}a(t)\Delta t^{2}-{\frac {1 }{6}}a(t-\Delta t)\Delta t^{2}+O(\Delta t^{4}).}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Luego se calculan (predicen) las velocidades en el momento a partir de las posiciones.![{\displaystyle t=t+\Delta t}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle v(t+\Delta t)~{\text{(predicho)}}=v(t)+{\frac {3}{2}}a(t)\Delta t-{\frac {1} {2}}a(t-\Delta t)\Delta t+O(\Delta t^{3}).}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Luego se calculan las aceleraciones en el tiempo a partir de las posiciones y velocidades predichas, y las velocidades se corrigen.![{\displaystyle a(t+\Delta t)}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle t=t+\Delta t}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle v(t+\Delta t)~{\text{(corregido)}}=v(t)+{\frac {5}{12}}a(t+\Delta t)\Delta t+{\frac { 2}{3}}a(t)\Delta t-{\frac {1}{12}}a(t-\Delta t)\Delta t+O(\Delta t^{3}).}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Término de error
Como se muestra arriba, el término de error local es para posición y velocidad, lo que resulta en un error global de . En comparación, Verlet es para posición y velocidad. A cambio de una mayor precisión, el algoritmo de Beeman es moderadamente más caro desde el punto de vista computacional.![{\displaystyle O(\Delta t^{4})}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle O(\Delta t^{3})}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle O(\Delta t^{3})}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle O(\Delta t^{2})}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Requisitos de memoria
La simulación debe realizar un seguimiento de la posición, la velocidad, la aceleración y los vectores de aceleración anteriores por partícula (aunque son posibles algunas soluciones inteligentes para almacenar el vector de aceleración anterior), manteniendo sus requisitos de memoria a la par con la velocidad Verlet y un poco más caro que el método Verlet original. .
Referencias
- ^ ab Schofield, P. (1973), "Estudios de simulación por computadora del estado líquido", Computer Physics Communications , 5 (1): 17–23, Bibcode :1973CoPhC...5...17S, doi :10.1016/0010 -4655(73)90004-0
- ^ abc Beeman, David (1976), "Algunos métodos de varios pasos para su uso en cálculos de dinámica molecular", Journal of Computational Physics , vol. 20, núm. 2, págs. 130–139, Bibcode :1976JCoPh..20..130B, doi :10.1016/0021-9991(76)90059-0
- ^ Levitt, Michael; Meirovitch, Hagai; Huber, R. (1983), "Integración de las ecuaciones de movimiento", Journal of Molecular Biology , 168 (3): 617–620, doi :10.1016/S0022-2836(83)80305-2, PMID 6193281
- Sadus, Richard J. (2002), Teoría molecular de fluidos: teoría, algoritmos y orientación a objetos , Elsevier, p. 231, ISBN 0-444-51082-6