package com.imsl.test.example.math; import java.text.*; import com.imsl.math.*; /** *
* Spline2DInterpolate Example 4: Integrates a tensor-product spline.
* * This example integrates a two-dimensional, tensor-product spline over the * rectangle \([0, x]\) by \([0, y]\). * * @see Code * @see Output */ public class Spline2DInterpolateEx4 { // Define function private static double F(double x, double y) { return (x * x * x + y * y); } // The integral of F from 0 to x and 0 to y private static double FI(double x, double y) { return (y * x * x * x * x / 4.0 + x * y * y * y / 3.0); } public static void main(String args[]) { int nData = 11, 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 NumberFormat nf = NumberFormat.getInstance(); nf.setMaximumFractionDigits(4); nf.setMinimumFractionDigits(4); System.out.println(" x y FI(x, y) Integral Error"); for (int i = 0; i < outData; i++) { x = (double) (1 + i) / (double) (outData + 1); for (int j = 0; j < outData; j++) { y = (double) (1 + j) / (double) (outData + 1); z = spline.integral(0.0, x, 0.0, y); System.out.println(nf.format(x) + " " + nf.format(y) + " " + nf.format(FI(x, y)) + " " + nf.format(z) + " " + nf.format(Math.abs(FI(x, y) - z))); } } } }