This package is obsolete and archived. Please use DifferentialEquations.jl.
An implementation of the well-known Runge-Kutta-Fehlberg time integration method of 4th and 5th order (RKF45). The algorithm integrates differential equations of the form:
dx / dt = f[x](t)
Notably, f
can be either a function or a functional of x
. This is useful for certain types of partial differential equations (e.g. the heat equation).
You import the package as usual:
using RungeKuttaFehlberg
The package exports exactly one function
rkf45_step(f, x, t, tolerance, dt[, error, safety])
which returns dx
and dt
as a tuple.
Most arguments should be self-explanatory but more detailed documentation is included in the package.
Most likely you will iterate over rkf45_step()
and sum up dx
and dt
.
The algorithm will run most efficiently if you pass the last return value for dt
back into rkf45_step()
at the next iteration.
The r.h.s. function f()
must take exactly two arguments, x
and t
. Currently, there is no way to pass additional parameters to f()
.
However, you can easily define an intermediate function which contains the values of each parameter and then pass it to rkf45_step()
.
RKF45 evaluates f()
at least 6 times during each step, so optimizing f()
can increase performance a lot.
I am currently hosting this in a separate package, but I am open to suggestions w.r.t. inclusion in a package for time integration methods.