En este caso, expresaré la siguiente función x(t) como una sumatoria de Fourier de manera que crearé un programa en Matlab que grafique la aproximación de esta función, dependiendo del número N que se desee para limitar la sumatoria:
Esta función se puede definir como x(t) = t , desde -1 a 1, con un periodo To=2.
El siguiente script calcula primero la integral que define la función X(k) para los coeficientes y luego la evalúa en el intervalo deseado de k, las suma y la grafica:
OBSERVACIÓN:
- Los comentarios en AZUL = Valores que pueden modificarse a petición del usuario
- Los comentarios en VERDE = Aclaraciones de lo que produce el programa
- Los comentarios en ROJO = Notas importantes en el proceso de cálculo
clc
clear all
syms t
syms k
funx=t; %funx=Funcion armónica a analizar
To=2; %To=Periodo de la función armónica
w=(2*pi)/To;
xki=funx*exp(-j*w*k*t);
xk=(1/To)*int(xki,-1,1); %-1 a 1 es el intervalo a analizar (Un Periodo)
disp(xk); %xk muestra la función X(k) de los coeficientes de Fourier
N=25; %N= Numero de sumatorias para la serie de Fourier
%N PUEDE VARIARSE PARA CAMBIAR LA EXACTITUD DE LA SUMATORIA
xt=0;
for kn=-N:1:N
if kn==0
xik=0 %No puede evaluarse en k=0 porque se obtiene una INDETERMINADA
%El valor de X(k) = 0 cuando k=0 se obtuvo por L'Hopital
else
xi=xk*exp(j*w*k*t);
xik=subs(xi,k,kn);
end
disp(kn) %kn muestra en que numero de evaluacion de k va el proceso
disp(xik) %xik muestra cual es la funcion x(k) para ese valor de k
xt=xt+xik; %Sumatoria de Fourier (aproximacion de x(t))
end
disp(xt)
for ti=-1.5:0.01:1.5 %Intervalo de tiempo en que sera graficada la función
%Mientras mas pequeño sea el paso, mejor nitidez
%tendra la gráfica pero más lento será el proceso.
xti=subs(xt,t,ti);
plot(ti,xti,'--b.')
grid on
title('Representación de Función x(t) como Sumatoria de Fourier')
xlabel('Tiempo t')
ylabel('Aproximación de x(t)')
hold on
end
clear all
syms t
syms k
funx=t; %funx=Funcion armónica a analizar
To=2; %To=Periodo de la función armónica
w=(2*pi)/To;
xki=funx*exp(-j*w*k*t);
xk=(1/To)*int(xki,-1,1); %-1 a 1 es el intervalo a analizar (Un Periodo)
disp(xk); %xk muestra la función X(k) de los coeficientes de Fourier
N=25; %N= Numero de sumatorias para la serie de Fourier
%N PUEDE VARIARSE PARA CAMBIAR LA EXACTITUD DE LA SUMATORIA
xt=0;
for kn=-N:1:N
if kn==0
xik=0 %No puede evaluarse en k=0 porque se obtiene una INDETERMINADA
%El valor de X(k) = 0 cuando k=0 se obtuvo por L'Hopital
else
xi=xk*exp(j*w*k*t);
xik=subs(xi,k,kn);
end
disp(kn) %kn muestra en que numero de evaluacion de k va el proceso
disp(xik) %xik muestra cual es la funcion x(k) para ese valor de k
xt=xt+xik; %Sumatoria de Fourier (aproximacion de x(t))
end
disp(xt)
for ti=-1.5:0.01:1.5 %Intervalo de tiempo en que sera graficada la función
%Mientras mas pequeño sea el paso, mejor nitidez
%tendra la gráfica pero más lento será el proceso.
xti=subs(xt,t,ti);
plot(ti,xti,'--b.')
grid on
title('Representación de Función x(t) como Sumatoria de Fourier')
xlabel('Tiempo t')
ylabel('Aproximación de x(t)')
hold on
end
Como se aclaró en el proceso, la evaluación de la función X(k) cuando k=0 no puede realizarse de manera directa pues se obtiene una indeterminada. Esta evaluación debe hacerse a través de L'Hopital con dos derivadas para obtener un valor igual a X(0) = 0.
Así:
Pueden variarse por tanto los parámetros de N y de t para obtener, en el primer caso, una mejor aproximación de la sumatoria y en el segundo variar los parámetros de la gráfica, teniendo en cuenta que mientras más grandes sean estos números MAS TIEMPO DEMORARÁ EL COMPUTADOR PROCESANDO.... Paciencia...!!!
Con los parámetros establecidos en este script, se obtiene la siguiente gráfica:
Finalmente, la aproximación... Toma forma!
No hay comentarios:
Publicar un comentario