View License

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video

Highlights from
Adaptive numerical limit (and residue) estimation

5.0 | 4 ratings Rate this file 10 Downloads (last 30 days) File Size: 50.5 KB File ID: #20058 Version: 1.1

Adaptive numerical limit (and residue) estimation


John D'Errico (view profile)


26 May 2008 (Updated )

Numerical extrapolation of a limit (with an error estimate) from only function values

| Watch this File

File Information

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.

ans =

ans =

ans =

ans =

ans =

Limest computes the limit, also returning an approximate error estimate.

[lim,err] = limest(fun,0)
lim =
err =

I've now added the residueEst tool, for computation of the residue of a function at a known pole. For example, here is a function with a first order pole at z = 0
[r,e]=residueEst(@(z) 1./(1-exp(2*z)),0)
r =
e =

Again, both an estimate of the residue, as well as an uncertainty around that estimate are provided. Next, consider a function with a second order pole around z = pi.
[r,e]=residueEst(@(z) 1./(sin(z).^2),pi,'poleorder',2)
r =
e =

See the included demos for many other examples of use.


Adaptive Robust Numerical Differentiation inspired this file.

MATLAB release MATLAB 7.4 (R2007a)
MATLAB Search Path
Other requirements Moderately older versions of Matlab should be able to use this utility with an inline function.
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (5)
31 Dec 2016 David Berger

Really great! Documentation emphasizes vectorization, which suggests that it can handle vector-valued functions. It seems like it ought to be able to, but if not, it ought to indicate that it can't.

31 Jul 2016 Alexander Stepanov

13 Mar 2015 adrian zizo

nice worke

Comment only
30 Aug 2008 C Schwalm

Well done! And useful...

04 Jun 2008 Bill McKeeman

Nice work.

29 May 2008

Improved some error messages

13 Mar 2015 1.1

Included residueEst

Contact us