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

java.lang.Object
  extended by 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 Tricubic interpolation in three dimensions
F. Lekien and J. Marsden
Int. J. Numer. Meth. Engng 2005; 63:455-471

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: 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-2011 Apache Software Foundation