In
numerical analysis
Numerical analysis is the study of algorithms that use numerical approximation (as opposed to symbolic manipulations) for the problems of mathematical analysis (as distinguished from discrete mathematics). It is the study of numerical methods th ...
, the Dormand–Prince (RKDP) method or DOPRI method, is an embedded method for solving
ordinary differential equations
In mathematics, an ordinary differential equation (ODE) is a differential equation whose unknown(s) consists of one (or more) function(s) of one variable and involves the derivatives of those functions. The term ''ordinary'' is used in contras ...
. 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 FSAL (First Same As Last) 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 (; ).
Dormand–Prince is currently the default method in the
ode45
solver for
MATLAB
MATLAB (an abbreviation of "MATrix LABoratory") is a proprietary multi-paradigm programming language and numeric computing environment developed by MathWorks. MATLAB allows matrix manipulations, plotting of functions and data, implementa ...
and
GNU Octave
GNU Octave is a high-level programming language primarily intended for scientific computing and numerical computation. Octave helps in solving linear and nonlinear problems numerically, and for performing other numerical experiments using a lang ...
and is the default choice for the
Simulink
Simulink is a MATLAB-based graphical programming environment for modeling, simulating and analyzing multidomain dynamical systems. Its primary interface is a graphical block diagramming tool and a customizable set of block libraries. It offers t ...
's model explorer solver.
It is an option in
Python's SciPy ODE integration library and in
Julia (programming language)
Julia is a high-level, dynamic programming language. Its features are well suited for numerical analysis and computational science.
Distinctive aspects of Julia's design include a type system with parametric polymorphism in a dynamic progra ...
's ODE solvers library.
Fortran,
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
, and
C++
implementations are also available.
The
Butcher tableau
A butcher is a person who may slaughter animals, dress their flesh, sell their meat, or participate within any combination of these three tasks. They may prepare standard cuts of meat and poultry for sale in retail or wholesale food establishm ...
is:
The first row of ''b'' coefficients gives the fifth-order accurate solution, and the second row gives the fourth-order accurate solution.
Notes
References
* Software implementation in
MATLAB
MATLAB (an abbreviation of "MATrix LABoratory") is a proprietary multi-paradigm programming language and numeric computing environment developed by MathWorks. MATLAB allows matrix manipulations, plotting of functions and data, implementa ...
: https://www.mathworks.com/help/matlab/ref/ode45.html
* Implementation in
GNU Octave
GNU Octave is a high-level programming language primarily intended for scientific computing and numerical computation. Octave helps in solving linear and nonlinear problems numerically, and for performing other numerical experiments using a lang ...
: https://octave.org/doc/interpreter/Matlab_002dcompatible-solvers.html#Matlab_002dcompatible-solvers
* Implementation in
Python (programming language)
Python is a high-level, general-purpose programming language. Its design philosophy emphasizes code readability with the use of significant indentation.
Python is dynamically-typed and garbage-collected. It supports multiple programming pa ...
: https://web.archive.org/web/20150907215914/http://adorio-research.org/wordpress/?p=6565
* .
* .
* .
* .
Further reading
* Engstler, C., & Lubich, C. (1997). MUR8: a multirate extension of the eighth-order Dormand–Prince method. Applied numerical mathematics, 25(2-3), 185-192.
* Calvo, M., Montijano, J. I., & Randez, L. (1990). A fifth-order interpolant for the Dormand and Prince Runge-Kutta method.
Journal of Computational and Applied Mathematics, 29(1), 91-100.
* Aristoff, J. M., Horwood, J. T., & Poore, A. B. (2014). Orbit and uncertainty propagation: a comparison of Gauss–Legendre-, Dormand–Prince-, and Chebyshev–Picard-based approaches. Celestial Mechanics and Dynamical Astronomy, 118(1), 13-28.
* Seen, W. M., Gobithaasan, R. U., & Miura, K. T. (2014, July). GPU acceleration of Runge Kutta-Fehlberg and its comparison with Dormand–Prince method. In AIP Conference Proceedings (Vol. 1605, No. 1, pp. 16–21). AIP.
{{DEFAULTSORT:Dormand-Prince method
Numerical analysis
Numerical differential equations
Runge–Kutta methods