## org.apache.commons.math.analysis.interpolation
Class TricubicSplineInterpolatingFunction

    java.lang.Object
      org.apache.commons.math.analysis.interpolation.TricubicSplineInterpolatingFunction

All Implemented Interfaces:
  TrivariateRealFunction

    public class TricubicSplineInterpolatingFunction

extends Object
implements TrivariateRealFunction

Function that implements the tricubic spline interpolation, as proposed in <quote> Tricubic interpolation in three dimensions
F. Lekien and J. Marsden
Int. J. Numer. Meth. Engng 2005; 63:455-471 </quote>

Since:
  2.2
Version:
  $Revision$ $Date$

Field Summary
`private static double[][]` `AINV` Matrix to compute the spline coefficients from the function values and function derivatives values
`private TricubicSplineFunction[][][]` `splines` Set of cubic splines pacthing the whole data grid
`private double[]` `xval` Samples x-coordinates
`private double[]` `yval` Samples y-coordinates
`private double[]` `zval` Samples z-coordinates

Constructor Summary
`TricubicSplineInterpolatingFunction(double[] x, double[] y, double[] z, double[][][] f, double[][][] dFdX, double[][][] dFdY, double[][][] dFdZ, double[][][] d2FdXdY, double[][][] d2FdXdZ, double[][][] d2FdYdZ, double[][][] d3FdXdYdZ)`

Method Summary
`private double[]` `computeSplineCoefficients(double[] beta)` Compute the spline coefficients from the list of function values and function partial derivatives values at the four corners of a grid element.
`private int` `searchIndex(double c, double[] val)`
`double` `value(double x, double y, double z)` Compute the value for the function.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### AINV

    private static final double[][] AINV

  Matrix to compute the spline coefficients from the function values and function derivatives values

### xval

    private final double[] xval

  Samples x-coordinates

### yval

    private final double[] yval

  Samples y-coordinates

### zval

    private final double[] zval

  Samples z-coordinates

### splines

    private final TricubicSplineFunction[][][] splines

  Set of cubic splines pacthing the whole data grid

Constructor Detail

### TricubicSplineInterpolatingFunction

    public TricubicSplineInterpolatingFunction(double[] x,
                                               double[] y,
                                               double[] z,
                                               double[][][] f,
                                               double[][][] dFdX,
                                               double[][][] dFdY,
                                               double[][][] dFdZ,
                                               double[][][] d2FdXdY,
                                               double[][][] d2FdXdZ,
                                               double[][][] d2FdYdZ,
                                               double[][][] d3FdXdYdZ)

Parameters:
  `x` - Sample values of the x-coordinate, in increasing order.
  `y` - Sample values of the y-coordinate, in increasing order.
  `z` - Sample values of the y-coordinate, in increasing order.
  `f` - Values of the function on every grid point.
  `dFdX` - Values of the partial derivative of function with respect to x on every grid point.
  `dFdY` - Values of the partial derivative of function with respect to y on every grid point.
  `dFdZ` - Values of the partial derivative of function with respect to z on every grid point.
  `d2FdXdY` - Values of the cross partial derivative of function on every grid point.
  `d2FdXdZ` - Values of the cross partial derivative of function on every grid point.
  `d2FdYdZ` - Values of the cross partial derivative of function on every grid point.
  `d3FdXdYdZ` - Values of the cross partial derivative of function on every grid point.
Throws:
  `NoDataException` - if any of the arrays has zero length.
  `DimensionMismatchException` - if the various arrays do not contain the expected number of elements.
  `IllegalArgumentException` - if `x`, `y` or `z` are not strictly increasing.

Method Detail

### value

    public double value(double x,
                        double y,
                        double z)

  Compute the value for the function.

  Specified by:
    `value` in interface `TrivariateRealFunction`
  Parameters:
    `x` - x-coordinate for which the function value should be computed.
    `y` - y-coordinate for which the function value should be computed.
    `z` - z-coordinate for which the function value should be computed.
  Returns:
    the value.

### searchIndex

    private int searchIndex(double c,
                            double[] val)

  Parameters:
    `c` - Coordinate.
    `val` - Coordinate samples.
  Returns:
    the index in `val` corresponding to the interval containing `c`, or `-1` if `c` is out of the range defined by the end values of `val`.

### computeSplineCoefficients

    private double[] computeSplineCoefficients(double[] beta)

  Compute the spline coefficients from the list of function values and function partial derivatives values at the four corners of a grid element. They must be specified in the following order:
  - f(0,0,0)
  - f(1,0,0)
  - f(0,1,0)
  - f(1,1,0)
  - f(0,0,1)
  - f(1,0,1)
  - f(0,1,1)
  - f(1,1,1)
  - fx(0,0,0)
  - ... (same order as above)
  - fx(1,1,1)
  - fy(0,0,0)
  - ... (same order as above)
  - fy(1,1,1)
  - fz(0,0,0)
  - ... (same order as above)
  - fz(1,1,1)
  - fxy(0,0,0)
  - ... (same order as above)
  - fxy(1,1,1)
  - fxz(0,0,0)
  - ... (same order as above)
  - fxz(1,1,1)
  - fyz(0,0,0)
  - ... (same order as above)
  - fyz(1,1,1)
  - fxyz(0,0,0)
  - ... (same order as above)
  - fxyz(1,1,1)
  where the subscripts indicate the partial derivative with respect to the corresponding variable(s).

  Parameters:
    `beta` - List of function values and function partial derivatives values.
  Returns:
    the spline coefficients.

Copyright (c) 2003-2013 Apache Software Foundation