Dormand–Prince method
In
The Dormand–Prince method has seven stages, but it uses only six function evaluations per step because it has the "First Same As Last" (FSAL) property: the last stage is evaluated at the same point as the first stage of the next step. Dormand and Prince chose the coefficients of their method to minimize the error of the fifth-order solution. This is the main difference with the Fehlberg method, which was constructed so that the fourth-order solution has a small error. For this reason, the Dormand–Prince method is more suitable when the higher-order solution is used to continue the integration, a practice known as local extrapolation.[2][3]
Butcher tableau
The
0 | ||||||||
1/5 | 1/5 | |||||||
3/10 | 3/40 | 9/40 | ||||||
4/5 | 44/45 | −56/15 | 32/9 | |||||
8/9 | 19372/6561 | −25360/2187 | 64448/6561 | −212/729 | ||||
1 | 9017/3168 | −355/33 | 46732/5247 | 49/176 | −5103/18656 | |||
1 | 35/384 | 0 | 500/1113 | 125/192 | −2187/6784 | 11/84 | ||
35/384 | 0 | 500/1113 | 125/192 | −2187/6784 | 11/84 | 0 | ||
5179/57600 | 0 | 7571/16695 | 393/640 | −92097/339200 | 187/2100 | 1/40 |
The first row of b coefficients gives the fifth-order accurate solution, and the second row gives the fourth-order accurate solution.
Applications
Dormand–Prince is the default method in the ode45
solver for MATLAB[4] and GNU Octave[5] and is the default choice for the Simulink's model explorer solver. It is an option in Python's SciPy ODE integration library[6] and in Julia's ODE solvers library.[7] Implementations for the languages Fortran,[8] Java,[9] C++,[10] and Rust[11] are also available.
Notes
- .
- JSTOR 2008219.
- ISBN 978-3-540-56670-0.
- ^ "Solve nonstiff differential equations — medium order method - MATLAB ode45". www.mathworks.com. Retrieved 2023-08-24.
- ^ "Matlab-compatible solvers (GNU Octave (version 8.3.0))". octave.org. Retrieved 2023-08-24.
- ^ "scipy.integrate.RK45 — SciPy v1.11.2 Manual". docs.scipy.org. Retrieved 2023-08-24.
- ^ "ODE Solvers · DifferentialEquations.jl". docs.sciml.ai. Retrieved 2023-08-24.
- ^ Hairer, Ernst. "Fortran Codes". www.unige.ch. Retrieved 2023-08-24.
- ^ "DormandPrince54Integrator (Apache Commons Math 4.0-beta1)". commons.apache.org. Retrieved 2023-08-24.
- ^ "Class template runge_kutta_dopri5 - 1.53.0". www.boost.org. Retrieved 2023-08-24.
- ^ "ode_solvers - Rust". docs.rs. Retrieved 2025-03-07.
References
Books
- Dormand, John R. (1996), Numerical Methods for Differential Equations: A Computational Approach, Boca Raton: ISBN 0-8493-9433-3
Further reading
Articles
- C. Engstler, C. Lubich (1997), "MUR8: a multirate extension of the eighth-order Dormand-Prince method", Applied Numerical Mathematics, vol. 25, no. 2–3, pp. 185–192,
- M. Calvo, J.I. Montijano, L. Randez (1990), "A fifth-order interpolant for the Dormand and Prince Runge-Kutta method", Journal of Computational and Applied Mathematics, vol. 29, no. 1, pp. 91–100, doi:10.1016/0377-0427(90)90198-9)
{{citation}}
: CS1 maint: multiple names: authors list (link - Jeffrey M. Aristoff, Joshua T. Horwood, Aubrey B. Poore (2014), "Orbit and uncertainty propagation: a comparison of Gauss–Legendre-, Dormand–Prince-, and Chebyshev–Picard-based approaches", Celestial Mechanics and Dynamical Astronomy, vol. 118, no. 1, pp. 13–28, )
- Wo Mei Seen, R. U. Gobithaasan, Kenjiro T. Miura (2014), "GPU acceleration of Runge Kutta-Fehlberg and its comparison with Dormand-Prince method", Germination of Mathematical Sciences Education and Research Towards Global Sustainability (Sksm21), AIP Conference Proceedings, 1605 (1), Penang, Malaysia: 16–21, doi:10.1063/1.4887558)
{{citation}}
: CS1 maint: multiple names: authors list (link