# Class PolynomialFunction

java.lang.Object
org.hipparchus.analysis.polynomials.PolynomialFunction
All Implemented Interfaces:
Serializable, UnivariateDifferentiableFunction, FieldUnivariateFunction, UnivariateFunction
Direct Known Subclasses:
SmoothStepFactory.SmoothStepFunction

public class PolynomialFunction extends Object implements UnivariateDifferentiableFunction, FieldUnivariateFunction, Serializable
Immutable representation of a real polynomial function with real coefficients.

Horner's Method is used to evaluate the function.

• ## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
static class
PolynomialFunction.Parametric
Dedicated parametric polynomial class.
• ## Constructor Summary

Constructors
Constructor
Description
PolynomialFunction(double... c)
Construct a polynomial with the given coefficients.
• ## Method Summary

Modifier and Type
Method
Description
PolynomialFunction
add(PolynomialFunction p)
Add a polynomial to the instance.
PolynomialFunction
antiDerivative()
Returns an anti-derivative of this polynomial, with 0 constant term.
int
degree()
Returns the degree of the polynomial.
protected static double[]
differentiate(double[] coefficients)
Returns the coefficients of the derivative of the polynomial with the given coefficients.
boolean
equals(Object obj)
protected static double
evaluate(double[] coefficients, double argument)
Uses Horner's Method to evaluate the polynomial with the given coefficients at the argument.
double[]
getCoefficients()
Returns a copy of the coefficients array.
int
hashCode()
double
integrate(double lower, double upper)
Returns the definite integral of this polymomial over the given interval.
PolynomialFunction
multiply(PolynomialFunction p)
Multiply the instance by a polynomial.
PolynomialFunction
negate()
Negate the instance.
PolynomialFunction
polynomialDerivative()
Returns the derivative as a PolynomialFunction.
PolynomialFunction
subtract(PolynomialFunction p)
Subtract a polynomial from the instance.
String
toString()
Returns a string representation of the polynomial.
double
value(double x)
Compute the value of the function for the given argument.
<T extends Derivative<T>>T
value(T t)
Compute the value for the function.

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

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

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

toCalculusFieldUnivariateFunction
• ## Constructor Details

• ### PolynomialFunction

public PolynomialFunction(double... c) throws
Construct a polynomial with the given coefficients. The first element of the coefficients array is the constant term. Higher degree coefficients follow in sequence. The degree of the resulting polynomial is the index of the last non-null element of the array, or 0 if all elements are null.

The constructor makes a copy of the input array and assigns the copy to the coefficients property.

Parameters:
c - Polynomial coefficients.
Throws:
NullArgumentException - if c is null.
MathIllegalArgumentException - if c is empty.
• ## Method Details

• ### value

public double value(double x)
Compute the value of the function for the given argument.

The value returned is

coefficients[n] * x^n + ... + coefficients[1] * x + coefficients[0]

Specified by:
value in interface UnivariateFunction
Parameters:
x - Argument for which the function value should be computed.
Returns:
the value of the polynomial at the given point.
• ### degree

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

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

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

Returns:
a fresh copy of the coefficients array.
• ### evaluate

protected static double evaluate(double[] coefficients, double argument) throws
Uses Horner's Method to evaluate the polynomial with the given coefficients at the argument.
Parameters:
coefficients - Coefficients of the polynomial to evaluate.
argument - Input value.
Returns:
the value of the polynomial.
Throws:
MathIllegalArgumentException - if coefficients is empty.
NullArgumentException - if coefficients is null.
• ### value

public <T extends Derivative<T>> T value(T t) throws
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
Throws:
MathIllegalArgumentException - if coefficients is empty.
NullArgumentException - if coefficients is null.
• ### value

public <T extends CalculusFieldElement<T>> T value(T t) throws
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.
Throws:
MathIllegalArgumentException - if coefficients is empty.
NullArgumentException - if coefficients is null.
Since:
1.3

Add a polynomial to the instance.
Parameters:
p - Polynomial to add.
Returns:
a new polynomial which is the sum of the instance and p.
• ### subtract

public PolynomialFunction subtract
Subtract a polynomial from the instance.
Parameters:
p - Polynomial to subtract.
Returns:
a new polynomial which is the instance minus p.
• ### negate

public PolynomialFunction negate()
Negate the instance.
Returns:
a new polynomial with all coefficients negated
• ### multiply

public PolynomialFunction multiply
Multiply the instance by a polynomial.
Parameters:
p - Polynomial to multiply by.
Returns:
a new polynomial equal to this times p
• ### differentiate

protected static double[] differentiate(double[] coefficients) throws
Returns the coefficients of the derivative of the polynomial with the given coefficients.
Parameters:
coefficients - Coefficients of the polynomial to differentiate.
Returns:
the coefficients of the derivative or null if coefficients has length 1.
Throws:
MathIllegalArgumentException - if coefficients is empty.
NullArgumentException - if coefficients is null.
• ### antiDerivative

public PolynomialFunction antiDerivative()
Returns an anti-derivative of this polynomial, with 0 constant term.
Returns:
a polynomial whose derivative has the same coefficients as this polynomial
• ### integrate

public double integrate(double lower, double upper)
Returns the definite integral of this polymomial over the given interval.

[lower, upper] must describe a finite interval (neither can be infinite and lower must be less than or equal to upper).

Parameters:
lower - lower bound for the integration
upper - upper bound for the integration
Returns:
the integral of this polymomial over the given interval
Throws:
MathIllegalArgumentException - if the bounds do not describe a finite interval
• ### polynomialDerivative

public PolynomialFunction polynomialDerivative()
Returns the derivative as a PolynomialFunction.
Returns:
the derivative polynomial.
• ### toString

public String toString()
Returns a string representation of the polynomial.

The representation is user oriented. Terms are displayed lowest degrees first. The multiplications signs, coefficients equals to one and null terms are not displayed (except if the polynomial is 0, in which case the 0 constant term is displayed). Addition of terms with negative coefficients are replaced by subtraction of terms with positive coefficients except for the first displayed term (i.e. we display -3 for a constant negative polynomial, but 1 - 3 x + x^2 if the negative coefficient is not the first one displayed).

Overrides:
toString in class Object
Returns:
a string representation of the polynomial.
• ### hashCode

public int hashCode()
Overrides:
hashCode in class Object
• ### equals

public boolean equals(Object obj)
Overrides:
equals in class Object