LAB - Fourier Series
LAB - Fourier Series
below.
Fourier Series
The Fourier series of a periodic function is given by
and
You can use the following commands to calculate the nth partial sum of the Fourier
series of the expression f on the interval [-L,L]
syms x k L n
For example, To calculate the Fourier series of f(x) = |x| on the interval [-1,1].
f = abs(x)
f =
abs(x)
We can also have MATLAB calculate the general Fourier coefficients. To do this and
get MATLAB to simplify the results, we can use simple (Note: Some Matlab versions
don’t have simple commands, so you can also try simplify). The following command
gives the kth Fourier cosine coefficient, suppressing the results of all of the steps
of simple except for the simplest.
[A,how]=simple(a(f,x,k,1))
A =
-(4*sin((pi*k)/2)^2)/(pi^2*k^2)
how =
simplify
If you don't want to see how simple found the answer, you can suppress the output,
then just display the simplified answer. The following command does that for the kth
Fourier sine coefficient.
[B,how]=simple(b(f,x,k,1)); B
B =
0
Here are the plots of the partial sums for n=2, 5, 10. The plot also shows the function
f.
ezplot(fs(f,x,2,1),-1,1)
hold on
ezplot(f,-1,1)
hold off
title('Partial sum with n=2')
ezplot(fs(f,x,5,1),-1,1)
hold on
ezplot(f,-1,1)
hold off
title('Partial sum with n=5')
ezplot(fs(f,x,10,1),-1,1)
hold on
ezplot(f,-1,1)
hold off
title('Partial sum with n=10')
f =
A =
B =
-(2*(-1)^k)/(pi*k)
ezplot(fs(f,x,5,1),-1,1)
hold on
ezplot(f,-1,1)
hold off
title('Partial sum with n=5')
ezplot(fs(f,x,10,1),-1,1)
hold on
ezplot(f,-1,1)
hold off
title('Partial sum with n=10')
ezplot(fs(f,x,20,1),-1,1)
hold on
ezplot(f,-1,1)
hold off
title('Partial sum with n=20')
ezplot(fs(f,x,50,1),-1,1)
hold on
ezplot(f,-1,1)
hold off
title('Partial sum with n=50')
If you zoom in here, you notice that the graph of the partial sum of the Fourier series
looks very jagged. That is because ezplot does not plot enough points compared to the
number of oscillations in the functions in the partial sum. We can fix this problem
using plot. This also allows us to use different colors for the plot of the original
function and the plot of the partial sum. To use plot, we need to turn the partial sum
into an inline vectorized function and specify the points where it will be evaluated.
g = inline(vectorize(fs(f,x,50,1)));
X = -1:.001:1;
plot(X,g(X),'r')
hold on
ezplot(f,-1,1)
hold off
title('Partial sum with n=50')
g = inline(vectorize(fs(f,x,100,1)));
X = -1:.0001:1;
plot(X,g(X),'r')
hold on
ezplot(f,-1,1)
hold off
title('Partial sum with n=100')
Notice that no matter how many terms we take, the partial sum always overshoots the
function x at the end points of the interval. If we do our two plots on the interval [-2,2],
we see that outside [-1,1], the partial sum doesn't have much to do with the function.
ezplot(fs(f,x,20,1),-2,2)
hold on
ezplot(f,-2,2)
hold off
A Fourier series on [-L,L] is 2L periodic, and so are all its partial sums. So, what we are
really doing when we compute the Fourier series of a function f on the interval [-L,L] is
computing the Fourier series of the 2L periodic extension of f. To do that in MATLAB,
we have to make use of the unit step function u(x), which is 0 if and 1 if . It is
known as the Heaviside function, and the MATLAB command for it is heaviside. In
MATLAB, heaviside(0)=1/2. The function h(x) = u(x-a)u(b-x) is 1 on the interval [a,b]
and 0 outside the interval.
f = heaviside(x+3)*heaviside(-1-x)*(x+2) + heaviside(x+1)*heaviside(1-x)*x
...
+ heaviside(x-1)*heaviside(3-x)*(x-2);
extends f(x) = x to be periodic on [-3,3], with period 2. To check that we've extended
it correctly, we plot it.
ezplot(f,-3,3)
title('Periodic extension of x')
The overshoots are at the discontinuities of the 2 periodic extension of f. This is called
the Gibbs Phenomenon.
Example (Square Wave): Consider the following square wave
function defined by the relation
1 , 0 x 0.5
f ( x)
1 , 0.5 x 1
f(x)
1.0
x
0.5 1.0
-1.0
bn 21 / 2 f ( x) sin 2nxdx 21 / 2 (1) sin 2nxdx 20 (1) sin 2nxdx
1/ 2 0 1/ 2 2
1 (1) n
n
and thus the series representation reduces to
4
f ( x) n sin 2nx
n 1, 3, 5 ,...
The evaluation of this series can easily be done using MATLAB and a code is given
in the text box below. This code loops and evaluates the partial sums of the series
and plots them until an error criteria is satisfied. A couple of the plots are shown
below
Square Wave FS Partial Sum: n = 5 Error = 0.067914 Square Wave FS Partial Sum: n = 21 Error = 0.019523
1.5 1.5
1 1
0.5 0.5
0 0
-0.5 -0.5
-1 -1
-1.5 -1.5
0 0.5 1 1.5 0 0.5 1 1.5