Series de Fourier
Una función es periódica de periodo P si hay un número P>0 tal que f(t+P)=f(t). Cualquier múltiplo n entero de P es también periodo f(t+nP)=f(t)
La función f(t)=cos(2πt)+cos(4πt)/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.
Las funciones cos(t) y son periódicas de periodo 2π y respectivamente, pero la suma
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,
donde a0 a1 ...ak ... y b1 b2 .... bk .... son los denominados coeficientes de Fourier.
Teniendo en cuenta los resultados de las integrales
>> syms m n t; >> y=int('sin(m*t)*cos(n*t)',t,-pi,pi) y =0
>> 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
Los coeficientes del desarrollo en serie valen
La suma parcial de las series de Fourier es
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
Por ejemplo, para el pulso rectangular simétrico de anchura 1 y periodo P=2 se obtienen los siguientes coeficientes.
>> 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.
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
Sea ahora la función de periodo P=2
Es una función impar, los coeficientes ak son nulos
>> 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
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