# FindRoot fails 100 iteration precision

I am attempting to find roots of a complex equation that involves exponential functions and small approximation values. I have had success using FindRoot for values that are simple and positive, but Mathematica does not like it when the values I enter are negative and rather small:

FindRoot[(Exp[2 h] - 1 - 2 h)/(5 h^2) == 0.002, {h, -200}]
(* {h -> -199.499} *)

FindRoot[(Exp[2 h] - 1 - 2 h)/(5 h^2) == (-0.0001), {h, 480}]
(* FindRoot::cvmit: Failed to converge to the
requested accuracy or precision within 100 iterations. *)


I am unsure whether I should just change my input values or use another method of determining a good number. If I use any small number or negative value, it will fail to produce an answer and give me a FindRoot::lstol error.

• What makes you think there are any values of h for which the expression is negative? – Carl Woll Jun 7 '18 at 2:13
• To make it a bit more exlicit: The function Exp[2 h] is convex and you subtract its tangent a h = 0 and divide by a nonnegative term. Thus, you function is 0 at h=0 and positive everywhere else. So, your second equation has no solution, so Mathematica can try as hard as she can; she will inevitably fail. – Henrik Schumacher Jun 7 '18 at 8:31
• I'm voting to close this question as off-topic because the issue arose from trying to solve an unsolvable equation. – Henrik Schumacher Jun 7 '18 at 8:33

Reduce[(Exp[2 h] - 1 - 2 h)/(5 h^2) < 0, h]

As you can see, there is no way your function will ever be negative. Therefore, it is no error in FindRoot but in your assumptions.