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>
,Serializable
- Direct Known Subclasses:
RealRootsSturm
public abstract class RealRootsAbstract<C extends RingElem<C> & Rational>
extends Object
implements RealRoots<C>
Real roots abstract class.
- See Also:
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionapproximateRoot
(Interval<C> iv, GenPolynomial<C> f, BigRational eps) Approximate real root.approximateRoots
(GenPolynomial<C> f, BigRational eps) Approximate real roots.bisectionPoint
(Interval<C> iv, GenPolynomial<C> f) Bi-section point.Fourier sequence.halfInterval
(Interval<C> iv, GenPolynomial<C> f) Half interval.invariantMagnitudeInterval
(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g, BigRational eps) Invariant interval for algebraic number magnitude.invariantSignInterval
(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g) Invariant interval for algebraic number sign.boolean
isApproximateRoot
(BigDecimal x, GenPolynomial<C> f, C eps) Test if x is an approximate real root.boolean
isApproximateRoot
(BigDecimal x, GenPolynomial<BigDecimal> f, GenPolynomial<BigDecimal> fp, BigDecimal eps) Test if x is an approximate real root.boolean
isApproximateRoot
(List<BigDecimal> R, GenPolynomial<C> f, BigRational eps) Test if each x in R is an approximate real root.magnitudeBound
(Interval<C> iv, GenPolynomial<C> f) Magnitude bound.realIntervalMagnitude
(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g) Real algebraic number magnitude.realIntervalMagnitudeInterval
(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g) Real algebraic number magnitude.int
realIntervalSign
(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g) Real algebraic number sign.realMagnitude
(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g, BigRational eps) Real algebraic number magnitude.Real minimal root bound.Real minimal root separation.Real root bound.abstract long
realRootCount
(Interval<C> iv, GenPolynomial<C> f) Number of real roots in interval.realRootNumber
(GenPolynomial<C> f, Interval<C> v) Root number.realRoots
(GenPolynomial<C> f) Isolating intervals for the real roots.realRoots
(GenPolynomial<C> f, C eps) Isolating intervals for the real roots.realRoots
(GenPolynomial<C> f, BigRational eps) Isolating intervals for the real roots.int
realSign
(Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g) Real algebraic number sign.refineInterval
(Interval<C> iv, GenPolynomial<C> f, BigRational eps) Refine interval.refineIntervals
(List<Interval<C>> V, GenPolynomial<C> f, BigRational eps) Refine intervals.boolean
signChange
(Interval<C> iv, GenPolynomial<C> f) Sign changes on interval bounds.signSequence
(GenPolynomial<C> f, Interval<C> v) Thom sign sequence.
-
Field Details
-
logger
private static final org.apache.logging.log4j.Logger logger
-
-
Constructor Details
-
RealRootsAbstract
public RealRootsAbstract()
-
-
Method Details
-
realRootBound
Real root bound. With f(-M) * f(M) != 0. -
magnitudeBound
Magnitude bound.- Parameters:
iv
- interval.f
- univariate polynomial.- Returns:
- B such that |f(c)| < B for c in iv.
-
realMinimalRootBound
Real minimal root bound.- Parameters:
f
- univariate polynomial.- Returns:
- M such that abs(xi) > M for f(xi) == 0.
-
realMinimalRootSeparation
Real minimal root separation.- Parameters:
f
- univariate polynomial.- Returns:
- M such that abs(xi-xj) > M for roots xi, xj of f.
-
bisectionPoint
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
Isolating intervals for the real roots. -
realRoots
Isolating intervals for the real roots. -
realRoots
Isolating intervals for the real roots. -
signChange
Sign changes on interval bounds. -
realRootCount
Number of real roots in interval. -
halfInterval
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
Refine interval. -
refineIntervals
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
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
Real algebraic number sign.- Specified by:
realSign
in 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
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
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
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
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, derivative 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
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
Fourier sequence.- Parameters:
f
- univariate polynomial.- Returns:
- (f, f', ..., f(n)) a Fourier sequence for f.
-
signSequence
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
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
-