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

java.lang.Object
  extended by org.apache.commons.math.analysis.interpolation.BicubicSplineInterpolatingFunction
All Implemented Interfaces:
BivariateRealFunction

public class BicubicSplineInterpolatingFunction
extends java.lang.Object
implements BivariateRealFunction

Function that implements the bicubic spline interpolation.

Since:
2.1
Version:
$Revision$ $Date$

Field Summary
private static double[][] AINV
          Matrix to compute the spline coefficients from the function values and function derivatives values
private  BivariateRealFunction[][][] partialDerivatives
          Partial derivatives The value of the first index determines the kind of derivatives: 0 = first partial derivatives wrt x 1 = first partial derivatives wrt y 2 = second partial derivatives wrt x 3 = second partial derivatives wrt y 4 = cross partial derivatives
private  BicubicSplineFunction[][] splines
          Set of cubic splines patching the whole data grid
private  double[] xval
          Samples x-coordinates
private  double[] yval
          Samples y-coordinates
 
Constructor Summary
BicubicSplineInterpolatingFunction(double[] x, double[] y, double[][] f, double[][] dFdX, double[][] dFdY, double[][] d2FdXdY)
           
 
Method Summary
private  void computePartialDerivatives()
          Compute all partial derivatives.
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  double partialDerivative(int which, double x, double y)
           
 double partialDerivativeX(double x, double y)
           
 double partialDerivativeXX(double x, double y)
           
 double partialDerivativeXY(double x, double y)
           
 double partialDerivativeY(double x, double y)
           
 double partialDerivativeYY(double x, double y)
           
private  int searchIndex(double c, double[] val)
           
 double value(double x, double y)
          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


splines

private final BicubicSplineFunction[][] splines
Set of cubic splines patching the whole data grid


partialDerivatives

private BivariateRealFunction[][][] partialDerivatives
Partial derivatives The value of the first index determines the kind of derivatives: 0 = first partial derivatives wrt x 1 = first partial derivatives wrt y 2 = second partial derivatives wrt x 3 = second partial derivatives wrt y 4 = cross partial derivatives

Constructor Detail

BicubicSplineInterpolatingFunction

public BicubicSplineInterpolatingFunction(double[] x,
                                          double[] y,
                                          double[][] f,
                                          double[][] dFdX,
                                          double[][] dFdY,
                                          double[][] d2FdXdY)
                                   throws DimensionMismatchException
Parameters:
x - Sample values of the x-coordinate, in increasing order.
y - 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.
d2FdXdY - Values of the cross partial derivative of function on every grid point.
Throws:
DimensionMismatchException - if the various arrays do not contain the expected number of elements.
NonMonotonousSequenceException - if x or y are not strictly increasing.
NoDataException - if any of the arrays has zero length.
Method Detail

value

public double value(double x,
                    double y)
Compute the value for the function.

Specified by:
value in interface BivariateRealFunction
Parameters:
x - Abscissa for which the function value should be computed.
y - Ordinate for which the function value should be computed.
Returns:
the value.

partialDerivativeX

public double partialDerivativeX(double x,
                                 double y)
Parameters:
x - x-coordinate.
y - y-coordinate.
Returns:
the value at point (x, y) of the first partial derivative with respect to x.
Since:
2.2

partialDerivativeY

public double partialDerivativeY(double x,
                                 double y)
Parameters:
x - x-coordinate.
y - y-coordinate.
Returns:
the value at point (x, y) of the first partial derivative with respect to y.
Since:
2.2

partialDerivativeXX

public double partialDerivativeXX(double x,
                                  double y)
Parameters:
x - x-coordinate.
y - y-coordinate.
Returns:
the value at point (x, y) of the second partial derivative with respect to x.
Since:
2.2

partialDerivativeYY

public double partialDerivativeYY(double x,
                                  double y)
Parameters:
x - x-coordinate.
y - y-coordinate.
Returns:
the value at point (x, y) of the second partial derivative with respect to y.
Since:
2.2

partialDerivativeXY

public double partialDerivativeXY(double x,
                                  double y)
Parameters:
x - x-coordinate.
y - y-coordinate.
Returns:
the value at point (x, y) of the second partial cross-derivative.
Since:
2.2

partialDerivative

private double partialDerivative(int which,
                                 double x,
                                 double y)
Parameters:
which - First index in partialDerivatives.
x - x-coordinate.
y - y-coordinate.
Returns:
the value at point (x, y) of the selected partial derivative.
Throws:
FunctionEvaluationException

computePartialDerivatives

private void computePartialDerivatives()
Compute all partial derivatives.


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