Next: Initializing the Solver, Previous: Root Finding Overview, Up: One dimensional Root-Finding [Index]

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
*f(x) = (x-x_0)^2* or
*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 a 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 *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 can fail, 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.