Class PolynomialFunctionNewtonForm
- java.lang.Object
-
- org.apache.commons.math.analysis.polynomials.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.
-
-
-
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 formulac
- the centers- Throws:
java.lang.IllegalArgumentException
- if input arrays are not valid
-
-
Method Detail
-
value
public double value(double z) throws FunctionEvaluationException
Calculate the function value at the given point.- Specified by:
value
in interfaceUnivariateRealFunction
- Parameters:
z
- the point at which the function value is to be computed- Returns:
- the function value
- Throws:
FunctionEvaluationException
- if a runtime error occurs- See Also:
UnivariateRealFunction.value(double)
-
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 formulac
- the centersz
- the point at which the function value is to be computed- Returns:
- the function value
- Throws:
FunctionEvaluationException
- if a runtime error occursjava.lang.IllegalArgumentException
- if inputs are not valid
-
-