java.lang.Object
edu.jas.root.ComplexRootsAbstract<C>
edu.jas.root.ComplexRootsSturm<C>
- Type Parameters:
C- coefficient type.
- All Implemented Interfaces:
ComplexRoots<C>, Serializable
Complex roots implemented by Sturm sequences. Algorithms use exact method
derived from Wilf's numeric Routh-Hurwitz method.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final booleanprivate static final org.apache.logging.log4j.LoggerFields inherited from class ComplexRootsAbstract
engine -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionlongcomplexRootCount(Rectangle<C> rect, GenPolynomial<Complex<C>> a) Complex root count of complex polynomial on rectangle.complexRoots(Rectangle<C> rect, GenPolynomial<Complex<C>> a) List of complex roots of complex polynomial a on rectangle.excludeZero(Rectangle<C> rect, GenPolynomial<Complex<C>> f) Exclude zero.longindexOfCauchy(C a, C b, GenPolynomial<C> f, GenPolynomial<C> g) Cauchy index of rational function f/g on interval.long[]indexOfRouth(C a, C b, GenPolynomial<C> f, GenPolynomial<C> g) Routh index of complex function f + i g on interval.invariantRectangle(Rectangle<C> rect, GenPolynomial<Complex<C>> f, GenPolynomial<Complex<C>> g) Invariant rectangle for algebraic number.sturmSequence(GenPolynomial<C> f, GenPolynomial<C> g) Sturm sequence.longwindingNumber(Rectangle<C> rect, GenPolynomial<Complex<C>> A) Winding number of complex function A on rectangle.
-
Field Details
-
logger
private static final org.apache.logging.log4j.Logger logger -
debug
private static final boolean debug
-
-
Constructor Details
-
ComplexRootsSturm
Constructor.- Parameters:
cf- coefficient factory.
-
-
Method Details
-
indexOfCauchy
Cauchy index of rational function f/g on interval.- Parameters:
a- interval bound for I = [a,b].b- interval bound for I = [a,b].f- univariate polynomial.g- univariate polynomial.- Returns:
- winding number of f/g in I.
-
indexOfRouth
Routh index of complex function f + i g on interval.- Parameters:
a- interval bound for I = [a,b].b- interval bound for I = [a,b].f- univariate polynomial.g- univariate polynomial != 0.- Returns:
- index number of f + i g.
-
sturmSequence
Sturm sequence.- Parameters:
f- univariate polynomial.g- univariate polynomial.- Returns:
- a Sturm sequence for f and g.
-
complexRootCount
public long complexRootCount(Rectangle<C> rect, GenPolynomial<Complex<C>> a) throws InvalidBoundaryException Complex root count of complex polynomial on rectangle.- Specified by:
complexRootCountin interfaceComplexRoots<C extends RingElem<C> & Rational>- Specified by:
complexRootCountin classComplexRootsAbstract<C extends RingElem<C> & Rational>- Parameters:
rect- rectangle.a- univariate complex polynomial.- Returns:
- root count of a in rectangle.
- Throws:
InvalidBoundaryException
-
windingNumber
public long windingNumber(Rectangle<C> rect, GenPolynomial<Complex<C>> A) throws InvalidBoundaryException Winding number of complex function A on rectangle.- Parameters:
rect- rectangle.A- univariate complex polynomial.- Returns:
- winding number of A around rect.
- Throws:
InvalidBoundaryException
-
complexRoots
public List<Rectangle<C>> complexRoots(Rectangle<C> rect, GenPolynomial<Complex<C>> a) throws InvalidBoundaryException List of complex roots of complex polynomial a on rectangle.- Specified by:
complexRootsin interfaceComplexRoots<C extends RingElem<C> & Rational>- Specified by:
complexRootsin classComplexRootsAbstract<C extends RingElem<C> & Rational>- Parameters:
rect- rectangle.a- univariate squarefree complex polynomial.- Returns:
- list of complex roots.
- Throws:
InvalidBoundaryException
-
invariantRectangle
public Rectangle<C> invariantRectangle(Rectangle<C> rect, GenPolynomial<Complex<C>> f, GenPolynomial<Complex<C>> g) throws InvalidBoundaryException Invariant rectangle for algebraic number.- Specified by:
invariantRectanglein classComplexRootsAbstract<C extends RingElem<C> & Rational>- Parameters:
rect- root isolating rectangle for f which contains exactly one root.f- univariate polynomial, non-zero.g- univariate polynomial, gcd(f,g) == 1.- Returns:
- v a new rectangle contained in rect such that g(w) != 0 for w in v.
- Throws:
InvalidBoundaryException
-
excludeZero
public Rectangle<C> excludeZero(Rectangle<C> rect, GenPolynomial<Complex<C>> f) throws InvalidBoundaryException Exclude zero. If an axis intersects with the rectangle, it is shrunk to exclude the axis. Not used.- Parameters:
rect- root isolating rectangle for f which contains exactly one root.- Returns:
- a new rectangle r such that re(r) < 0 or (re)r > 0 and im(r) < 0 or (im)r > 0.
- Throws:
InvalidBoundaryException
-