Example: Runge-Kutta-Verner ordinary differential equation solver

An ordinary differential equation problem is solved using a solver which implements the Runge-Kutta-Verner method. The solution at time t=10 is printed.

import com.imsl.math.*;

public class OdeRungeKuttaEx1 {

    public static void main(String args[]) throws com.imsl.IMSLException {
        OdeRungeKutta.Function fcn = new OdeRungeKutta.Function() {
            public void f(double t, double y[], double yprime[]) {
                yprime[0] = 2. * y[0] * (1 - y[1]);
                yprime[1] = -y[1] * (1 - y[0]);
            }
        };

        double y[] = {1, 3};
        OdeRungeKutta q = new OdeRungeKutta(fcn);
        int nsteps = 10;
        for (int k = 0; k < nsteps; k++) {
            q.solve(k, k + 1, y);
        }
        System.out.println("Result = {" + y[0] + ", " + y[1] + "}");
    }
}

Output

Result = {3.1443416765160768, 0.3488265985196999}
Link to Java source.