Euler.java

/**
Euler's method for solving ODEs.
WARNING: Not a very good method!

@author Walt Leipold
*/
public class Euler implements ODESolver
{
    private double stepSize = 0.0;
    private int num_eq = 0;
    private double[] rate;
    private ODE ode;

    public Euler(ODE ode)
    {
        this.ode = ode;
        num_eq = ode.getState().length;
        rate = new double[num_eq];
    }

    public double step()
    {
        double[] state = ode.getState();
        ode.getRate(state,rate);
        for (int i=0; i<num_eq; i++)
            state[i] += stepSize*rate[i];
        return stepSize;
    }

    public void initialize(double stepSize)
    {
        setStepSize(stepSize);
    }

    public void setStepSize(double stepSize)
    {
        this.stepSize = stepSize;
    }

    public double getStepSize()
    {
        return stepSize;
    }
}