MATLAB Examples

# Convergence rates for interpolating functions

Alex Townsend, October 2010

## Contents

(Chebfun example approx/Convergence.m)

The smoother a function, the faster its approximants converge. Usually numerical examples only consider functions which are k times differentiable for some integer k. Here we look at some different examples when using polynomial interpolants at the Chebyshev points of the second kind called Chebyshev interpolants.

## Fractional Example

First we consider the function abs(x)^pi

LW = 'LineWidth';FS = 'FontSize'; MS = 'MarkerSize'; x=chebfun('x'); nn=2*round(2.^(0:7)); ee=0*nn; f=abs(x).^pi; for j=1:length(nn) fn=chebfun(f,nn(j)); ee(j)=norm(f-fn,inf); end loglog(nn,nn.^-pi,'r'); hold on; loglog(nn,ee,'.',MS,16); hold off; xlabel('No. of interpolation points'); ylabel('Max Error'); text(10,1e-4,'n^{-\pi}',FS,12); title('Convergence for fractional differentiable function',FS,16); 

Thus here the fractional differentiability of a function seems important in explaining the convergence rate.

## A Trigonometric Example

Next we replace the function abs(x)^pi by the function sin(abs(x)^5.5)

f=sin(abs(x).^5.5); for j=1:length(nn) fn=chebfun(f,nn(j)); ee(j)=norm(f-fn,inf); end loglog(nn,nn.^-5.5,'r'); hold on; loglog(nn,ee,'.',MS,16); xlabel('No. of interpolation points'); ylabel('Max Error'); text(10,1e-7,'n^{-5.5}',FS,12); title('Convergence for a trigonometric function',FS,16); hold off; 

Once again fractional differentiability is important for the convergence rate.

## A Discontinuous Function and the Gibbs Phenomenon

There can be no convergence in the maximum norm to a discontinuous function by polynomials, and indeed there is always an overshoot near any discontinuity. This effect is the well-known Gibbs Phenomenon. However, Chebfun can split up the interval at the jump to still approximate to machine precision. Here we consider the standard step function.

f=sign(x); % Chebfun automatically uses splitting plot(f); hold on; C=eye(3); % colour matrix for j=1:3 fn=chebfun(f,2^(2*j)); plot(fn,'Color',C(:,j)); hold on; end legend('64 points','16 points','4 points','Location','NorthWest'); title('Chebyshev interpolants of the step function',FS,16); 

However, without splitting there is always a large error near the discontinuity.

g=chebfun(@sign,1e4,'splitting','off'); % interpolating at 10000 points error = abs(1-g(1e-3)) 
error = 0.082100854630105 

Here we sampled at the arbitrary point 1e-3, chosen near the discontinuity to witness the error caused by the overshoot of the Chebyshev interpolant.

## Reference

L. N. Trefethen, Approximation Theory and Approximation Practice, draft book available at http://www.maths.ox.ac.uk/chebfun/ATAP/.