// y=b0*x*x + b1*x + b2 i.e. parabola
void SimpleParabola(
TVec b,
TVecList x,
TVec y)
{
// return b[0]*x*x + b[1]*x + b[2];
y.Sqr(x[0]);
y.Scale(b[0));
y.AddScaled(x[0], b[1]);
y.Add(b[2]);
}
// procedure for derivatives
void SimplePabolaDeriv(
TRegressFun RegressFun,
TVecList x,
TVec y,
double[] pars,
TVecList Grad)
{
Grad[0].Sqr(x[0]);
// Grad[0] := x*x;
Grad[1].Copy(x[0]);
// Grad[1] := x;
Grad[2].Size(x[0]);
// Grad[2] := 1;
Grad[2].SetVal(1);
}
void Example();
{
// ...
Regress.MtxNonLinReg1.RegressFunction = SimpleParabola;
Regress.MtxNonLinReg1.DeriveProcedure = SimpleParabolaDeriv;
}