Mr. Nicholson - sometimes rational approximations can do better than polynomials (not always), and you can compute them with `aaa.m`. Below are a little code and the figure it generates, illustrating how this can sometimes work. See "Numerical analytic continuation", including the section on 2D problems, at
https://people.maths.ox.ac.uk/trefethen/papers.html. Also the paper "AAA interpolation of equispaced data" (for the data don't have to be equispaced).
```
MS = 'markersize'; LW = 'linewidth';
grid = [-10:5:0 40:40:120 150];
f = chebfun('exp(-x/40)',[-10 150]);
subplot(311), plot(f,LW,1.4), hold on
data = f(grid); plot(grid,data,'.k',MS,10), hold off, grid on
title('data')
subplot(312), p = chebfun.interp1(grid,data);
plot(p,LW,1.4), hold on
plot(grid,data,'.k',MS,10), hold off, grid on
err = norm(f-p,inf);
title(['polynomial interpolant: error = ', num2str(err)])
subplot(313), r = aaa(data,grid);
pAAA = chebfun(r,[-10 150]); plot(pAAA,LW,1.4), hold on
plot(grid,data,'.k',MS,10), hold off, grid on
err = norm(f-pAAA,inf);
title(['AAA rational approximant: error = ', num2str(err)])
```