Está en la página 1de 5

Description Cdigo para generar las series de Fourier de funciones definidas a trozos , genera los coeficientes A0, An, Bn y

la funcin de aproximacin, genera la grfica de las funciones originales y de la funcin de aproximacin, es


necesario revisar el intervalo de graficacin de las funciones originales para que se adecuen a tus necesidades
MATLAB release MATLAB 7.14 (R2012a)
MATLAB Search Path /

transformada_de_fourier_grupo_ de_funciones.m
clear , clf, clc, close all
syms x n
%f=input('ingrese las funciones entre corchetes [] separadas por espacios');
%p=input('ingrese los puntos en que estan evaluadas las funciones entre corchetes [] separadas por
espacios');
f=[x^3 x^4];%funciones
p=[-pi 0 pi];%intervalos
f=sym(f);
a0=0;
for i=1:length(f)
a0=a0+int(f(i),'x',p(i),p(i+1));
end
disp('coeficiente A0:')
a0=simple(a0/pi);
pretty(a0)
an=0;
for i=1:length(f)
an=an+int(f(i)*cos(n*x),'x',p(i),p(i+1));
end
disp('coeficiente An:')
an
an=simple(an/pi)
an=subs(an,{cos(pi*n),sin(pi*n)},{(-1)^n,0})
pretty(an)
bn=0;
for i=1:length(f)
bn=bn+int(f(i)*sin(n*x),'x',p(i),p(i+1));
end
disp('coeficiente Bn:')
bn=simple(bn/pi);
bn=subs(bn,{cos(pi*n),sin(pi*n)},{(-1)^n,0});
pretty(bn)
d=input('ingrese el valor de los armonicos: \n')
D=d;
d=sym(d);
Fa=a0/2;
%ciclo para generar la sumatoria
tic
for k=1:d
F=0;
F=an*cos(n*x)+bn*sin(n*x);

F=subs(F,n,k);
Fa=Fa+F;
end
% graficacion de la funcion de aproximacion
fprintf('funcion de aproximacion para %d terminos es: \n',D)
FA=simple(Fa);
pretty(FA)
T=toc
p1=ezplot(Fa,[-5,5]);
set(p1,'color','g')
title('aprox. de funciones por series de Fourier')
xlabel('x')
ylabel('y')
grid on
hold on
% graficacion de las funciones originales
x=min(p):0.01:max(p);
fx=0;
for j=1:length(f)
fj=subs(f(j),x);
if j==length(f)
fx=fx+(((x>=p(j))&(x<=p(j+1))).*fj);
else
fx=fx+(((x>=p(j))&(x<p(j+1))).*fj);
end
end
plot(x,fx)
legend('funcion aprox.','funcion original')
hold off
%%
clear , clf, clc, close all
syms x n
%f=input('ingrese las funciones entre corchetes [] separadas por espacios');
%p=input('ingrese los puntos en que estan evaluadas las funciones entre corchetes [] separadas por
espacios');
f=[x^3 x^4];%funciones
p=[-pi 0 pi];%intervalos
f=sym(f);
a0=0;
for i=1:length(f)
a0=a0+int(f(i),'x',p(i),p(i+1));
end
disp('coeficiente A0:')
a0=simple(a0/pi);
pretty(a0)
an=0;
for i=1:length(f)
an=an+int(f(i)*cos(n*x),'x',p(i),p(i+1));
end
disp('coeficiente An:')
an
an=simple(an/pi)
an=subs(an,{cos(pi*n),sin(pi*n)},{(-1)^n,0})
pretty(an)

bn=0;
for i=1:length(f)
bn=bn+int(f(i)*sin(n*x),'x',p(i),p(i+1));
end
disp('coeficiente Bn:')
bn=simple(bn/pi);
bn=subs(bn,{cos(pi*n),sin(pi*n)},{(-1)^n,0});
pretty(bn)
d=input('ingrese el valor de los armonicos: \n')
D=d;
d=sym(d);
Fa=a0/2;
%sumatoria de terminos
tic
Fa=Fa+symsum(an*cos(n*x)+ bn*sin(n*x),n,1,d);
% graficacion de la funcion de aproximacion
fprintf('funcion de aproximacion para %d terminos es: \n',D)
FA=simple(Fa);
pretty(FA)
T=toc
p1=ezplot(Fa,[-5,5]);
set(p1,'color','g')
title('aprox. de funciones por series de Fourier')
xlabel('x')
ylabel('y')
grid on
hold on
% graficacion de las funciones originales
x=min(p):0.01:max(p);
fx=0;
for j=1:length(f)
fj=subs(f(j),x);
if j==length(f)
fx=fx+(((x>=p(j))&(x<=p(j+1))).*fj);
else
fx=fx+(((x>=p(j))&(x<p(j+1))).*fj);
end
end
plot(x,fx)
legend('funcion aprox.','funcion original')
hold off

Programa en Matlab para Series de Fourier


Este es un programa en Matlab que permite hacer una aproximacin a una seal
cuadrada (con lmites en y max= 1, min= -1) por medio de las series de Fourier.
Los valores de los coeficientes son:A0 = 0, debido al valor medio de la funcin.B(n)
= 4/n*pi, obtenido analticamente.A(n) = 0, debido a la forma de la seal.
Programa en Matlab
% Pablo Alejandro Arreola Galvn 98482
% Febrero, 2013
% Este programa grafica una funcin escaln y sobre ella

% una aproximacin hecha con la serie de Fourier


%Introduccin al programa y limpia de pantalla
clc
clear all
disp('******************************')
disp('Serie de Fourier')
% Aqu declaramos varias cosas, en primer lugar una variable N la cual es el nmero de
armnicos que % incluir nuestra aproximacin, mientras mayor sea el nmero, ms fiel ser la
grfica obtenida a la
% original.
% Tambin se declara el intervalo (x) de nuestra funcin, que va de pi hasta pi.
% Por ltimo inicializamos la variable SUM a cero.
N= input('Nmero de muestras deseadas (N):');
x=-pi:0.001:pi;
sum=0;
% En este ciclo for est contenida la magia, inicializa en 1 y termina en N, el incremento es de 2,
para % as tener una serie de nmeros impares (1,3,5,7,9). Los valores pares de (n) se omiten
ya que el
% resultado es cero para todos ellos, no sumarn nada a la variable (sum).
% b(n) fue obtenida analticamente
for n = 1: 2: N
b(n) = 4/(n*pi);
sum = sum + b(n) * sin(n*x);
end
% Para tener el resultado aproximado de la seal, se suma a0/2, este trmino fue obtenido a partir
de % el valor promedio del rea bajo la curva de -pi a pi, como es una funcin simtrica, el valor
es 0,
% esto podra omitirse, pero para se incluye para ver ms claramente la frmula de la
serie.
sum = sum + 0;
% Esta es una manera de generar la funcin escaln (f), diciendo que toda (x) inferior a 0 valdr1, y % toda (x) mayor a 0 valdr 1. Esto slo es vlido para el intervalo de pi a pi, donde se ve
una seal % cuadrada, si se amplan los lmites se ver la grfica de valores constantes.
f=(x<0).*(-1)+(x>=0).*1;
% En esta seccin se encuentran los comandos para graficar y fin del programa.
plot(x,f); hold on
plot(x,sum)
grid
title(Serie de Fourier')
xlabel('Tiempo')
ylabel('Voltaje')
disp('Programa ejecutado exitosamente')
disp('******************************')

Algunos resultados son:


Aproximacin con N=3

Aproximacin con N=30