<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Beeman%27s_algorithm</id>
	<title>Beeman&#039;s algorithm - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Beeman%27s_algorithm"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Beeman%27s_algorithm&amp;action=history"/>
	<updated>2026-05-10T17:37:56Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Beeman%27s_algorithm&amp;diff=2509884&amp;oldid=prev</id>
		<title>imported&gt;Qwfp at 16:45, 29 October 2022</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Beeman%27s_algorithm&amp;diff=2509884&amp;oldid=prev"/>
		<updated>2022-10-29T16:45:04Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|Numerical integration algorithm}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beeman&amp;#039;s algorithm&amp;#039;&amp;#039;&amp;#039; is a method for [[numerical quadrature|numerically integrating]] [[ordinary differential equation]]s of order 2, more specifically Newton&amp;#039;s equations of motion &amp;lt;math&amp;gt;\ddot x=A(x)&amp;lt;/math&amp;gt;. It was designed to allow high numbers of particles in simulations of molecular dynamics. There is a direct or explicit and an implicit variant of the method. The direct variant was published by Schofield in 1973&amp;lt;ref name=&amp;quot;schofield73&amp;quot; /&amp;gt; as a personal communication from Beeman.  This is what is commonly known as &amp;#039;&amp;#039;&amp;#039;Beeman&amp;#039;s method&amp;#039;&amp;#039;&amp;#039;. It is a variant of the [[Verlet integration]] method.  It produces identical positions, but uses a different formula for the velocities. Beeman in 1976 published&amp;lt;ref name=&amp;quot;beeman76&amp;quot; /&amp;gt; a class of implicit (predictor–corrector) multi-step methods, where &amp;#039;&amp;#039;&amp;#039;Beeman&amp;#039;s method&amp;#039;&amp;#039;&amp;#039; is the direct variant of the third-order method in this class.&lt;br /&gt;
&lt;br /&gt;
== Equation ==&lt;br /&gt;
The formula used to compute the positions at time &amp;lt;math&amp;gt;t + \Delta t&amp;lt;/math&amp;gt; in the full predictor-corrector&amp;lt;ref name=&amp;quot;beeman76&amp;quot; /&amp;gt; scheme is:&lt;br /&gt;
&lt;br /&gt;
* Predict &amp;lt;math&amp;gt;x(t+\Delta t)&amp;lt;/math&amp;gt; from data at times &amp;lt;math&amp;gt;t\text{ and }t - \Delta t&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt;&lt;br /&gt;
x(t+\Delta t)&lt;br /&gt;
= x(t) + v(t) \Delta t&lt;br /&gt;
  + \frac{1}{6}\Bigl( 4 a(t) - a(t - \Delta t)\Bigr)\Delta t^2&lt;br /&gt;
  + O( \Delta t^4)&lt;br /&gt;
&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Correct position and velocities at time &amp;lt;math&amp;gt;t + \Delta t&amp;lt;/math&amp;gt; from data at times &amp;lt;math&amp;gt;t\text{ and }t+\Delta t&amp;lt;/math&amp;gt; by repeated evaluation of the differential equation to get the acceleration &amp;lt;math&amp;gt;a(t+\Delta t)&amp;lt;/math&amp;gt; and of the equations of the implicit system&lt;br /&gt;
::&amp;lt;math&amp;gt;\begin{align}&lt;br /&gt;
x(t+\Delta t)&lt;br /&gt;
&amp;amp;= x(t) + v(t) \Delta t&lt;br /&gt;
   + \frac{1}{6}\Bigl(a(t+\Delta t) + 2a(t)\Bigr)\Delta t^2 &lt;br /&gt;
   + O(\Delta t^4);\\&lt;br /&gt;
v(t+\Delta t)\Delta t&lt;br /&gt;
&amp;amp;=x(t+\Delta t)-x(t)&lt;br /&gt;
   + \frac16 \Bigl(2a(t+\Delta t) + a(t)\Bigr)\Delta t^2&lt;br /&gt;
   + O(\Delta t^4);&lt;br /&gt;
\end{align}&amp;lt;/math&amp;gt;&lt;br /&gt;
:In tests it was found that this corrector step needs to be repeated at most twice. The values on the right are the old values of the last iterations, resulting in the new values on the left.&lt;br /&gt;
&lt;br /&gt;
Using only the predictor formula and the corrector for the velocities one obtains a direct or explicit method&amp;lt;ref name=&amp;quot;schofield73&amp;quot; /&amp;gt; which is a variant of the Verlet integration method:&amp;lt;ref name=&amp;quot;levitt83&amp;quot; /&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{align}&lt;br /&gt;
x(t+\Delta t)&lt;br /&gt;
&amp;amp;= x(t) + v(t) \Delta t&lt;br /&gt;
  + \frac{1}{6}\Bigl( 4 a(t) - a(t - \Delta t)\Bigr)\Delta t^2&lt;br /&gt;
  + O( \Delta t^4) \\&lt;br /&gt;
v(t+\Delta t)&lt;br /&gt;
&amp;amp;=v(t)&lt;br /&gt;
   + \frac16 \Bigl(2a(t+\Delta t) + 5a(t)-a(t-\Delta t)\Bigr)\Delta t&lt;br /&gt;
   + O(\Delta t^3);&lt;br /&gt;
