/*
* $Id$
*/
package edu.jas.root;
import java.io.Serializable;
import java.util.List;
import edu.jas.arith.Rational;
import edu.jas.arith.BigRational;
import edu.jas.poly.GenPolynomial;
import edu.jas.structure.RingElem;
import edu.jas.structure.GcdRingElem;
/**
* Real roots interface.
* @param coefficient type.
* @author Heinz Kredel
*/
public interface RealRoots & Rational> extends Serializable {
/**
* Real root bound. With f(M) * f(-M) != 0.
* @param f univariate polynomial.
* @return M such that -M < root(f) > M.
*/
public C realRootBound(GenPolynomial f);
/**
* Isolating intervals for the real roots.
* @param f univariate polynomial.
* @return a list of isolating intervalls for the real roots of f.
*/
public List> realRoots(GenPolynomial f);
/**
* Isolating intervals for the real roots.
* @param f univariate polynomial.
* @param eps requested intervals length.
* @return a list of isolating intervals v such that |v| < eps.
*/
public List> realRoots(GenPolynomial f, C eps);
/**
* Isolating intervals for the real roots.
* @param f univariate polynomial.
* @param eps requested intervals length.
* @return a list of isolating intervals v such that |v| < eps.
*/
public List> realRoots(GenPolynomial f, BigRational eps);
/**
* Sign changes on interval bounds.
* @param iv root isolating interval with f(left) * f(right) != 0.
* @param f univariate polynomial.
* @return true if f(left) * f(right) < 0, else false
*/
public boolean signChange(Interval iv, GenPolynomial f);
/**
* Number of real roots in interval.
* @param iv interval with f(left) * f(right) != 0.
* @param f univariate polynomial.
* @return number of real roots of f in I.
*/
public long realRootCount(Interval iv, GenPolynomial f);
/**
* Refine interval.
* @param iv root isolating interval with f(left) * f(right) < 0.
* @param f univariate polynomial, non-zero.
* @param eps requested interval length.
* @return a new interval v such that |v| < eps.
*/
public Interval refineInterval(Interval iv, GenPolynomial f, C eps);
/**
* Refine intervals.
* @param V list of isolating intervals with f(left) * f(right) < 0.
* @param f univariate polynomial, non-zero.
* @param eps requested intervals length.
* @return a list of new intervals v such that |v| < eps.
*/
public List> refineIntervals(List> V, GenPolynomial f, C eps);
/**
* Real algebraic number sign.
* @param iv root isolating interval for f, with f(left) * f(right) < 0.
* @param f univariate polynomial, non-zero.
* @param g univariate polynomial, gcd(f,g) == 1.
* @return sign(g(v)), with v a new interval contained in iv such that g(v) !=
* 0.
*/
public int realSign(Interval iv, GenPolynomial f, GenPolynomial g);
/**
* Real algebraic number magnitude.
* @param iv root isolating interval for f, with f(left) * f(right) < 0.
* @param f univariate polynomial, non-zero.
* @param g univariate polynomial, gcd(f,g) == 1.
* @param eps length limit for interval length.
* @return g(iv).
*/
public C realMagnitude(Interval iv, GenPolynomial f, GenPolynomial g, C eps);
}
Ads help maintain this website.