Example: Regression with User-supplied Basis Functions

In this example, we fit the function 1 + sin(x) + 7 * sin(3x) with no error introduced. The function is evaluated at 90 equally spaced points on the interval [0, 6]. Four basis functions are used, sin(kx) for k = 1,...,4 with no intercept.
using System;
using Imsl.Stat;
using Imsl.Math;

public class UserBasisRegressionEx1 : IRegressionBasis
{
    public double Basis(int index, double x)
    {
        return System.Math.Sin((index + 1) * x);
    }

    public static void Main(string[] args)
    {
        double[] coef = new double[4];
        IRegressionBasis basis = new UserBasisRegressionEx1();
        UserBasisRegression ubr = 
            new UserBasisRegression(basis, 4, false);
        
        for (int k = 0; k < 90; k++)
        {
            double x = 6.0 * k / 89.0;
            double y = 1.0 + Math.Sin(x) + 7.0 * Math.Sin(3.0 * x);
            ubr.Update(x, y, 1.0);
        }
        coef = ubr.GetCoefficients();
        PrintMatrix pm = new PrintMatrix("The regression coefficients are:");
        PrintMatrixFormat pmf = new PrintMatrixFormat();
        pmf.NumberFormat = "0.000";
        pm.Print(pmf, coef);
    }
}

Output

The regression coefficients are:
     0    
0  1.010  
1  0.020  
2  7.029  
3  0.037  


Link to C# source.