Dormand–Prince method
{{Short description|Method for solving differential equations}}
In numerical analysis, the Dormand–Prince (RKDP) method or DOPRI method, is an embedded method for solving ordinary differential equations (ODE).{{Cite journal |last1=Dormand |first1=J.R. |last2=Prince |first2=P.J. |date=1980 |title=A family of embedded Runge-Kutta formulae |url=https://linkinghub.elsevier.com/retrieve/pii/0771050X80900133 |journal=Journal of Computational and Applied Mathematics |language=en |volume=6 |issue=1 |pages=19–26 |doi=10.1016/0771-050X(80)90013-3}} The method is a member of the Runge–Kutta family of ODE solvers. More specifically, it uses six function evaluations to calculate fourth- and fifth-order accurate solutions. The difference between these solutions is then taken to be the error of the (fourth-order) solution. This error estimate is very convenient for adaptive stepsize integration algorithms. Other similar integration methods are Fehlberg (RKF) and Cash–Karp (RKCK).
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.{{Cite journal |last=Shampine |first=Lawrence F. |date=1986 |title=Some Practical Runge-Kutta Formulas |journal=Mathematics of Computation |volume=46 |issue=173 |pages=135–150 |doi=10.2307/2008219|jstor=2008219 |doi-access=free }}{{Cite book |last1=Hairer |first1=Ernst |url=http://link.springer.com/10.1007/978-3-540-78862-1 |title=Solving Ordinary Differential Equations I |last2=Wanner |first2=Gerhard |last3=Nørsett |first3=Syvert P. |date=1993 |publisher=Springer Berlin Heidelberg |isbn=978-3-540-56670-0 |series=Springer Series in Computational Mathematics |volume=8 |location=Berlin, Heidelberg |language=en |doi=10.1007/978-3-540-78862-1}}
Butcher tableau
The Butcher tableau is:
cellpadding=3px cellspacing=0px
|width="20px"| | style="border-right:1px solid;" | 0 | |||||||
style="border-right:1px solid;" | 1/5 | 1/5 | |||||||
style="border-right:1px solid;" | 3/10 | 3/40 | 9/40 | ||||||
style="border-right:1px solid;" | 4/5 | 44/45 | −56/15 | 32/9 | |||||
style="border-right:1px solid;" | 8/9 | 19372/6561 | −25360/2187 | 64448/6561 | −212/729 | ||||
style="border-right:1px solid;" | 1 | 9017/3168 | −355/33 | 46732/5247 | 49/176 | −5103/18656 | |||
style="border-right:1px solid; border-bottom:1px solid;" | 1 | style="border-bottom:1px solid;" | 35/384 | style="border-bottom:1px solid;" | 0 | style="border-bottom:1px solid;" | 500/1113 | style="border-bottom:1px solid;" | 125/192 | style="border-bottom:1px solid;" | −2187/6784 | style="border-bottom:1px solid;" | 11/84 | style="border-bottom:1px solid;" | | |
style="border-right:1px solid;" | | 35/384 | 0 | 500/1113 | 125/192 | −2187/6784 | 11/84 | 0 | |
style="border-right:1px solid;" | | 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{{Cite web |title=Solve nonstiff differential equations — medium order method - MATLAB ode45 |url=https://www.mathworks.com/help/matlab/ref/ode45.html |access-date=2023-08-24 |website=www.mathworks.com}} and GNU Octave{{Cite web |title=Matlab-compatible solvers (GNU Octave (version 8.3.0)) |url=https://octave.org/doc/interpreter/Matlab_002dcompatible-solvers.html#Matlab_002dcompatible-solvers |access-date=2023-08-24 |website=octave.org}} and is the default choice for the Simulink's model explorer solver. It is an option in Python's SciPy ODE integration library{{Cite web |title=scipy.integrate.RK45 — SciPy v1.11.2 Manual |url=https://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.RK45.html |access-date=2023-08-24 |website=docs.scipy.org}} and in Julia's ODE solvers library.{{Cite web |title=ODE Solvers · DifferentialEquations.jl |url=https://docs.sciml.ai/DiffEqDocs/stable/solvers/ode_solve/ |access-date=2023-08-24 |website=docs.sciml.ai}} Implementations for the languages Fortran,{{Cite web |last=Hairer |first=Ernst |title=Fortran Codes |url=http://www.unige.ch/~hairer/software.html |access-date=2023-08-24 |website=www.unige.ch}} Java,{{Cite web |title=DormandPrince54Integrator (Apache Commons Math 4.0-beta1) |url=https://commons.apache.org/proper/commons-math/javadocs/api-4.0-beta1/org/apache/commons/math4/legacy/ode/nonstiff/DormandPrince54Integrator.html |access-date=2023-08-24 |website=commons.apache.org}} C++,{{Cite web |title=Class template runge_kutta_dopri5 - 1.53.0 |url=https://www.boost.org/doc/libs/1_53_0/libs/numeric/odeint/doc/html/boost/numeric/odeint/runge_kutta_dopri5.html |access-date=2023-08-24 |website=www.boost.org}} and Rust{{Cite web |title=ode_solvers - Rust |url=https://docs.rs/ode_solvers/latest/ode_solvers/ |access-date=2025-03-07 |website=docs.rs}} are also available.
Notes
References
= Books =
- {{Citation | last1=Dormand | first1=John R. | title=Numerical Methods for Differential Equations: A Computational Approach | year=1996 | publisher=CRC Press| location=Boca Raton| isbn=0-8493-9433-3| pages=82–84}}
Further reading
= Articles =
- {{citation|author=C. Engstler, C. Lubich|date=1997|doi=10.1016/S0168-9274(97)00058-5|issue=2–3|pages=185–192|periodical=Applied Numerical Mathematics|title=MUR8: a multirate extension of the eighth-order Dormand-Prince method|volume=25}}
- {{citation|author=M. Calvo, J.I. Montijano, L. Randez|date=1990|doi=10.1016/0377-0427(90)90198-9|issue=1|pages=91–100|periodical=Journal of Computational and Applied Mathematics|title=A fifth-order interpolant for the Dormand and Prince Runge-Kutta method|volume=29}}
- {{citation|author=Jeffrey M. Aristoff, Joshua T. Horwood, Aubrey B. Poore|date=2014|doi=10.1007/s10569-013-9522-7|issue=1|pages=13–28|periodical=Celestial Mechanics and Dynamical Astronomy|title=Orbit and uncertainty propagation: a comparison of Gauss–Legendre-, Dormand–Prince-, and Chebyshev–Picard-based approaches|volume=118|bibcode=2014CeMDA.118...13A |s2cid=254378950 }}
- {{citation|author=Wo Mei Seen, R. U. Gobithaasan, Kenjiro T. Miura|date=2014|doi=10.1063/1.4887558|location=Penang, Malaysia|pages=16–21|title=GPU acceleration of Runge Kutta-Fehlberg and its comparison with Dormand-Prince method|journal=Germination of Mathematical Sciences Education and Research Towards Global Sustainability (Sksm21) |series=AIP Conference Proceedings |volume=1605 |issue=1 |bibcode=2014AIPC.1605...16S |doi-access=free}}