# Class PolynomialFunctionNewtonForm

java.lang.Object
org.hipparchus.analysis.polynomials.PolynomialFunctionNewtonForm
All Implemented Interfaces:
UnivariateDifferentiableFunction, FieldUnivariateFunction, UnivariateFunction

public class PolynomialFunctionNewtonForm extends Object implements UnivariateDifferentiableFunction, FieldUnivariateFunction
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[]

• ## Constructor Summary

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

Modifier and Type
Method
Description
protected void
computeCoefficients()
Calculate the normal polynomial coefficients given the Newton form.
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.
<T extends Derivative<T>>T
value(T t)
Compute the value for the function.
protected static void
verifyInputArray(double[] a, double[] c)
Verifies that the input arrays are valid.

### Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

### Methods inherited from interface org.hipparchus.analysis.FieldUnivariateFunction

toCalculusFieldUnivariateFunction
• ## Constructor Details

• ### PolynomialFunctionNewtonForm

public PolynomialFunctionNewtonForm(double[] a, double[] c) throws
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 - Coefficients in Newton form formula.
c - Centers.
Throws:
NullArgumentException - if any argument is null.
MathIllegalArgumentException - if any array has zero length.
MathIllegalArgumentException - if the size difference between a and c is not equal to 1.
• ## 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.
• ### value

public <T extends Derivative<T>> T value(T t)
Compute the value for the function.
Specified by:
value in interface UnivariateDifferentiableFunction
Type Parameters:
T - the type of the field elements
Parameters:
t - the point for which the function value should be computed
Returns:
the value
• ### value

public <T extends CalculusFieldElement<T>> T value(T t)
Compute the value of the function.
Specified by:
value in interface FieldUnivariateFunction
Type Parameters:
T - the type of the field elements
Parameters:
t - Point at which the function value should be computed.
Returns:
the value of the function.
• ### 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
Evaluate the Newton polynomial using nested multiplication. It is also called Horner's Rule and takes O(N) time.
Parameters:
a - Coefficients in Newton form formula.
c - Centers.
z - Point at which the function value is to be computed.
Returns:
the function value.
Throws:
NullArgumentException - if any argument is null.
MathIllegalArgumentException - if any array has zero length.
MathIllegalArgumentException - if the size difference between a and c is not equal to 1.
• ### computeCoefficients

protected void computeCoefficients()
Calculate the normal polynomial coefficients given the Newton form. It also uses nested multiplication but takes O(N^2) time.
• ### verifyInputArray

protected static void verifyInputArray(double[] a, double[] c) throws
Verifies that the input arrays are valid.

The centers must be distinct for interpolation purposes, but not for general use. Thus it is not verified here.

Parameters:
a - the coefficients in Newton form formula
c - the centers
Throws:
NullArgumentException - if any argument is null.
MathIllegalArgumentException - if any array has zero length.
MathIllegalArgumentException - if the size difference between a and c is not equal to 1.