Package edu.jas.root
Class ComplexRootsSturm<C extends RingElem<C> & Rational>
- java.lang.Object
-
- edu.jas.root.ComplexRootsAbstract<C>
-
- edu.jas.root.ComplexRootsSturm<C>
-
- Type Parameters:
C
- coefficient type.
- All Implemented Interfaces:
ComplexRoots<C>
,java.io.Serializable
public class ComplexRootsSturm<C extends RingElem<C> & Rational> extends ComplexRootsAbstract<C>
Complex roots implemented by Sturm sequences. Algorithms use exact method derived from Wilf's numeric Routh-Hurwitz method.- Author:
- Heinz Kredel
- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class edu.jas.root.ComplexRootsAbstract
engine
-
-
Constructor Summary
Constructors Constructor Description ComplexRootsSturm(RingFactory<Complex<C>> cf)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description long
complexRootCount(Rectangle<C> rect, GenPolynomial<Complex<C>> a)
Complex root count of complex polynomial on rectangle.java.util.List<Rectangle<C>>
complexRoots(Rectangle<C> rect, GenPolynomial<Complex<C>> a)
List of complex roots of complex polynomial a on rectangle.Rectangle<C>
excludeZero(Rectangle<C> rect, GenPolynomial<Complex<C>> f)
Exclude zero.long
indexOfCauchy(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.Rectangle<C>
invariantRectangle(Rectangle<C> rect, GenPolynomial<Complex<C>> f, GenPolynomial<Complex<C>> g)
Invariant rectangle for algebraic number.java.util.List<GenPolynomial<C>>
sturmSequence(GenPolynomial<C> f, GenPolynomial<C> g)
Sturm sequence.long
windingNumber(Rectangle<C> rect, GenPolynomial<Complex<C>> A)
Winding number of complex function A on rectangle.-
Methods inherited from class edu.jas.root.ComplexRootsAbstract
approximateRoot, approximateRoots, complexMagnitude, complexRectangleMagnitude, complexRootRefinement, complexRoots, complexRoots, copyOfComplex, invariantMagnitudeRectangle, magnitudeBound, rootBound, toDecimal
-
-
-
-
Constructor Detail
-
ComplexRootsSturm
public ComplexRootsSturm(RingFactory<Complex<C>> cf)
Constructor.- Parameters:
cf
- coefficient factory.
-
-
Method Detail
-
indexOfCauchy
public long indexOfCauchy(C a, C b, GenPolynomial<C> f, GenPolynomial<C> g)
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
public long[] indexOfRouth(C a, C b, GenPolynomial<C> f, GenPolynomial<C> g)
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
public java.util.List<GenPolynomial<C>> sturmSequence(GenPolynomial<C> f, GenPolynomial<C> g)
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:
complexRootCount
in interfaceComplexRoots<C extends RingElem<C> & Rational>
- Specified by:
complexRootCount
in 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 java.util.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:
complexRoots
in interfaceComplexRoots<C extends RingElem<C> & Rational>
- Specified by:
complexRoots
in 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:
invariantRectangle
in 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
-
-