In this example, we compute a few integrals over closed contours in the complex plane using periodic chebfuns.
Consider a smooth and closed contour $\Gamma$ in the complex plane and let us say we want to compute $$ \int_{\Gamma} f(z) dz. $$ If we parametrize $\Gamma$ using a real varaible, say $t$ , then since the contour is closed, the intgrand becomes periodic in $t$ and we get $$ \int_{\Gamma} f(z) dz = \int_{a}^{b} f(z(t)) z'(t) dt. $$
All this can be done very efficiently in Chebfun, thanks to the Fourier technology which has been integrated with Chebfun's longstanding Chebyshev technology.
Here is a simple example. Consider the function:
ff = @(z) (1-2*z)/(z*(z-1)*(z-3));
Suppose we want to integrate this function on a circle of radius $2$. To do this in Chebfun's periodic mode, we first parametrize the circle:
z = chebfun(@(t) 2*exp(2*pi*1i*t), [0, 1], 'trig');
The integrand is then constructed by a simple composition:
f = ff(z) plot(f), axis equal
f = chebfun column (1 smooth piece) interval length endpoint values trig [ 0, 1] 177 complex values vertical scale = 1.5
This is how the real and imaginary parts of the integrand look on the contour:
subplot(1, 2, 1) plot(real(f)) title('real part') subplot(1, 2, 2) plot(imag(f)) title('imaginary part')
To compute the integral, we recall that
$$ \int_{|z|=2} f(z) dz = \int_{0}^{1} f(z(t)) z'(t) dt. $$
We therefore first compute $z'(t)$:
dz = diff(z);
Computing the integral now could not be easier:
s = sum(f.*dz)
s = 0.000000000000001 + 5.235987755982992i
The true answer is $5 \pi i/3$, and we see that Chebfun has done a very good job:
norm(s - 5/3*pi*1i)
ans = 3.652628968987449e-15
Here is another example. Consider the sinc function
ff = @(z) sin(5*z)/(5*z);
This analytic function has a removable singularity at the origin. Therefore, the integral of the function on any closed contour should be zero according to Cauchy's theorem.
z = chebfun(@(t) exp(2*pi*1i*t), [0, 1], 'trig'); f = ff(z); dz = diff(z);
Here is a plot of the function:
clf plot(f), axis equal
And here is the integral, which is numerically zero:
s = sum(f.*dz)
s = -4.874950607834530e-16 + 1.776356839400250e-14i
As our final example, we pick a function with an essential singularity at the origin and compute its integral on the unit circle.
ff = @(z) exp(1/z)*sin(1/z); z = chebfun(@(t) exp(2*pi*1i*t), [0, 1], 'trig'); f = ff(z); dz = diff(z); s = sum(f.*dz)
s = -0.000000000000000 + 6.283185307179584i
The result nicely matches $2\pi i$:
exact = 2i*pi
exact = 0.000000000000000 + 6.283185307179586i