Dormand–Prince method

From testwiki
Jump to navigation Jump to search

Template:Short description In numerical analysis, the Dormand–Prince (RKDP) method or DOPRI method, is an embedded method for solving ordinary differential equations (ODE).[1] 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.[2][3]

Butcher tableau

The Butcher tableau is:

0
15 15
310 340 940
45 4445 −5615 329
89 193726561 −253602187 644486561 −212729
1 90173168 −35533 467325247 49176 −510318656
1 35384 0 5001113 125192 −21876784 1184
35384 0 5001113 125192 −21876784 1184 0
517957600 0 757116695 393640 −92097339200 1872100 140

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

References

Books

Further reading

Articles