
The construction of compound integration methods is particularly useful in geometric numerical integration. NDSolve ⟶ "Extrapolation" ⟶ "ExplicitMidpoint" This was later extended to allow one method to call another in a sequential fashion, with an arbitrary number of levels of nesting. NDSolve ⟶ "ImplicitRungeKutta" First Revision The original method framework design allowed a number of methods to be invoked in the solver. This is a generalization of the ideas used in the Generic ODE Solving System, Godess (see, , and the references therein), which is implemented in C++. Methods are reentrant and hierarchical, meaning that one method can call another. This is a generalization of the ideas used in codes like LSODA (, ). This includes, but is not limited to, coefficients, workspaces, step-size control parameters, step-size acceptance/rejection information, and Jacobian matrices.


Step sizes are not increased after a step rejection.Step sizes do not change sign unexpectedly, which may be a consequence of user programming error.Step sizes in a numerical integration do not become too small in value, which may happen in solving stiff systems.The routine handles a number of different criteria including: Plug-in capabilities that allow user extensibility and prototypingĪ common time-stepping mechanism is used for all one-step methods.Type and precision dynamic for all methods.Tensor framework that allows families of methods to share one implementation.Vectorized framework based on a generalization of the BLAS model using optimized in-place arithmetic.Uniform treatment of rounding errors (see, , and the references therein).Hierarchical and reentrant numerical methods.Separation of method initialization phase and run-time computation.Objection orientation (method property specification and communication).The principal features of the NDSolve framework are:
#Ndsolve mathematica code#
This approach also allows code optimization to be carried out in just a few central routines.

In order to cut down on maintenance and duplication of code, common components are shared between methods. Supporting a large number of numerical integration methods for differential equations is a lot of work. Automatic Selection and User Controllability
