Example: The cubic spline interpolant to noisy data with supplied weights

A cubic spline interpolant to noisy data is computed using supplied weights and smoothing parameter. The value of the spline at point 0.3010 is printed.

import com.imsl.math.*;
import com.imsl.stat.*;

public class CsSmoothC2Ex1 {

public static void main(String args[]) {
//	Set up a grid
int n = 300;
double x[] = new double[n];
double y[] = new double[n];
for (int k = 0; k < n; k++) {
x[k] = 3. * ((double) (k) / (double) (n - 1));
y[k] = 1. / (.1 + Math.pow(3. * (x[k] - 1.), 4));
}

//	Seed the random number generator
Random rn = new Random();
rn.setSeed(1234579);
rn.setMultiplier(16807);

//	Contaminate the data
for (int i = 0; i < n; i++) {
y[i] = y[i] + 2. * rn.nextFloat() - 1.;
}

//	Set the weights
double sdev = 1. / Math.sqrt(3.);
double weights[] = new double[n];
for (int i = 0; i < n; i++) {
weights[i] = sdev;
}

//	Set the smoothing parameter
double smpar = (double) n;

//	Smooth the data
CsSmoothC2 cs = new CsSmoothC2(x, y, weights, smpar);
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.06458434076780883