Package edu.jas.root
Class RealRootsAbstract<C extends RingElem<C> & Rational>
- java.lang.Object
-
- edu.jas.root.RealRootsAbstract<C>
-
- Type Parameters:
C- coefficient type.
- All Implemented Interfaces:
RealRoots<C>,java.io.Serializable
- Direct Known Subclasses:
RealRootsSturm
public abstract class RealRootsAbstract<C extends RingElem<C> & Rational> extends java.lang.Object implements RealRoots<C>
Real roots abstract class.- Author:
- Heinz Kredel
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description RealRootsAbstract()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description BigDecimalapproximateRoot(Interval<C> iv, GenPolynomial<C> f, BigRational eps)Approximate real root.java.util.List<BigDecimal>approximateRoots(GenPolynomial<C> f, BigRational eps)Approximate real roots.CbisectionPoint(Interval<C> iv, GenPolynomial<C> f)Bi-section point.java.util.List<GenPolynomial<C>>fourierSequence(GenPolynomial<C> f)Fourier sequence.Interval<C>halfInterval(Interval<C> iv, GenPolynomial<C> f)Half interval.Interval<C>invariantMagnitudeInterval(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g, BigRational eps)Invariant interval for algebraic number magnitude.abstract Interval<C>invariantSignInterval(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g)Invariant interval for algebraic number sign.booleanisApproximateRoot(BigDecimal x, GenPolynomial<C> f, C eps)Test if x is an approximate real root.booleanisApproximateRoot(BigDecimal x, GenPolynomial<BigDecimal> f, GenPolynomial<BigDecimal> fp, BigDecimal eps)Test if x is an approximate real root.booleanisApproximateRoot(java.util.List<BigDecimal> R, GenPolynomial<C> f, BigRational eps)Test if each x in R is an approximate real root.CmagnitudeBound(Interval<C> iv, GenPolynomial<C> f)Magnitude bound.CrealIntervalMagnitude(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g)Real algebraic number magnitude.Interval<C>realIntervalMagnitudeInterval(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g)Real algebraic number magnitude.intrealIntervalSign(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g)Real algebraic number sign.CrealMagnitude(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g, BigRational eps)Real algebraic number magnitude.CrealMinimalRootBound(GenPolynomial<C> f)Real minimal root bound.CrealMinimalRootSeparation(GenPolynomial<C> f)Real minimal root separation.CrealRootBound(GenPolynomial<C> f)Real root bound.abstract longrealRootCount(Interval<C> iv, GenPolynomial<C> f)Number of real roots in interval.java.lang.LongrealRootNumber(GenPolynomial<C> f, Interval<C> v)Root number.abstract java.util.List<Interval<C>>realRoots(GenPolynomial<C> f)Isolating intervals for the real roots.java.util.List<Interval<C>>realRoots(GenPolynomial<C> f, C eps)Isolating intervals for the real roots.java.util.List<Interval<C>>realRoots(GenPolynomial<C> f, BigRational eps)Isolating intervals for the real roots.intrealSign(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g)Real algebraic number sign.Interval<C>refineInterval(Interval<C> iv, GenPolynomial<C> f, BigRational eps)Refine interval.java.util.List<Interval<C>>refineIntervals(java.util.List<Interval<C>> V, GenPolynomial<C> f, BigRational eps)Refine intervals.booleansignChange(Interval<C> iv, GenPolynomial<C> f)Sign changes on interval bounds.java.util.List<java.lang.Integer>signSequence(GenPolynomial<C> f, Interval<C> v)Thom sign sequence.
-
-
-
Constructor Detail
-
RealRootsAbstract
public RealRootsAbstract()
-
-
Method Detail
-
realRootBound
public C realRootBound(GenPolynomial<C> f)
Real root bound. With f(-M) * f(M) != 0.
-
magnitudeBound
public C magnitudeBound(Interval<C> iv, GenPolynomial<C> f)
Magnitude bound.- Parameters:
iv- interval.f- univariate polynomial.- Returns:
- B such that |f(c)| < B for c in iv.
-
realMinimalRootBound
public C realMinimalRootBound(GenPolynomial<C> f)
Real minimal root bound.- Parameters:
f- univariate polynomial.- Returns:
- M such that abs(xi) > M for f(xi) == 0.
-
realMinimalRootSeparation
public C realMinimalRootSeparation(GenPolynomial<C> f)
Real minimal root separation.- Parameters:
f- univariate polynomial.- Returns:
- M such that abs(xi-xj) > M for roots xi, xj of f.
-
bisectionPoint
public C bisectionPoint(Interval<C> iv, GenPolynomial<C> f)
Bi-section point.- Parameters:
iv- interval with f(left) * f(right) != 0.f- univariate polynomial, non-zero.- Returns:
- a point c in the interval iv such that f(c) != 0.
-
realRoots
public abstract java.util.List<Interval<C>> realRoots(GenPolynomial<C> f)
Isolating intervals for the real roots.
-
realRoots
public java.util.List<Interval<C>> realRoots(GenPolynomial<C> f, C eps)
Isolating intervals for the real roots.
-
realRoots
public java.util.List<Interval<C>> realRoots(GenPolynomial<C> f, BigRational eps)
Isolating intervals for the real roots.
-
signChange
public boolean signChange(Interval<C> iv, GenPolynomial<C> f)
Sign changes on interval bounds.
-
realRootCount
public abstract long realRootCount(Interval<C> iv, GenPolynomial<C> f)
Number of real roots in interval.
-
halfInterval
public Interval<C> halfInterval(Interval<C> iv, GenPolynomial<C> f)
Half interval.- Parameters:
iv- root isolating interval with f(left) * f(right) < 0.f- univariate polynomial, non-zero.- Returns:
- a new interval v such that |v| < |iv|/2.
-
refineInterval
public Interval<C> refineInterval(Interval<C> iv, GenPolynomial<C> f, BigRational eps)
Refine interval.
-
refineIntervals
public java.util.List<Interval<C>> refineIntervals(java.util.List<Interval<C>> V, GenPolynomial<C> f, BigRational eps)
Refine intervals.
-
invariantSignInterval
public abstract Interval<C> invariantSignInterval(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g)
Invariant interval for algebraic number sign.- Parameters:
iv- root isolating interval for f, with f(left) * f(right) < 0.f- univariate polynomial, non-zero.g- univariate polynomial, gcd(f,g) == 1.- Returns:
- v with v a new interval contained in iv such that g(v) != 0.
-
realIntervalSign
public int realIntervalSign(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g)
Real algebraic number sign.- Parameters:
iv- root isolating interval for f, with f(left) * f(right) < 0, with iv such that g(iv) != 0.f- univariate polynomial, non-zero.g- univariate polynomial, gcd(f,g) == 1.- Returns:
- sign(g(iv)) .
-
realSign
public int realSign(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g)
Real algebraic number sign.- Specified by:
realSignin interfaceRealRoots<C extends RingElem<C> & Rational>- Parameters:
iv- root isolating interval for f, with f(left) * f(right) < 0.f- univariate polynomial, non-zero.g- univariate polynomial, gcd(f,g) == 1.- Returns:
- sign(g(v)), with v a new interval contained in iv such that g(v) != 0.
-
invariantMagnitudeInterval
public Interval<C> invariantMagnitudeInterval(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g, BigRational eps)
Invariant interval for algebraic number magnitude.- Parameters:
iv- root isolating interval for f, with f(left) * f(right) < 0.f- univariate polynomial, non-zero.g- univariate polynomial, gcd(f,g) == 1.eps- length limit for interval length.- Returns:
- v with v a new interval contained in iv such that |g(a) - g(b)| < eps for a, b in v in iv.
-
realIntervalMagnitude
public C realIntervalMagnitude(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g)
Real algebraic number magnitude.- Parameters:
iv- root isolating interval for f, with f(left) * f(right) < 0, with iv such that |g(a) - g(b)| < eps for a, b in iv.f- univariate polynomial, non-zero.g- univariate polynomial, gcd(f,g) == 1.- Returns:
- g(iv) .
-
realMagnitude
public C realMagnitude(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g, BigRational eps)
Real algebraic number magnitude.
-
realIntervalMagnitudeInterval
public Interval<C> realIntervalMagnitudeInterval(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g)
Real algebraic number magnitude.- Parameters:
iv- root isolating interval for f, with f(left) * f(right) < 0, with iv such that |g(a) - g(b)| < eps for a, b in iv.f- univariate polynomial, non-zero.g- univariate polynomial, gcd(f,g) == 1.- Returns:
- Interval( g(iv.left), g(iv.right) ) .
-
approximateRoot
public BigDecimal approximateRoot(Interval<C> iv, GenPolynomial<C> f, BigRational eps) throws NoConvergenceException
Approximate real root.- Parameters:
iv- real root isolating interval with f(left) * f(right) < 0.f- univariate polynomial, non-zero.eps- requested interval length.- Returns:
- a decimal approximation d such that |d-v| < eps, for f(v) = 0, v real.
- Throws:
NoConvergenceException
-
approximateRoots
public java.util.List<BigDecimal> approximateRoots(GenPolynomial<C> f, BigRational eps)
Approximate real roots.- Parameters:
f- univariate polynomial, non-zero.eps- requested interval length.- Returns:
- a list of decimal approximations d such that |d-v| < eps for all real v with f(v) = 0.
-
isApproximateRoot
public boolean isApproximateRoot(BigDecimal x, GenPolynomial<C> f, C eps)
Test if x is an approximate real root.- Parameters:
x- approximate real root.f- univariate polynomial, non-zero.eps- requested interval length.- Returns:
- true if x is a decimal approximation of a real v with f(v) = 0 with |d-v| < eps, else false.
-
isApproximateRoot
public boolean isApproximateRoot(BigDecimal x, GenPolynomial<BigDecimal> f, GenPolynomial<BigDecimal> fp, BigDecimal eps)
Test if x is an approximate real root.- Parameters:
x- approximate real root.f- univariate polynomial, non-zero.fp- univariate polynomial, non-zero, deriviative of f.eps- requested interval length.- Returns:
- true if x is a decimal approximation of a real v with f(v) = 0 with |d-v| < eps, else false.
-
isApproximateRoot
public boolean isApproximateRoot(java.util.List<BigDecimal> R, GenPolynomial<C> f, BigRational eps)
Test if each x in R is an approximate real root.- Parameters:
R- ist of approximate real roots.f- univariate polynomial, non-zero.eps- requested interval length.- Returns:
- true if each x in R is a decimal approximation of a real v with f(v) = 0 with |d-v| < eps, else false.
-
fourierSequence
public java.util.List<GenPolynomial<C>> fourierSequence(GenPolynomial<C> f)
Fourier sequence.- Parameters:
f- univariate polynomial.- Returns:
- (f, f', ..., f(n)) a Fourier sequence for f.
-
signSequence
public java.util.List<java.lang.Integer> signSequence(GenPolynomial<C> f, Interval<C> v)
Thom sign sequence.- Parameters:
f- univariate polynomial.v- interval for a real root, f(v.left) * f(v.right) < 0.- Returns:
- (s1, s2, ..., sn) = (sign(f'(v)), .... sign(f(n)(v))) a Thom sign sequence for the real root in v of f.
-
realRootNumber
public java.lang.Long realRootNumber(GenPolynomial<C> f, Interval<C> v)
Root number.- Parameters:
f- univariate polynomial.v- interval for a real root, f(v.left) * f(v.right) < 0.- Returns:
- r the number of this root in the sequence a1 < a2 < ..., < am of all real roots of f
-
-