These routines are implemented as MATLAB extensions for Windows and Linux (both 32 and 64 bits). They work 3-5 times faster than the fastest native MATLAB ode* function for each system I tested, including stiff ones. Besides that they guarantee precision on each step of integration because they use Runge's rule (except England's process using difference between 4th and 5th order methods as a residual measure). I noticed that not all systems can be solved by native MATLAB ode* functions with given precision (see samples provided with the packages). The extensions provided below don't have this issue.
The following algorithms are currently implemented:
MATLAB Extension | System | Algorithm |
odeEngland | X'=F(t,X) | Runge-Kutta process modification developed by R. England. R. England. "Error Estimates for Runge-Kutta Type Solutions to Systems of Ordinary Differential Equations" // Research and Development Department, Pressed Steel Fisher Ltd., Cowley, Oxford, UK. October 1968 |
odeLawson | X'=F(t,X) | Exponential method modification developed by J.D. Lawson. It's recommended for linear and quasi-linear systems including stiff ones. The method is A-stable for linear systems, i.e. residuals do not depend on time step length. Lawson J.D. Generalized Runge-Kutta processes for stable systems with large Lipschitz constants // SIAM Journal on Numerical Analysis, 1967, V. 4, No 3. |
odeLawsonA | X'=A(t)X + Fi(t) | as above |
odeLawsonU | X'=BX + u(t,X) | as above |
odeRosenbrock | X'=F(t,X) | Implicit process developed by H.H. Rosenbrock. It's recommended for non-linear systems including stiff ones. H.H. Rosenbrock "Some general implicit processes for the numerical solution of differential equations" Comput. J., 5 (1963) pp.329-330. |
odeRosenbrockA | X'=F(X) | same as above but developed for autonomous systems |