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.
import com.imsl.math.*;
import com.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 + Math.pow(3.0*(x[k]-1.0),4));
        }
        
        //	Seed the random number generator
        Random rn = new Random();
        rn.setSeed(1234579L);
        rn.setMultiplier(16807);
        
        //	Contaminate the data
        for (int i = 0; i < n; i++) {
            y[i] += 2.0 * rn.nextFloat() - 1.0;
        }
        
        //	Smooth the data
        CsSmooth cs = new CsSmooth(x, y);
        double csv = cs.value(0.3010);
        System.out.println("The computed cubic spline value at point .3010 is "
        + csv);
    }
}

Output

The computed cubic spline value at point .3010 is 0.1078582256142388
Link to Java source.