Class BicubicInterpolatingFunction

    • Field Summary

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

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

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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.
      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 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 BicubicFunction[][] splines
        Set of cubic splines patching the whole data grid
    • Constructor Detail

      • 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 Detail

      • 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.