Example: The cubic spline interpolant to noisy data

A cubic spline interpolant to noisy data is computed using cross-validation to estimate the smoothing parameter. The value of the spline at point 0.3010 is printed.
using System;
using Imsl.Math;
using Imsl.Stat;

public class CsSmoothEx1
{
    public static void  Main(String[] args)
    {
        int n = 300;
        double[] x = new double[n];
        double[] y = new double[n];
        for (int k = 0; k < n; k++)
        {
            x[k] = (3.0 * k) / (n - 1);
            y[k] = 1.0 / (0.1 + System.Math.Pow(3.0 * (x[k] - 1.0), 4));
        }
        
        //    Seed the random number generator
        Imsl.Stat.Random rn = new Imsl.Stat.Random(1234579);
        rn.Multiplier = 16807;
        
        //    Contaminate the data
        for (int i = 0; i < n; i++)
        {
            y[i] += 2.0 * (float) rn.NextDouble() - 1.0;
        }
        
        //    Smooth the data
        CsSmooth cs = new CsSmooth(x, y);
        double csv = cs.Eval(0.3010);
        Console.Out.WriteLine("The computed cubic spline value at " +
                              "point .3010 is " + csv);
    }
}

Output

The computed cubic spline value at point .3010 is 0.0101201298963992

Link to C# source.