...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Home  Libraries  People  FAQ  More 
boost::numeric::odeint::runge_kutta_cash_karp54 — The RungeKutta CashKarp method.
// In header: <boost/numeric/odeint/stepper/runge_kutta_cash_karp54.hpp> template<typename State, typename Value = double, typename Deriv = State, typename Time = Value, typename Algebra = typename algebra_dispatcher< State >::algebra_type, typename Operations = typename operations_dispatcher< State >::operations_type, typename Resizer = initially_resizer> class runge_kutta_cash_karp54 : public boost::numeric::odeint::explicit_error_generic_rk< StageCount, Order, StepperOrder, ErrorOrder, State, Value, Deriv, Time, Algebra, Operations, Resizer > { public: // types typedef stepper_base_type::state_type state_type; typedef stepper_base_type::value_type value_type; typedef stepper_base_type::deriv_type deriv_type; typedef stepper_base_type::time_type time_type; typedef stepper_base_type::algebra_type algebra_type; typedef stepper_base_type::operations_type operations_type; typedef stepper_base_type::resizer_type resizer_typ; // construct/copy/destruct runge_kutta_cash_karp54(const algebra_type & = algebra_type()); // public member functions template<typename System, typename StateIn, typename DerivIn, typename StateOut, typename Err> void do_step_impl(System, const StateIn &, const DerivIn &, time_type, StateOut &, time_type, Err &); template<typename System, typename StateIn, typename DerivIn, typename StateOut> void do_step_impl(System, const StateIn &, const DerivIn &, time_type, StateOut &, time_type); template<typename StateIn> void adjust_size(const StateIn &); };
The RungeKutta CashKarp method is one of the standard methods for solving ordinary differential equations, see en.wikipedia.org/wiki/CashKarp_methods. The method is explicit and fulfills the Error Stepper concept. Step size control is provided but continuous output is not available for this method.
This class derives from explicit_error_stepper_base and inherits its interface via CRTP (current recurring template pattern). Furthermore, it derivs from explicit_error_generic_rk which is a generic RungeKutta algorithm with error estimation. For more details see explicit_error_stepper_base and explicit_error_generic_rk.
typename State
The state type.
typename Value = double
The value type.
typename Deriv = State
The type representing the time derivative of the state.
typename Time = Value
The time representing the independent variable  the time.
typename Algebra = typename algebra_dispatcher< State >::algebra_type
The algebra type.
typename Operations = typename operations_dispatcher< State >::operations_type
The operations type.
typename Resizer = initially_resizer
The resizer policy type.
runge_kutta_cash_karp54
public
construct/copy/destructrunge_kutta_cash_karp54(const algebra_type & algebra = algebra_type());Constructs the
runge_kutta_cash_karp54
class. This constructor can be used as a default constructor if the algebra has a default constructor.
Parameters: 

runge_kutta_cash_karp54
public member functionstemplate<typename System, typename StateIn, typename DerivIn, typename StateOut, typename Err> void do_step_impl(System system, const StateIn & in, const DerivIn & dxdt, time_type t, StateOut & out, time_type dt, Err & xerr);This method performs one step. The derivative
dxdt
of in
at the time t
is passed to the method. The result is updated outofplace, hence the input is in in
and the output in out
. Futhermore, an estimation of the error is stored in xerr
. do_step_impl
is used by explicit_error_stepper_base.
Parameters: 

template<typename System, typename StateIn, typename DerivIn, typename StateOut> void do_step_impl(System system, const StateIn & in, const DerivIn & dxdt, time_type t, StateOut & out, time_type dt);This method performs one step. The derivative
dxdt
of in
at the time t
is passed to the method. The result is updated outofplace, hence the input is in in
and the output in out
. Access to this step functionality is provided by explicit_stepper_base and do_step_impl
should not be called directly.
Parameters: 

template<typename StateIn> void adjust_size(const StateIn & x);Adjust the size of all temporaries in the stepper manually.
Parameters: 
