Runge is an Interactive Solver for Systems of Ordinary Differential Equations. It
solves initial value problem (aka Cauchy problem) defined as the following: for a
given system of ordinary differential equations
and given initial values
at a given point of “time” i.e. for a given value of independent variable .
Actually Runge produces solutions set
where is the number of steps taken. This allows to build trajectories of
- It’s fast. It utilizes BLAS and LAPACK FORTRAN libraries optimized
for modern multi-core processors.
- It’s interactive. It allows you to start a solution by mouse click on a
- It’s precise. It uses Runge Rule to adjust step length to satisfy required
precision on each step.
- It’s effective. When it needs to compute derivatives (Jacobian matrix,
for example) it does that analytically, i.e. without using numerical
- It’s portable. It works on Windows and Linux (32 and 64 bit versions)
and Mac OSX (64 bit only).
- It’s open. It allows you to implement and embed your own algorithms
- It’s easy to use. It allows to export results to MS Excel and MATLAB.
- It’s free. It’s distributed under Boost Software License.
Runge comes with pre-installed solvers optimized for solving differential equations
of different types:
- Type 1. Generic non-autonomous system
- Type 2. Generic autonomous system (it’s a subset of Type 1, i.e. you
can use both types 1 and 2 for autonomous sytems — sometimes it
makes sense for choosing appropriate solver)
- Type 3. Pseudo-linear system (here it’s assumed that is
relatively small compared to matrix )
- Type 4. Pseudo-linear system with constant matrix B
The solvers (algorithms) coming in standard package are:
- Runge-Kutta process modification developed by R. England. Fast and
precise method of fifth order suitable for solving systems of Type 1. See
- Exponential method modification developed by J.D. Lawson. It’s
recommended for linear and quasi-linear systems of Type 1,3 and 4
(including stiff ones). The method is A-stable for linear systems, i.e.
residuals do not depend on step length. See .
- Implicit process developed by H.H. Rosenbrock. It’s recommended for
non-linear systems of Type 1 and 2 (including stiff ones). See .
The following functions and operators are supported for programming the systems
| + - * / ^ || arithmetic operators: add, subtract, multiply, divide, power
| exp(x) ||
| sqrt(x) ||
| log(x) || natural logarithm of x
| log10(x) || common (base 10) logarithm of x
| sin(x) || sine of x
| cos(x) || cosine of x
| tan(x) || tangent of x
| asin(x) || arc sine of x
| acos(x) || arc cosine of x
| atan(x) || arc tangent of x
| sinh(x) || hyperbolic sine of x
| cosh(x) || hyperbolic cosine of x
| tanh(x) || hyperbolic tangent of x
| sinint(x) || sine integral of x
| cosint(x) || cosine integral of x
| sign(x) || sign of x
| abs(x) ||
| iif(x,expr1,expr2) || immediate if
| sat(x,y) || satellite function of x and y
| i || 1 (one)
| || 0 (empty field means zero)
Examples: 2*sin(t-1)+cos(t)-x^2, sqrt(abs(x)), iif(t,sin(x),cos(x))