Class BicubicInterpolatingFunction

java.lang.Object
org.apache.commons.math3.analysis.interpolation.BicubicInterpolatingFunction
All Implemented Interfaces:
BivariateFunction

public class BicubicInterpolatingFunction extends Object implements BivariateFunction
Function that implements the bicubic spline interpolation.
Since:
3.4
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static final double[][]
    Matrix to compute the spline coefficients from the function values and function derivatives values
    private static final int
    Number of coefficients.
    private final BicubicFunction[][]
    Set of cubic splines patching the whole data grid
    private final double[]
    Samples x-coordinates
    private final double[]
    Samples y-coordinates
  • Constructor Summary

    Constructors
    Constructor
    Description
    BicubicInterpolatingFunction(double[] x, double[] y, double[][] f, double[][] dFdX, double[][] dFdY, double[][] d2FdXdY)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    private double[]
    Compute the spline coefficients from the list of function values and function partial derivatives values at the four corners of a grid element.
    boolean
    isValidPoint(double x, double y)
    Indicates whether a point is within the interpolation range.
    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 Details

    • NUM_COEFF

      private static final int NUM_COEFF
      Number of coefficients.
      See Also:
    • 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 BicubicFunction[][] splines
      Set of cubic splines patching the whole data grid
  • Constructor Details

    • BicubicInterpolatingFunction

      public BicubicInterpolatingFunction(double[] x, double[] y, double[][] f, double[][] dFdX, double[][] dFdY, double[][] d2FdXdY) throws DimensionMismatchException, NoDataException, NonMonotonicSequenceException
      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.
      NonMonotonicSequenceException - if x or y are not strictly increasing.
      NoDataException - if any of the arrays has zero length.
  • Method Details

    • value

      public double value(double x, double y) throws OutOfRangeException
      Compute the value for the function.
      Specified by:
      value in interface BivariateFunction
      Parameters:
      x - Abscissa for which the function value should be computed.
      y - Ordinate for which the function value should be computed.
      Returns:
      the value.
      Throws:
      OutOfRangeException
    • isValidPoint

      public boolean isValidPoint(double x, double y)
      Indicates whether a point is within the interpolation range.
      Parameters:
      x - First coordinate.
      y - Second coordinate.
      Returns:
      true if (x, y) is a valid point.
    • 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.
      Throws:
      OutOfRangeException - if c is out of the range defined by the boundary 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)
      • f(1,0)
      • f(0,1)
      • f(1,1)
      • fx(0,0)
      • fx(1,0)
      • fx(0,1)
      • fx(1,1)
      • fy(0,0)
      • fy(1,0)
      • fy(0,1)
      • fy(1,1)
      • fxy(0,0)
      • fxy(1,0)
      • fxy(0,1)
      • fxy(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.