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
ConstructorDescriptionPolynomialFunctionNewtonForm
(double[] a, double[] c) Construct a Newton polynomial with the given a[] and c[]. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
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[]
Returns a copy of the centers array.double[]
Returns a copy of the coefficients array.double[]
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>>
Tvalue
(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 MathIllegalArgumentException, NullArgumentException 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 isnull
.MathIllegalArgumentException
- if any array has zero length.MathIllegalArgumentException
- if the size difference betweena
andc
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 interfaceUnivariateFunction
- Parameters:
z
- Point at which the function value is to be computed.- Returns:
- the function value.
-
value
Compute the value for the function.- Specified by:
value
in interfaceUnivariateDifferentiableFunction
- 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
Compute the value of the function.- Specified by:
value
in interfaceFieldUnivariateFunction
- 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 MathIllegalArgumentException, NullArgumentException 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 isnull
.MathIllegalArgumentException
- if any array has zero length.MathIllegalArgumentException
- if the size difference betweena
andc
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 MathIllegalArgumentException, NullArgumentException 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 formulac
- the centers- Throws:
NullArgumentException
- if any argument isnull
.MathIllegalArgumentException
- if any array has zero length.MathIllegalArgumentException
- if the size difference betweena
andc
is not equal to 1.
-