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;
}
}