up previous next
RealRoots

computes the real roots of a univariate polynomial

Syntax
RealRoots(F:POLY):LIST
RealRoots(F:POLY, Precision:RAT):LIST
RealRoots(F:POLY, Precision:RAT, Interval:[RAT, RAT]):LIST

Description
This function computes isolating intervals for the real roots of a univariate polyomial over QQ. It returns the list of the real roots, where a root is represented as a record containing either the exact root (if the fields Inf and Sup are equal), or an open interval (Inf, Sup) containing the root. A third field (called CoeffList) has an obscure meaning.

An optional second argument specifies the maximum width an isolating interval may have. An optional third argument specifies a closed interval in which to search for roots.

The interval represented by a root record may be refined by using the function RealRootRefine . The function RealRootsApprox may be more useful to you: it produces rational approximations to the real roots (but these cannot later be refined).

Example
/**/  RealRoots(x^2-2);
[Record[CoeffList := [-1, 0, 2], Inf := -4, Sup := 0], Record[CoeffList := [1, 0, -2], Inf := 0, Sup := 4]]

/**/  RR := RealRoots((x^2-2)*(x-1), 10^(-5));
/**/  FloatStr(RR[1].Inf);  -- left end of interval
-1.414213562*10^0

/**/  FloatStr(RR[1].Sup);  -- right end of interval
-1.414213561*10^0

/**/  RR := RealRoots(x^2-2, 10^(-20), [0, 2]);
/**/  RR[1].Inf;                               -- incomprehensible
60153992292001127886258443119406264231/42535295865117307932921825928971026432

/**/  FloatStr(RR[1].Inf, 20);                 -- comprehensible
1.4142135623730950488*10^0

See Also