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.
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classPolynomialFunction.ParametricDedicated parametric polynomial class.
-
Constructor Summary
Constructors Constructor Description PolynomialFunction(double... c)Construct a polynomial with the given coefficients.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description PolynomialFunctionadd(PolynomialFunction p)Add a polynomial to the instance.PolynomialFunctionantiDerivative()Returns an anti-derivative of this polynomial, with 0 constant term.intdegree()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.booleanequals(Object obj)protected static doubleevaluate(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.inthashCode()doubleintegrate(double lower, double upper)Returns the definite integral of this polymomial over the given interval.PolynomialFunctionmultiply(PolynomialFunction p)Multiply the instance by a polynomial.PolynomialFunctionnegate()Negate the instance.PolynomialFunctionpolynomialDerivative()Returns the derivative as aPolynomialFunction.PolynomialFunctionsubtract(PolynomialFunction p)Subtract a polynomial from the instance.StringtoString()Returns a string representation of the polynomial.doublevalue(double x)Compute the value of the function for the given argument.<T extends Derivative<T>>
Tvalue(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 Detail
-
PolynomialFunction
public PolynomialFunction(double... c) throws MathIllegalArgumentException, NullArgumentExceptionConstruct 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- ifcisnull.MathIllegalArgumentException- ifcis empty.
-
-
Method Detail
-
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:
valuein interfaceUnivariateFunction- Parameters:
x- Argument for which the function value should be computed.- Returns:
- the value of the polynomial at the given point.
- See Also:
UnivariateFunction.value(double)
-
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 MathIllegalArgumentException, NullArgumentExceptionUses 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- ifcoefficientsis empty.NullArgumentException- ifcoefficientsisnull.
-
value
public <T extends Derivative<T>> T value(T t) throws MathIllegalArgumentException, NullArgumentException
Compute the value for the function.- Specified by:
valuein 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
- Throws:
MathIllegalArgumentException- ifcoefficientsis empty.NullArgumentException- ifcoefficientsisnull.
-
value
public <T extends CalculusFieldElement<T>> T value(T t) throws MathIllegalArgumentException, NullArgumentException
Compute the value of the function.- Specified by:
valuein 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.
- Throws:
MathIllegalArgumentException- ifcoefficientsis empty.NullArgumentException- ifcoefficientsisnull.- Since:
- 1.3
-
add
public PolynomialFunction add(PolynomialFunction p)
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(PolynomialFunction p)
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(PolynomialFunction p)
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 MathIllegalArgumentException, NullArgumentExceptionReturns 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
nullif coefficients has length 1. - Throws:
MathIllegalArgumentException- ifcoefficientsis empty.NullArgumentException- ifcoefficientsisnull.
-
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 integrationupper- 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 aPolynomialFunction.- 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
-3for a constant negative polynomial, but1 - 3 x + x^2if the negative coefficient is not the first one displayed).
-
-