Class PolynomialFunctionLagrangeForm

java.lang.Object
org.apache.commons.math3.analysis.polynomials.PolynomialFunctionLagrangeForm
All Implemented Interfaces:
UnivariateFunction

public class PolynomialFunctionLagrangeForm extends Object implements UnivariateFunction
Implements the representation of a real polynomial function in Lagrange Form. For reference, see Introduction to Numerical Analysis, ISBN 038795452X, chapter 2.

The approximated function should be smooth enough for Lagrange polynomial to work well. Otherwise, consider using splines instead.

Since:
1.2
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private double[]
    The coefficients of the polynomial, ordered by degree -- i.e.
    private boolean
    Whether the polynomial coefficients are available.
    private final double[]
    Interpolating points (abscissas).
    private final double[]
    Function values at interpolating points.
  • Constructor Summary

    Constructors
    Constructor
    Description
    PolynomialFunctionLagrangeForm(double[] x, double[] y)
    Construct a Lagrange polynomial with the given abscissas and function values.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    Calculate the coefficients of Lagrange polynomial from the interpolation data.
    int
    Returns the degree of the polynomial.
    static double
    evaluate(double[] x, double[] y, double z)
    Evaluate the Lagrange polynomial using Neville's Algorithm.
    private static double
    evaluateInternal(double[] x, double[] y, double z)
    Evaluate the Lagrange polynomial using Neville's Algorithm.
    double[]
    Returns a copy of the coefficients array.
    double[]
    Returns a copy of the interpolating points array.
    double[]
    Returns a copy of the interpolating values array.
    double
    value(double z)
    Calculate the function value at the given point.
    static boolean
    verifyInterpolationArray(double[] x, double[] y, boolean abort)
    Check that the interpolation arrays are valid.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • coefficients

      private double[] coefficients
      The coefficients of the polynomial, ordered by degree -- i.e. coefficients[0] is the constant term and coefficients[n] is the coefficient of x^n where n is the degree of the polynomial.
    • x

      private final double[] x
      Interpolating points (abscissas).
    • y

      private final double[] y
      Function values at interpolating points.
    • coefficientsComputed

      private boolean coefficientsComputed
      Whether the polynomial coefficients are available.
  • Constructor Details

  • Method Details

    • value

      public double value(double z)
      Calculate the function value at the given point.
      Specified by:
      value in interface UnivariateFunction
      Parameters:
      z - Point at which the function value is to be computed.
      Returns:
      the function value.
      Throws:
      DimensionMismatchException - if x and y have different lengths.
      NonMonotonicSequenceException - if x is not sorted in strictly increasing order.
      NumberIsTooSmallException - if the size of x is less than 2.
    • degree

      public int degree()
      Returns the degree of the polynomial.
      Returns:
      the degree of the polynomial
    • getInterpolatingPoints

      public double[] getInterpolatingPoints()
      Returns a copy of the interpolating points array.

      Changes made to the returned copy will not affect the polynomial.

      Returns:
      a fresh copy of the interpolating points array
    • getInterpolatingValues

      public double[] getInterpolatingValues()
      Returns a copy of the interpolating values array.

      Changes made to the returned copy will not affect the polynomial.

      Returns:
      a fresh copy of the interpolating values array
    • getCoefficients

      public double[] getCoefficients()
      Returns a copy of the coefficients array.

      Changes made to the returned copy will not affect the polynomial.

      Note that coefficients computation can be ill-conditioned. Use with caution and only when it is necessary.

      Returns:
      a fresh copy of the coefficients array
    • evaluate

      public static double evaluate(double[] x, double[] y, double z) throws DimensionMismatchException, NumberIsTooSmallException, NonMonotonicSequenceException
      Evaluate the Lagrange polynomial using Neville's Algorithm. It takes O(n^2) time.
      Parameters:
      x - Interpolating points array.
      y - Interpolating values array.
      z - Point at which the function value is to be computed.
      Returns:
      the function value.
      Throws:
      DimensionMismatchException - if x and y have different lengths.
      NonMonotonicSequenceException - if x is not sorted in strictly increasing order.
      NumberIsTooSmallException - if the size of x is less than 2.
    • evaluateInternal

      private static double evaluateInternal(double[] x, double[] y, double z)
      Evaluate the Lagrange polynomial using Neville's Algorithm. It takes O(n^2) time.
      Parameters:
      x - Interpolating points array.
      y - Interpolating values array.
      z - Point at which the function value is to be computed.
      Returns:
      the function value.
      Throws:
      DimensionMismatchException - if x and y have different lengths.
      NonMonotonicSequenceException - if x is not sorted in strictly increasing order.
      NumberIsTooSmallException - if the size of x is less than 2.
    • computeCoefficients

      protected void computeCoefficients()
      Calculate the coefficients of Lagrange polynomial from the interpolation data. It takes O(n^2) time. Note that this computation can be ill-conditioned: Use with caution and only when it is necessary.
    • verifyInterpolationArray

      public static boolean verifyInterpolationArray(double[] x, double[] y, boolean abort) throws DimensionMismatchException, NumberIsTooSmallException, NonMonotonicSequenceException
      Check that the interpolation arrays are valid. The arrays features checked by this method are that both arrays have the same length and this length is at least 2.
      Parameters:
      x - Interpolating points array.
      y - Interpolating values array.
      abort - Whether to throw an exception if x is not sorted.
      Returns:
      false if the x is not sorted in increasing order, true otherwise.
      Throws:
      DimensionMismatchException - if the array lengths are different.
      NumberIsTooSmallException - if the number of points is less than 2.
      NonMonotonicSequenceException - if x is not sorted in strictly increasing order and abort is true.
      See Also: