Example 1

A tensor-product spline interpolant to a function
f(x,y) = x^{3} + y^2
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.