El análisis de Fourier surgió a partir del intento de éste matemático francés por hallar la
solución a un problema práctico, la conducción del calor en un anillo de hierro.
En esta página, aprenderemos a obtener los primeros términos del desarrollo en serie de
Fourier con MATLAB y a aproximar una función periódica mediante la suma de
funciones armónicas
f(t)=cos(t)+cos(√ 2 t)f(t)=cos(t)+cos(2t)
no es periódica.
t=0:0.05:10;
x=cos(2*pi*t)+cos(4*pi*t)/2;
subplot(2,1,1)
plot(t,x);
xlabel('t')
ylabel('x')
subplot(2,1,2)
x=cos(2*pi*t)+cos(2*pi*sqrt(2)*t);
plot(t,x);
xlabel('t')
ylabel('x')
Superposición de funciones armónicas
Sea una función periódica resultado de la superposición de tres funciones
armónicas con distintas frecuencias, amplitudes y fases iniciales
x=200sin(2π·100+π/2)+100sin(2π·200+π)+100sin(2π·400+3π/2)
f=[100,200,400]; %frecuencias
A=[200,100,100]; %amplitudes
phi=[90,180,270]; %fases
subplot(2,2,1)
stem(f,A)
axis([0,500,0,210])
xlabel('Frecuencia')
ylabel('Amplitud')
subplot(2,2,2)
stem(f,phi)
axis([0,500,0,360])
xlabel('Frecuencia')
set(gca,'YTick',0:90:360)
set(gca,'YTickLabel',{'0','\pi/2','\pi','3\pi/2','2\pi'})
ylabel('Fase')
subplot(2,2,3:4) %resultante
t=(0:0.1:30)/1000; %milisegundos
x=zeros(1,length(t));
for i=1:length(f)
x=x+A(i)*sin(2*pi*f(i)*t+phi(i)*pi/180);
end
plot(t,x,'r')
xlabel('t(ms)')
ylabel('x')
title('Resultante')
ylim([-410,410])
set(gca,'XTick',(0:5:30)/1000)
set(gca,'XTickLabel',{'0','5','10','15','20','25','30'})
grid on
Serie de Fourier
Una función f(t) periódica de periodo P, se puede representar en forma de una
suma infinita de funciones armónicas es decir,
f(t)=a02+∞∑k=1(akcos(k2πPt)+bksin(k2πPt))f(t)=a02+∑k=1∞(akcos(k2πP
t)+bksin(k2πPt))
Una función periódica, se puede representar en forma de una suma infinita de funciones
armónicas
donde a0 a1 ...ak ... y b1 b2 .... bk .... son los denominados coeficientes de
Fourier.
P/2∫−P/2cos(m2πPt)sin(n2πPt)dt=P2ππ∫−πcos(mx)sin(nx)dx=0∫−P/2P/2cos(m2π
Pt)sin(n2πPt)dt=P2π∫−ππcos(mx)sin(nx)dx=0
>> syms m n t;
>> y=int('sin(m*t)*cos(n*t)',t,-pi,pi)
y =0
P/2∫−P/2cos(m2πPt)cos(n2πPt)dt=P2ππ∫−πcos(mx)cos(nx)dx={0m≠nP2m=n∫−P/2P/
2cos(m2πPt)cos(n2πPt)dt=P2π∫−ππcos(mx)cos(nx)dx={0
m≠nP2 m=n
>> syms m n t;
>> y=int('cos(m*t)*cos(n*t)',t,-pi,pi);
>> assume(m,'integer')
>> assume(n,'integer')
>> assume(m==n)
>> simplify(y)
ans =pi
P/2∫−P/2sin(m2πPt)sin(n2πPt)dt=P2ππ∫−πsin(mx)sin(nx)dx={0m≠nP2m=n∫−P/2P/2
sin(m2πPt)sin(n2πPt)dt=P2π∫−ππsin(mx)sin(nx)dx={0 m≠nP2
m=n
ak=2PP/2∫−P/2f(t)cos(k2πPt)dtk=0,1,2,3...bk=2PP/2∫−P/2f(t)sin(k2πPt)dtk=1,2,3...ak=
2P∫−P/2P/2f(t)cos(k2πPt)dt
k=0,1,2,3...bk=2P∫−P/2P/2f(t)sin(k2πPt)dt k=1,2,3...
sn(t)=a02+n∑k=1(akcos(k2πPt)+bksin(k2πPt))sn(t)=a02+∑k=1n(akcos(k2π
Pt)+bksin(k2πPt))
Función par
Si la función es par bk=0
Por ejemplo, para el pulso rectangular simétrico de anchura 1 y periodo P=2 se
obtienen los siguientes coeficientes.
a0=220.5∫−0.5dt=1ak=220.5∫−0.5cos(kπt)dt=2kπ(sin(kπ2)){0kpar2kπ(−1)(k−1)/2kimpara0=
22∫−0.50.5dt=1ak=22∫−0.50.5cos(kπt)dt=2kπ(sin(kπ2)) {0
k par2kπ(−1)(k−1)/2 k impar
>> syms t P k;
>> ak=int(cos(pi*k*t),t,-0.5,0.5);
>> subs(ak,k,sym('[1 2 3 4 5 6 7]'))
ans =[ 2/pi, 0, -2/(3*pi), 0, 2/(5*pi), 0, -2/(7*pi)]
Vamos a reconstruir la función f(t) a partir del desarrollo en serie de Fourier.
sn(t)=12+2cos(πt)π−2cos(3πt)3π+2cos(5πt)5π−2cos(7πt)7π+...sn(t)=12+2cos
(πt)π−2cos(3πt)3π+2cos(5πt)5π−2cos(7πt)7π+...
bk=0∫−1sin(kπt)dt−1∫0sin(kπt)dt=1kπ(−2+2cos(kπ))={0kpar−4kπkimparbk=∫−10
sin(kπt)dt−∫01sin(kπt)dt=1kπ(−2+2cos(kπ))={0 k par−4kπ
k impar
>> syms t P k;
>> bk=int(sin(pi*k*t),t,-1,0)-int(sin(pi*k*t),t,0,1);
>> subs(bk,k,sym('[1 2 3 4 5 6 7]'))
ans =[ -4/pi, 0, -4/(3*pi), 0, -4/(5*pi), 0, -4/(7*pi)]
El desarrollo en serie es
sn(t)=−4sin(πt)π−4sin(3πt)3π−4sin(5πt)5π−4sin(7πt)7π+...sn(t)=−4sin(πt)π
−4sin(3πt)3π−4sin(5πt)5π−4sin(7πt)7π+...