La forma compleja de las series de Fourier

Teniendo en cuenta las relaciones

e iωt =cosωtisinωt e iωt =cosωt+isinωt

El desarrollo en serie de Fourier para una función periódica de perido P

f(t)= a 0 2 + k=1 ( a k cos( k 2π P t )+ b k sin( k 2π P t ) )

se expresa de la siguiente forma alternativa

f(t)= a 0 2 + k=1 ( a k 2 ( e ik2πt/P + e ik2πt/P )+ b k 2i ( e ik2πt/P e ik2πt/P ) ) c 0 = a 0 2 c k = a k i b k 2 c k = a k +i b k 2 f(t)= c 0 + k=1 ( c k e ik2πt/P + c k e ik2πt/P ) f(t)= c k exp( ik2π t P ) c k = 1 P P/2 P/2 f(t)exp( ik2π t P )dt

Pulso rectangular

c k = 1 2π a a A e ikt dt= A kπ sin( ka )={ k=0 c 0 = A π a k0 c k = A kπ sin( ka )

>>syms k A a;
>> ck=int(A*exp(-i*k*t),t,-a,a)/(2*pi)
ck =(A*sin(a*k))/(pi*k)

Dibujamos la función f(t) entre -π y +π en color azul y con ancho de línea 2 y la aproximación a la función sumando n términos del desarrollo en serie (positivos y negativos) en color rojo de anchura de línea 1. Tomamos A=1

a=1; %Semianchura del pulso rectangular a<pi
n=5; %Número de términos
hold on
x=[-pi -a -a a a pi];
y=[0 0 1 1 0 0];
plot(x,y,'b','linewidth',2)
x=linspace(-pi,pi,100);
y=zeros(length(x),1);
for j=1:length(x)
    y(j)=0;
    for k=-n:n
        if k==0 
            y(j)=y(j)+a/pi;
        else
            y(j)=y(j)+sin(k*a)*exp(i*k*x(j))/(k*pi);
        end
     end
end

%ejes
plot([-4 4],[0 0],'k')
plot([0 0],[-0.2 1.2],'k')
%serie de Fourier
plot(x,real(y),'r');
title(sprintf('Aproximación de Fourier: %i términos',n))
xlabel('t'); ylabel('f(t)')
hold off

Pulso diente de sierra

c k = 1 2π π π A π t e ikt dt= A kπ icos( kπ )= A kπ ( 1 ) k i

Dibujamos la función f(t) entre -π y +π en color azul y con ancho de línea 2, la aproximación a la función sumando n términos del desarrollo en serie (positivos y negativos) en color rojo de anchura de línea 1. Tomamos A=1

n=5; %Número de términos
hold on
plot([-pi,pi],[-1 1],'b','linewidth',2)
x=linspace(-pi,pi,100);
y=zeros(length(x),1);
for j=1:length(x)
    y(j)=0;
    for k=-n:n
        y(j)=y(j)+(-1)^k*1i*exp(1i*k*x(j))/(k*pi);
    end
end
%ejes
plot([-4 4],[0 0],'k')
plot([0 0],[-1.5 1.5],'k')
%serie de Fourier
plot(x,real(y), 'r');
title(sprintf('Aproximación de Fourier: %i términos',n))
xlabel('t'); ylabel('f(t)')
hold off