Series de Fourier 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 Una función es periódica de periodo P si si hay un número P >0 >0 tal que f (t+P )= )=f (t ). ). Cualquier múltiplo n entero de P es es también periodo f (t+nP )= )=f (t ) La función f (t )=cos(2π )=cos(2πt )+cos(4π )+cos(4πt )/2, )/2, es la suma de dos funciones periódicas de periodos 1 y 0.5, respectivamente. Como vemos en la gráfica f (t ) es periódica con periodo P =1. =1. Las funciones cos( t ) y cos(√ 2 t)cos(2t) son periódicas de periodo 2π y 2π/√ 2 2π/2 respectivamente, pero la suma
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(ak cos(k2πPt)+bk sin(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. Teniendo en cuenta los resultados de las integrales
∫−P/2cos(m2πPt)sin(n2πPt)dt=P2ππ∫−πcos(mx)sin(nx)dx=0∫−P/2P/2cos(m2π
P/2
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/2cos(m2πPt)cos(n2πPt)dt=P2ππ∫−πcos(mx)cos(nx)dx={0m≠nP2m=n∫−P/2P/
P/2
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/2sin(m2πPt)sin(n2πPt)dt=P2ππ∫−πsin(mx)sin(nx)dx={0m≠nP2m=n∫−P/2P/2
P/2
sin(m2πPt)sin(n2πPt)dt=P2π∫−ππsin(mx)sin(nx)dx={0 m≠nP2 m=n Los coeficientes del desarrollo en serie valen
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... La suma parcial de las series de Fourier es
sn(t)=a02+n∑k=1(ak cos(k2πPt)+bk sin(k2πPt))sn(t)=a02+∑k=1n(akcos(k2π
Pt)+bksin(k2πPt)) Si la función f (t ) tiene simetría, algunos de los coeficientes resultan nulos.
Si f (t ) es una función par, f (t)=f (-t ), los términos bk son nulos Si f (t ) es impar f (t )=-f (-t ), los coeficientes ak son nulos
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)){0kpar 2kπ(−1)(k −1)/2kimpar a0=
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π+... n=7; %número de términos hold on x=[-1 -0.5 -0.5 0.5 0.5 1]; y=[0 0 1 1 0 0]; plot(x,y,'b','linewidth',2) x=linspace(-1,1,100); y=zeros(length(x),1); for i=1:length(x) y(i)=1/2; for k=1:2:n y(i)=y(i)+(-1)^((k-1)/2)*2*cos(k*pi*x(i))/(k*pi); end end plot(x,y, 'r'); title(sprintf('Aproximación de Fourier: %i términos',n)) xlabel('t'); ylabel('f(t)') grid on hold off
Función impar Si la función es impar, ak =0 Sea ahora la función de periodo P =2
Es una función impar, los coeficientes ak son nulos
bk =0∫−1sin(kπt)dt−1∫0sin(kπt)dt=1kπ(−2+2cos(kπ ))={0kpar −4kπkimpar bk=∫−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π+... n=7; %Número de términos; hold on x=[-1 -1 0 0 1 1]; y=[0 1 1 -1 -1 0]; plot(x,y,'b','linewidth',2) x=linspace(-1,1,100); y=zeros(length(x),1); for i=1:length(x) y(i)=0; for k=1:2:n y(i)=y(i)-4*sin(k*pi*x(i))/(k*pi); end end plot(x,y, 'r'); title(sprintf('Aproximación de Fourier: %i términos',n)) xlabel('t'); ylabel('f(t)') grid on hold off