Sorry for waiting...
Hello there. Honestly, I found out that this is not as simple as it is. solving this analytically may be difficult. if you know calculus, it will be easy if you are going to use Newton's method (which I haven't encountered yet in my university). If you are not familiar with calculus, then you will need to use some
root-finding method such as the Bisection Method, the Secant Method,
or the False Position Method. I believe that "krab" has the point. =)
First of all, when you say "linear interpolation" for finding roots, there are actually two methods that use linear interpolation: "False Position" (or, in the Latin wording, "Regula Falsi"), and the Secant Method. False Position always brackets the root. That is, at each stage, the method produces two numbers a_n and b_n, so that the root r is between them: a_n < r < b_n. At the next stage, it replaces one of the numbers a_n and b_n with a new value and leaves the other value unchanged, and the new values a_(n+1) and b_(n+1) still bracket the root. The Secant Method produces a sequence of numbers that do not necessarily bracket the root.
Your first criterion might be more useful for the False Position
method, but you are correct that for certain functions, it will tend
to be only one endpoint that moves, and the method will converge very
slowly, by that criterion. The second and third criteria would be more appropriate for the Secant Method, but again, there are functions for which the second criterion will produce very slow convergence.
The third criterion can be useful, but it depends upon whether you are primarily interested in a value that makes the function small, or
whether you really need the correct value of the (exact) zero. If the
root is a multiple one, so that the function is roughly quadratic or
cubic in (x-r), where r is the exact root, then the function will be
very flat near the root. For example, x might be .01 units from r, but f(x)~10^(-6), so relatively poor approximations of the root r will produce very small function values.
The best one to use depends upon what you are trying to find: a good approximation to the root, or just a value x which produces a small f(x).
Well, that's it. Sorry, I thought it's an easy one... I lately realized that this involves numerical analysis, which I'm going to take up 2 years from now.