I would like to find the smallest real root of a 1-D real-valued function $f(x)$ on the domain $x\in [0,\infty)$. In this problem, I can make the following guarantees on $f$:
- $f$ does have a root at some finite, positive $x$.
- $f$ is differentiable at all finite, positive $x$ and $f'(x)$ is either known or can be approximated accurately.
- $f$ may have multiple roots (and usually does).
- At its smallest root, $f$ changes sign from positive to negative.
Further, I can estimate
- an approximate lower bound on the spacing between roots, call it $\Delta$.
- an upper bound on the location of the smallest root, call it $x_{\max}$. If the root is beyond this point, I can compute its approximate location analytically.
My current algorithm for this problem is to bracket the root via a naive linear search. Starting from $x=0$, I march along in increments of $\Delta$ until $f(x)$ and $f(x+\Delta)$ differ in sign. With the root bracketed, I defer to a standard root-finding algorithm.
With the knowledge I have of $f$ and the estimates I am willing to make about its root structure, can I bracket the smallest root more quickly than a simple linear search?