Note that root finding functions can only search for one root at a time.
When there are several roots in the search area, the first root to be
found will be returned; however it is difficult to predict which of the
roots this will be. *In most cases, no error will be reported if
you try to find a root in an area where there is more than one.*

Care must be taken when a function may have a multiple root (such as
@math{f(x) = (x-x_0)^2} or
@math{f(x) = (x-x_0)^3}).
It is not possible to use root-bracketing algorithms on
even-multiplicity roots. For these algorithms the initial interval must
contain a zero-crossing, where the function is negative at one end of
the interval and positive at the other end. Roots with even-multiplicity
do not cross zero, but only touch it instantaneously. Algorithms based
on root bracketing will still work for odd-multiplicity roots
(e.g. cubic, quintic, ...).
Root polishing algorithms generally work with higher multiplicity roots,
but at reduced rate of convergence. In these cases the **Steffenson
algorithm** can be used to accelerate the convergence of multiple roots.

While it is not absolutely required that @math{f} have a root within the
search region, numerical root finding functions should not be used
haphazardly to check for the *existence* of roots. There are better
ways to do this. Because it is easy to create situations where numerical
root finders go awry, it is a bad idea to throw a root finder at a
function you do not know much about. In general it is best to examine
the function visually by plotting before searching for a root.

Go to the first, previous, next, last section, table of contents.