The RK4 function uses the fourth-order Runge-Kutta method to advance a solution to a system of ordinary differential equations one time-step H , given values for the variables Y and their derivatives Dydx known at X .
RK4 is based on the routine
rk4
described in section 16.1 of
Numerical Recipes in C: The Art of Scientific Computing
(Second Edition), published by Cambridge University Press, and is used by permission.
A scalar string specifying the name of a user-supplied IDL function that calculates the values of the derivatives Dydx at X . This function must accept two arguments: A scalar floating value X , and one n -element vector Y . It must return an n -element vector result.
For example, suppose the values of the derivatives are defined by the following relations:
dy 0 / dx = -0.5 y 0, dy 1 / dx = 4.0 - 0.3 y 1 - 0.1 y 0
We can write a function DIFFERENTIAL to express these relationships in the IDL language:
To integrate the example system of differential equations for one time step, H:
H = 0.5 ; Define the step size.
X = 0.0 ; Define an initial X value.
Y = [4.0, 6.0] ; Define initial Y values.
dydx = DIFFERENTIAL(X,Y) ; Calculate the initial derivative values.
result = RK4(Y, dydx, X, H, 'differential')
;
Integrate over the interval (0, 0.5).
PRINT, result ; Print the result.
This is the exact solution vector to five-decimal precision.