# Class Polynomial

All Implemented Interfaces:
AbelianGroup<Polynomial>, Monoid<Polynomial>, Ring<Polynomial>, VectorSpace<Polynomial,Real>, Function<Vector,Double>, RealScalarFunction, UnivariateRealFunction
Direct Known Subclasses:
CauchyPolynomial, DPolynomial, QuadraticMonomial, ScaledPolynomial

public class Polynomial extends AbstractUnivariateRealFunction implements Ring<Polynomial>, VectorSpace<Polynomial,Real>
A polynomial is a UnivariateRealFunction that represents a finite length expression constructed from variables and constants, using the operations of addition, subtraction, multiplication, and constant non-negative whole number exponents. Specifically, it has the form $p(x) = a_0x^n + a_1x^{n-1} + ... + a_{n-1}x + a_n$ This implementation is immutable.

## Nested classes/interfaces inherited from interface dev.nm.analysis.function.Function

Function.EvaluationException
• ## Field Summary

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

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

Modifier and Type
Method
Description
Polynomial
add(Polynomial that)
+ : G × G → G
int
degree()
Get the degree of this polynomial.
boolean
equals(Object obj)

double
evaluate(double x)
Evaluate this polynomial at x.
Complex
evaluate(Complex z)
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
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
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 dev.nm.analysis.function.rn2r1.univariate.AbstractUnivariateRealFunction

evaluate

### Methods inherited from class dev.nm.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 dev.nm.analysis.function.Function

dimensionOfDomain, dimensionOfRange
• ## Field Details

• ### ZERO

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

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

• ### 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 Details

• ### 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 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
• ### 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)

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
• ### 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