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.06458434076781128
Link to Java source.