RegModels.FracFit Method

procedure FracFit(const B: TVec; const X: TVec; const Y: TVec; DegNom: Integer; DegDenom: Integer; Constant: Boolean; const Weights: TVec);

Fits rational fraction equation to data.

#NameDescription
1XVector of independent variable.
2YVector of dependent variable.
3DegNomNominator degree.
4DegDenomDenominator degree.
5ConstantIf false, B[0] i.e. constant term in nominator is set to 0.0.
6WeightsWeights (optional). Weights are used only if they are set.
7BReturns regression coefficients for rational function.

Result: stored in self (calling object)

Remarks:

The routine fits equations to data by minimizing the sum of squared residuals. The observed values obey the following equation:

Y=b[0]+b[1]X+b[2]X2++b[n]Xn1+b[n+1]X++b[n+d]XdY = \cfrac{b[0]+b[1]\cdot X + b[2]\cdot X^2 +\cdots + b[n]\cdot X^{n}}{1+b[n+1]\cdot X + \cdots + b[n+d]\cdot X^{d}}

where n and d are nominator and denominator polynomial degrees.

Examples
Uses MtxExpr, MtxVecTee, Series, RegModels;
procedure Example(Series1: TLineSeries);
var Y,YHat,B,X: Vector;
begin
    X.Size(100);
    Y.Size(X);
    X.Ramp(-5,0.05); // X = (-5, -4.95, ...-0.05)
    Y.RandGauss(3.5,0.12); // populate sample data
    FracFit(B,X,Y,2,4); // calculate coefficients, no constant term
    // evaluate y by using calculated coefficients
    FracEval(B.Values,X,YHat,2);
    DrawValues(X,Y,Series1); // draw original data
    DrawValues(X,YHat,Series2); // draw fitted data
end;
See Also: RegModels.FracEval