Function:
allsolve - find list of floating-point approximations to all roots of an equation or expression on a real interval.
Calling sequence:
allsolve( expr, x = a .. b);
Parameters:
expr
- the equation or expression, involving one variable
x
- the variable (a name)
a, b
- endpoints of the interval (real constants).
Description:
-
allsolve
computes numerically all the solutions of an equation
expr
in one variable
x
in the real interval
a .. b
. If
expr
is an expression rather than an equation, the equation
expr = 0
is used. The result is returned as a list, sorted in numerical order.
-
Only one variable is allowed: the two sides of the equation must evaluate to real constants when any constant value in the interval
a .. b
is substituted for
x
.
-
The expression and all subexpressions should have at least two continuous derivatives on the interval. In particular, infinite limits at the endpoints, or indeterminate forms (such as
f/g
where
f
and
g
both approach
or
at the endpoints) may cause trouble.
-
An exception to the requirements of continuity and differentiability is in the case of an expression defined piecewise, using
piecewise
,
signum
,
Heaviside
,
abs
,
min
or
max
, as long as
convert(...,pwlist)
can convert it to a list of expressions on different intervals. If this can't be done, an error occurs.
-
Infinite endpoints are allowed, but are not likely to work unless the expression has finite limits at those endpoints.
-
Since numerical techniques are used, the accuracy of the results is limited. In particular, a root of
f(x)
that is also a root of
D(f)(x)
may be computed with poor accuracy, or even missed entirely. In such a case it may be better to use
D(f)(x)
instead of
f(x)
. Increasing
Digits
should also improve accuracy.
-
In some difficult cases
allsolve
may take a very long time. In particular, this will happen if the function is complicated or changes direction rapidly in the interval.
-
allsolve
uses
evalr
to do interval arithmetic, and is therefore subject to the weaknesses of that procedure. In particular, it doesn't work with the two-variable version of
arctan
.
-
This function is part of the
Maple Advisor Database
library.
Examples:
>
allsolve( tan(sin(x))=1, x = 0 .. 2*Pi );
>
allsolve((x-Pi)^2, x = 0 .. 4);
>
allsolve(sin(x) + x^2, x = -infinity .. infinity);
>
allsolve(abs(sin(x)+x) = 1, x = -2 .. 2);
>
allsolve(Int(sin(s),s=0..x) = 1, x = 1 .. 2);