using System;
using System.Windows.Forms;
using DotNumerics.ODE;
namespace DotNumericsDemo.DifferentialEquations
{
public partial class AdamsMoulton : Form
{
private OdeAdamsMoulton odeAdams = new OdeAdamsMoulton();
private double _mu = 1;
private void Solve()
{
OdeFunction fun = new OdeFunction(ODEs);
double[] y0 = new double[2];
y0[0] = 2;
y0[1] = 0;
this.odeAdams.InitializeODEs(fun, 2);
double[,] sol = odeAdams.Solve(y0, 0, 0.02, 20);
}
//The van der Pol equation:
// y''-mu*(1-y^2)*y'+y=0
//If y0=y and y1=y' then:
// y0' = y1, y0(0)= 2
// y1' = mu * (1 - y0 ^2) * y1 - y0 y1(0)=0
double[] yprime = new double[2];
private double[] ODEs(double t, double[] y)
{
yprime[0] = y[1];
yprime[1] = this._mu * (1 - y[0] * y[0]) * y[1] - y[0];
return this.yprime;
}
}
}