LIMEST will find the limit of a general function (specified only for evaluation) at a given point. You might think of limest like quad, but for limits.
While to me this seems to appear more often as a homework exercise than anything else, it was an interesting problem to solve as robustly as possible for a general case.
As an example, I'll use a moderately difficult one that is simple to analyze, but more difficult to deal with numerically.
fun = @(x) (exp(x)-1-x)./x.^2;
This function cannot be evaluated in MATLAB at x = 0, returning a NaN. While a Taylor series expansion shows the limit to be 1/2, the brute force evaluation of fun anywhere near zero results in numerical trash because of the two orders of cancellation.
fun(0)
ans =
NaN
fun(1e-15)
ans =
110223024625156
fun(1e-10)
ans =
827.403709626582
fun(1e-5)
ans =
0.500000696482408
fun(1e-2)
ans =
0.501670841679489
Limest computes the limit, also returning an approximate error estimate.
[lim,err] = limest(fun,0)
lim =
0.499999999681485
err =
2.20308196660258e-09
See the demo for many other examples of use. |