\end{align}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is the variant that is usually understood as &amp;#039;&amp;#039;Beeman&amp;#039;s method&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Beeman&amp;lt;ref name=&amp;quot;beeman76&amp;quot; /&amp;gt; also proposed to alternatively replace the velocity update in the last equation by the second order [[Linear multistep method#Adams–Moulton methods|Adams–Moulton method]]:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
v(t + \Delta t)&lt;br /&gt;
  = v(t)&lt;br /&gt;
    + \frac{1}{12}\Bigl(5a(t + \Delta t)  + 8a(t)  - a(t - \Delta t)\Bigr)\Delta t&lt;br /&gt;
    + O(\Delta t^3)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; is present time (i.e.: independent variable)&lt;br /&gt;
*&amp;lt;math&amp;gt;\Delta t&amp;lt;/math&amp;gt; is the time step size&lt;br /&gt;
*&amp;lt;math&amp;gt;x(t)&amp;lt;/math&amp;gt; is the position at time t&lt;br /&gt;
*&amp;lt;math&amp;gt;v(t)&amp;lt;/math&amp;gt; is the velocity at time t&lt;br /&gt;
*&amp;lt;math&amp;gt;a(t)&amp;lt;/math&amp;gt; is the acceleration at time t, computed as a function of &amp;lt;math&amp;gt;x(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
*the last term is the error term, using the [[big O notation]]&lt;br /&gt;
&lt;br /&gt;
== Predictor–corrector modifications ==&lt;br /&gt;
&lt;br /&gt;
In systems where the forces are a function of velocity in addition to position, the above equations need to be modified into a predictor–corrector form whereby the velocities at time &amp;lt;math&amp;gt;t + \Delta t&amp;lt;/math&amp;gt; are predicted and the forces calculated, before producing a corrected form of the velocities.&lt;br /&gt;
&lt;br /&gt;
An example is:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;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).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The velocities at time &amp;lt;math&amp;gt;t = t + \Delta t&amp;lt;/math&amp;gt; are then calculated (predicted) from the positions.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;v(t + \Delta t)~\text{(predicted)} = v(t) + \frac{3}{2}a(t) \Delta t - \frac{1}{2}a(t - \Delta t) \Delta t + O(\Delta t^3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The accelerations &amp;lt;math&amp;gt;a(t + \Delta t)&amp;lt;/math&amp;gt; at time &amp;lt;math&amp;gt;t = t + \Delta t&amp;lt;/math&amp;gt; are then calculated from the positions and predicted velocities, and the velocities are corrected.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;v(t + \Delta t)~\text{(corrected)} = 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).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Error term ==&lt;br /&gt;
As shown above, the local error term is &amp;lt;math&amp;gt;O(\Delta t^4)&amp;lt;/math&amp;gt; for position and &amp;lt;math&amp;gt;O(\Delta t^3)&amp;lt;/math&amp;gt; velocity, resulting in a global error of &amp;lt;math&amp;gt;O(\Delta t^3)&amp;lt;/math&amp;gt;.  In comparison, Verlet is &amp;lt;math&amp;gt;O(\Delta t^2)&amp;lt;/math&amp;gt; for position and velocity. In exchange for greater accuracy, Beeman&amp;#039;s algorithm is moderately computationally more expensive.&lt;br /&gt;
&lt;br /&gt;
== Memory requirements ==&lt;br /&gt;
The simulation must keep track of position, velocity, acceleration and previous acceleration vectors per particle (though some clever workarounds for storing the previous acceleration vector are possible), keeping its memory requirements on par with velocity Verlet and slightly more expensive than the original Verlet method.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;beeman76&amp;quot;&amp;gt;&lt;br /&gt;
{{Citation | last = Beeman | first = David&lt;br /&gt;
| title=Some multistep methods for use in molecular dynamics calculations&lt;br /&gt;
| periodical=Journal of Computational Physics&lt;br /&gt;
| volume=20 | issue=2 | pages=130–139 | year=1976&lt;br /&gt;
| doi=10.1016/0021-9991(76)90059-0| bibcode = 1976JCoPh..20..130B&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;schofield73&amp;quot;&amp;gt;&lt;br /&gt;
{{Citation | last = Schofield | first = P.&lt;br /&gt;
| title = Computer simulation studies of the liquid state&lt;br /&gt;
| journal = Computer Physics Communications&lt;br /&gt;
| volume = 5 |issue = 1| pages = 17–23| year = 1973&lt;br /&gt;
| doi = 10.1016/0010-4655(73)90004-0&lt;br /&gt;
| bibcode = 1973CoPhC...5...17S&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;levitt83&amp;quot;&amp;gt;&lt;br /&gt;
{{Citation | first1 = Michael| last1 = Levitt&lt;br /&gt;
| first2 = Hagai |last2 = Meirovitch&lt;br /&gt;
| first3 = R. | last3 = Huber&lt;br /&gt;
| title = Integrating the equations of motion&lt;br /&gt;
| journal = Journal of Molecular Biology&lt;br /&gt;
| volume = 168 | issue = 3 | pages = 617–620| year = 1983&lt;br /&gt;
| doi = 10.1016/S0022-2836(83)80305-2 | pmid=6193281&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{Citation|last=Sadus|first=Richard J.|year=2002|title=Molecular Theory of Fluids: Theory, Algorithms and Object-Orientation|publisher=Elsevier|isbn=0-444-51082-6|page=231}}&lt;br /&gt;
&lt;br /&gt;
{{Numerical integrators}}&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Beeman&amp;#039;s Algorithm}}&lt;br /&gt;
[[Category:Numerical differential equations]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Qwfp</name></author>
	</entry>
</feed>