Class PolynomialFunctionNewtonForm

  • All Implemented Interfaces:
    UnivariateRealFunction

    public class PolynomialFunctionNewtonForm
    extends java.lang.Object
    implements UnivariateRealFunction
    Implements the representation of a real polynomial function in Newton Form. For reference, see Elementary Numerical Analysis, ISBN 0070124477, chapter 2.

    The formula of polynomial in Newton form is p(x) = a[0] + a[1](x-c[0]) + a[2](x-c[0])(x-c[1]) + ... + a[n](x-c[0])(x-c[1])...(x-c[n-1]) Note that the length of a[] is one more than the length of c[]

    Since:
    1.2
    • Constructor Summary

      Constructors 
      Constructor Description
      PolynomialFunctionNewtonForm​(double[] a, double[] c)
      Construct a Newton polynomial with the given a[] and c[].
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int degree()
      Returns the degree of the polynomial.
      static double evaluate​(double[] a, double[] c, double z)
      Evaluate the Newton polynomial using nested multiplication.
      double[] getCenters()
      Returns a copy of the centers array.
      double[] getCoefficients()
      Returns a copy of the coefficients array.
      double[] getNewtonCoefficients()
      Returns a copy of coefficients in Newton form formula.
      double value​(double z)
      Calculate the function value at the given point.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • PolynomialFunctionNewtonForm

        public PolynomialFunctionNewtonForm​(double[] a,
                                            double[] c)
                                     throws java.lang.IllegalArgumentException
        Construct a Newton polynomial with the given a[] and c[]. The order of centers are important in that if c[] shuffle, then values of a[] would completely change, not just a permutation of old a[].

        The constructor makes copy of the input arrays and assigns them.

        Parameters:
        a - the coefficients in Newton form formula
        c - the centers
        Throws:
        java.lang.IllegalArgumentException - if input arrays are not valid
    • Method Detail

      • degree

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

        public double[] getNewtonCoefficients()
        Returns a copy of coefficients in Newton form formula.

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

        Returns:
        a fresh copy of coefficients in Newton form formula
      • getCenters

        public double[] getCenters()
        Returns a copy of the centers array.

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

        Returns:
        a fresh copy of the centers array
      • getCoefficients

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

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

        Returns:
        a fresh copy of the coefficients array
      • evaluate

        public static double evaluate​(double[] a,
                                      double[] c,
                                      double z)
                               throws FunctionEvaluationException,
                                      java.lang.IllegalArgumentException
        Evaluate the Newton polynomial using nested multiplication. It is also called Horner's Rule and takes O(N) time.
        Parameters:
        a - the coefficients in Newton form formula
        c - the centers
        z - the point at which the function value is to be computed
        Returns:
        the function value
        Throws:
        FunctionEvaluationException - if a runtime error occurs
        java.lang.IllegalArgumentException - if inputs are not valid