Class Polynomial
- java.lang.Object
-
- dev.nm.analysis.function.rn2r1.AbstractRealScalarFunction
-
- dev.nm.analysis.function.rn2r1.univariate.AbstractUnivariateRealFunction
-
- dev.nm.analysis.function.polynomial.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 aUnivariateRealFunctionthat 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.- See Also:
- Wikipedia: Polynomial
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface dev.nm.analysis.function.Function
Function.EvaluationException
-
-
Field Summary
Fields Modifier and Type Field Description static PolynomialONEa polynomial representing 1static PolynomialZEROa 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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Polynomialadd(Polynomial that)+ : G × G → Gintdegree()Get the degree of this polynomial.booleanequals(Object obj)doubleevaluate(double x)Evaluate this polynomial at x.Complexevaluate(Complex z)Evaluate this polynomial at x.Complexevaluate(Number x)Evaluate this polynomial at x.doublegetCoefficient(int i)Get an-i, the coefficient of xn-i.double[]getCoefficients()Get a copy of the polynomial coefficients.PolynomialgetNormalization()Get the normalized version of this polynomial so the leading coefficient is 1.inthashCode()Polynomialminus(Polynomial that)- : G × G → GPolynomialmultiply(Polynomial that)× : G × G → GPolynomialONE()The multiplicative element 1 in the group such that for any elements a in the group, the equation 1 × a = a × 1 = a holds.Polynomialopposite()For each a in G, there exists an element b in G such that a + b = b + a = 0.Polynomialpow(int n)Polynomialscaled(double c)Polynomialscaled(Real c)× : F × V → VStringtoString()PolynomialZERO()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 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,
creates an instance ofnew Polynomial(1, -2, 3, 2)Polynomialrepresenting 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 andcoefficients[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
- See Also:
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:
evaluatein interfaceUnivariateRealFunction- 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)
-
add
public Polynomial add(Polynomial that)
Description copied from interface:AbelianGroup+ : G × G → G- Specified by:
addin interfaceAbelianGroup<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:
minusin interfaceAbelianGroup<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:
multiplyin interfaceMonoid<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:
scaledin interfaceVectorSpace<Polynomial,Real>- Parameters:
c- a multiplier- Returns:
- c * this
- See Also:
- Wikipedia: Scalar multiplication
-
scaled
public Polynomial scaled(double c)
-
opposite
public Polynomial opposite()
Description copied from interface:AbelianGroupFor 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 asthis.add(this.opposite()) == this.ZERO- Specified by:
oppositein interfaceAbelianGroup<Polynomial>- Returns:
- -this, the additive opposite
- See Also:
- Wikipedia: Additive inverse
-
ZERO
public Polynomial ZERO()
Description copied from interface:AbelianGroupThe 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:
ZEROin interfaceAbelianGroup<Polynomial>- Returns:
- 0, the additive identity
-
ONE
public Polynomial ONE()
Description copied from interface:MonoidThe 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:
ONEin interfaceMonoid<Polynomial>- Returns:
- 1
-
-