Example 1
A tensor-product spline interpolant to a function is computed. The values of the interpolant and the error on a 4 x 4 grid are displayed.
using System;
using Imsl.Math;
public class Spline2DInterpolateEx1
{
private static double F(double x, double y)
{
return (x * x * x + y * y);
}
public static void Main(String[] args)
{
int nData = 11;
int outData = 2;
double[,] fdata = new double[nData,nData];
double[] xData = new double[nData];
double[] yData = new double[nData];
double x, y, z;
// Set up grid
for (int i = 0; i < nData; i++)
{
xData[i] = yData[i] = (double) i / ((double) (nData - 1));
}
for (int i = 0; i < nData; i++)
{
for (int j = 0; j < nData; j++)
{
fdata[i,j] = F(xData[i], yData[j]);
}
}
// Compute tensor-product interpolant
Spline2DInterpolate spline = new Spline2DInterpolate(xData,
yData, fdata);
// Print results
Console.Out.WriteLine(" x y F(x, y) "
+ "Interpolant Error");
for (int i = 0; i < outData; i++)
{
x = (double) i / (double) (outData);
for (int j = 0; j < outData; j++)
{
y = (double) j / (double) (outData);
z = spline.Value(x, y);
Console.Out.WriteLine(x.ToString("0.0000")+" "
+y.ToString("0.0000")+" "+F(x,y).ToString("0.0000")
+" "+z.ToString("0.0000")+" "
+Math.Abs(F(x, y) - z).ToString("0.0000"));
}
}
}
}
Output
x y F(x, y) Interpolant Error
0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.5000 0.2500 0.2500 0.0000
0.5000 0.0000 0.1250 0.1250 0.0000
0.5000 0.5000 0.3750 0.3750 0.0000
Link to C# source.