sábado, 7 de abril de 2012

Ahora si.. Una verdadera SUMATORIA DE FOURIER

Ya es hora de aplicar los conceptos aprendidos acerca de Fourier para aproximar una función a través de una sumatoria de Fourier.

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
 

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