In mathematics, the Euler–Cromer algorithm or symplectic Euler method is a modification of the Euler method for solving Hamilton's equations, a system of ordinary differential equations that arises in classical mechanics. It is a symplectic integrator and hence it yields better results than the standard Euler method.
Setting
The Euler–Cromer algorithm can be applied to a pair of differential equations of the form
where f and g are given functions. Here, x and v may be either scalars or vectors. The equations of motion in Hamiltonian mechanics take this form if the Hamiltonian is of the form
The differential equations are to be solved with the initial condition
The method
The Euler–Cromer algorithm produces an approximate discrete solution by iterating
where is the time step and is the time after n steps.
The difference with the standard Euler method is that the Euler–Cromer method uses in the equation for , while the Euler method uses .
The Euler–Cromer method is a first-order integrator, just as the standard Euler method. This means that it commits a global error of the order of Δt. However, the Euler–Cromer method is a symplectic integrator, unlike the standard method. As a consequence, the Euler–Cromer method almost conserves the energy (when the Hamiltonian is time-independent). Often, the energy increases steadily when the standard Euler method is applied, making it far less accurate.
Example
The motion of a spring satisfying Hooke's law is given by
The Euler–Cromer algorithm for this equation is
References
- Giordano, Nicholas J. (2005). Computational Physics (2nd edition ed.). Benjamin Cummings. ISBN 0-1314-6990-8.
{{cite book}}
:|edition=
has extra text (help); Unknown parameter|coauthors=
ignored (|author=
suggested) (help); Unknown parameter|month=
ignored (help) - MacDonald, James. "The Euler-Cromer method". University of Delaware. Retrieved 2007-03-03.
- Vesely, Franz J. (2001). Computational Physics: An Introduction (2nd edition ed.). Springer. pp. page 117. ISBN 978-0-306-46631-1.
{{cite book}}
:|edition=
has extra text (help);|pages=
has extra text (help)