template <class T>
class vtb::core::RKF45

Runge—Khutta—Fehlberg initial value problem solver.

  • Solves a system of ordinary differential equations.
  • The algorithm is described in [9] and [10].

Types
  • using value_type = T
Methods
  • verbose() const -> bool
  • verbose(bool rhs) -> void
  • tolerance(T rhs) -> void
  • tolerance() const -> T
  • max_step(T rhs) -> void
  • max_step() const -> T
  • min_step(T rhs) -> void
  • min_step() const -> T
  • template <class Function, int N>
    operator()(Function f, T t0, T t1, const blitz::TinyVector< T, N > & x0) -> blitz::TinyVector< T, N >

    Solve system of ordinary differential equations with right hand sides f.

    f
    right hand sides of the equations

    t0
    initial time instant

    t1
    final time instant

    x0
    initial value at

    • The system of equations is written as
    • The solution is computed for interval .
    • The algorithm is described in [9].

    Date
    2018-07-13
    Author
    Ivan Gankevich
    Return
    at
  • template <class Function, int N>
    solve(Function f, T t0, T t1, const blitz::TinyVector< T, N > & x0) -> blitz::TinyVector< T, N >

    Solve system of ordinary differential equations with right hand sides f.

    f
    right hand sides of the equations

    t0
    initial time instant

    t1
    final time instant

    x0
    initial value at

    • The system of equations is written as
    • The solution is computed for interval .
    • The algorithm is described in [9].
    Calculate coefficients: Calculate using a Runge—Kutta method of order 4. N.B. is not used here. Calculate (denoted here as ) using a Runge—Kutta method of order 5. N.B. is not used here. Calculate optimal step size . Clamp step size to . Clamp time instant to .

    Date
    2018-07-13
    Author
    Ivan Gankevich
    Return
    at
  • ~RKF45()
  • operator=(RKF45 &&) -> RKF45 &
  • RKF45(RKF45 &&)
  • operator=(const RKF45 &) -> RKF45 &
  • RKF45(const RKF45 &)
  • RKF45()