# SuanShu, a Java numerical and statistical library

com.numericalmethod.suanshu.analysis.function.polynomial

## Class Polynomial

• ### Nested classes/interfaces inherited from interface com.numericalmethod.suanshu.analysis.function.Function

Function.EvaluationException
• ### Field Summary

Fields
Modifier and Type Field and Description
static Polynomial ONE
a polynomial representing 1
static Polynomial ZERO
a polynomial representing 0
• ### Constructor Summary

Constructors
Constructor and Description
Polynomial(double... coefficients)
Construct a polynomial from an array of coefficients.
Polynomial(Polynomial that)
Copy constructor.
• ### Method Summary

All Methods
Modifier and Type Method and Description
Polynomial add(Polynomial that)
+ : G × G → G
int degree()
Get the degree of this polynomial.
boolean equals(Object obj)
Complex evaluate(Complex z)
Evaluate this polynomial at x.
double evaluate(double x)
Evaluate this polynomial at x.
Complex evaluate(Number x)
Evaluate this polynomial at x.
double getCoefficient(int i)
Get an-i, the coefficient of xn-i.
double[] getCoefficients()
Get a copy of the polynomial coefficients.
Polynomial getNormalization()
Get the normalized version of this polynomial so the leading coefficient is 1.
int hashCode()
Polynomial minus(Polynomial that)
- : G × G → G

The operation "-" is not in the definition of of an additive group but can be deduced.

Polynomial multiply(Polynomial that)
× : G × G → G
Polynomial ONE()
The multiplicative element 1 in the group such that for any elements a in the group, the equation 1 × a = a × 1 = a holds.
Polynomial opposite()
For each a in G, there exists an element b in G such that a + b = b + a = 0.
Polynomial pow(int n)
Polynomial scaled(double c)
Polynomial scaled(Real c)
× : F × V → V

The result of applying this function to a scalar, c, in F and v in V is denoted cv.

String toString()
Polynomial ZERO()
The additive element 0 in the group, such that for all elements a in the group, the equation 0 + a = a + 0 = a holds.
• ### Methods inherited from class com.numericalmethod.suanshu.analysis.function.rn2r1.univariate.AbstractUnivariateRealFunction

evaluate
• ### Methods inherited from class com.numericalmethod.suanshu.analysis.function.rn2r1.AbstractRealScalarFunction

dimensionOfDomain, dimensionOfRange
• ### Methods inherited from class java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait
• ### Methods inherited from interface com.numericalmethod.suanshu.analysis.function.Function

dimensionOfDomain, dimensionOfRange
• ### Field Detail

• #### ZERO

public static final Polynomial ZERO
a polynomial representing 0
• #### ONE

public static final Polynomial ONE
a polynomial representing 1
• ### Constructor Detail

• #### Polynomial

public Polynomial(double... coefficients)
Construct a polynomial from an array of coefficients. The first/0-th entry corresponds to the xn term. The last/n-th entry corresponds to the constant term. The degree of the polynomial is n, the array length minus 1.

For example,

 new Polynomial(1, -2, 3, 2) 
creates an instance of Polynomial representing x3 - 2x2 + 3x + 2.
Parameters:
coefficients - the polynomial coefficients
• #### Polynomial

public Polynomial(Polynomial that)
Copy constructor.
Parameters:
that - a polynomial
• ### Method Detail

• #### degree

public int degree()
Get the degree of this polynomial. It is equal to the largest exponent of the variable. For example, x4 + 1 has a degree of 4.
Returns:
the polynomial degree
• #### getCoefficients

public double[] getCoefficients()
Get a copy of the polynomial coefficients. In general, coefficients[i] is the coefficient of xn-i, where n is the polynomial degree. Specifically, coefficients[0] is the leading coefficient and coefficients[n] the constant term.
Returns:
a copy of the polynomial coefficients
• #### getCoefficient

public double getCoefficient(int i)
Get an-i, the coefficient of xn-i.
Parameters:
i - the i-th coefficient in this polynomial, counting from 0
Returns:
an-i
getCoefficients()
• #### getNormalization

public Polynomial getNormalization()
Get the normalized version of this polynomial so the leading coefficient is 1.
Returns:
a scaled version of the polynomial that has a leading coefficient 1
• #### evaluate

public Complex evaluate(Number x)
Evaluate this polynomial at x.
Parameters:
x - the argument
Returns:
p(x)
• #### evaluate

public double evaluate(double x)
Evaluate this polynomial at x.
Specified by:
evaluate in interface UnivariateRealFunction
Parameters:
x - the argument
Returns:
p(x)
• #### evaluate

public Complex evaluate(Complex z)
Evaluate this polynomial at x.
Parameters:
z - the argument
Returns:
p(x)

public Polynomial add(Polynomial that)
Description copied from interface: AbelianGroup
+ : G × G → G
Specified by:
add in interface AbelianGroup<Polynomial>
Parameters:
that - the object to be added
Returns:
this + that
• #### minus

public Polynomial minus(Polynomial that)
Description copied from interface: AbelianGroup
- : G × G → G

The operation "-" is not in the definition of of an additive group but can be deduced. This function is provided for convenience purpose. It is equivalent to

this.add(that.opposite())
.
Specified by:
minus in interface AbelianGroup<Polynomial>
Parameters:
that - the object to be subtracted (subtrahend)
Returns:
this - that
• #### multiply

public Polynomial multiply(Polynomial that)
Description copied from interface: Monoid
× : G × G → G
Specified by:
multiply in interface Monoid<Polynomial>
Parameters:
that - the multiplicand
Returns:
this × that
• #### pow

public Polynomial pow(int n)
• #### scaled

public Polynomial scaled(Real c)
Description copied from interface: VectorSpace
× : F × V → V

The result of applying this function to a scalar, c, in F and v in V is denoted cv.

Specified by:
scaled in interface VectorSpace<Polynomial,Real>
Parameters:
c - a multiplier
Returns:
c * this
Wikipedia: Scalar multiplication
• #### scaled

public Polynomial scaled(double c)
• #### opposite

public Polynomial opposite()
Description copied from interface: AbelianGroup
For each a in G, there exists an element b in G such that a + b = b + a = 0. That is, it is the object such as
this.add(this.opposite()) == this.ZERO
Specified by:
opposite in interface AbelianGroup<Polynomial>
Returns:
• #### ZERO

public Polynomial ZERO()
Description copied from interface: AbelianGroup
The additive element 0 in the group, such that for all elements a in the group, the equation 0 + a = a + 0 = a holds.
Specified by:
ZERO in interface AbelianGroup<Polynomial>
Returns:
• #### ONE

public Polynomial ONE()
Description copied from interface: Monoid
The multiplicative element 1 in the group such that for any elements a in the group, the equation 1 × a = a × 1 = a holds.
Specified by:
ONE in interface Monoid<Polynomial>
Returns:
1
• #### toString

public String toString()
Overrides:
toString in class Object
• #### equals

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

public int hashCode()
Overrides:
hashCode in class Object