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
All Methods Static Methods Instance Methods Concrete Methods 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>>
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 Detail
-
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 Detail
-
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
public <T extends Derivative<T>> T value(T t)
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
public <T extends CalculusFieldElement<T>> T value(T t)
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.- See Also:
DividedDifferenceInterpolator.computeDividedDifference(double[], double[])
-
-