Documentos de Académico
Documentos de Profesional
Documentos de Cultura
de Fourier
Autor:
Joseph Leonel Manzo Bustos
Profesor:
Francisco Alarcón Oseguera
Métodos Numéricos
Licenciatura en Física
3er Semestre
Universidad de Guanajuato
División de Ciencias e Ingenierías
1
Contenido
Resumen ......................................................................................................................................... 3
Resultado............................................................................................................................................ 3
Conclusiones .................................................................................................................................. 5
Apéndice (Códigos en C++) .......................................................................................................... 6
2
Resumen
La transformada rápida de Fourier, conocida por la abreviatura FFT (del inglés Fast
Fourier Transform) es un algoritmo eficiente que permite calcular la transformada de
Fourier discreta (DFT) y su inversa. a FFT es de gran importancia en una amplia variedad
de aplicaciones, desde el tratamiento digital de señales y filtrado digital en general a la
resolución de ecuaciones en derivadas parciales o los algoritmos de multiplicación rápida
de grandes enteros.
Resultado
Para este método necesitamos saber los 2𝑚 − 1 puntos para poder aproximar nuestra
función.
Para esto, ya que conocemos la función, podemos graficarla y poder ver su comportamiento.
Del gráfico podemos ver que la función realmente es difícil de interpolar, ya que va
creciendo cada vez de forma distinta a la anterior y no sigue algún tipo de patrón.
3
Al calcular el polinomio, los valores para 𝐶2𝑚−1 , 𝐴𝑗 y 𝐵𝑗 son:
4
Conclusiones
Este método es muy eficiente, pero es muy tedioso, ya que trata con números complejos y
tiene múltiples cálculos que, si uno está mal hace que todo lo demás del procedimiento este
mal, es muy largo en comparación de otros métodos, pero es muy preciso al momento de
interpolar.
Este es un método que se necesita de conocimientos tanto de números complejos y de su
aritmética.
5
Apéndice (Códigos en C++)
#include <stdio.h>
#include <math.h>
#include <complex.h>
int main(void)
printf("introduzca m: ");
scanf("%i", &m);
printf("introduzca p: ");
scanf("%i", &p);
for(w=0;w<2*m;w++)
x[w]=-M_PI+(w*M_PI)/m;
y[w]=f(x[w]);
M=m;
q=p;
z=cos(M_PI/m)+I*sin(M_PI/m);
for(j=0;j<2*m;j++)
c[j]=y[j]+I*0;
6
for(j=1;j<=M;j++)
e[j]=cpow(z,j+I*0);
e[j+M]=-e[j];
K=0;
e[0]=1;
for(L=1;L<=p+1;L++)
do
for(j=1;j<M+1;j++)
bezout(K,p,k);
K1=K/pow(2.0,q);
K2=k[q]*pow(2.0,p);
for(w=q+1;w<p+1;w++)
K2=K2+k[w]*pow(2.0,p+q-w);
n=c[K+M]*e[K2];
c[K+M]=c[K]-n;
c[K]=c[K]+n;
K=K+1;
K=K+M;
} while (K<2*m-1);
K=0;
M=M/2.0;
q=q-1;
7
}
do
bezout(K,p,k);
j=k[p];
for(w=0;w<p;w++)
j=j+k[w]*pow(2.0,p-w);
if(K<j)
n=c[j];
c[j]=c[K];
c[K]=n;
K=K+1;
} while (K<2*m-1);
a[0]=c[0]/(2.0*m);
a[m]=creal((cos(M_PI*m)-I*sin(M_PI*m))*c[m]/m);
for(j=1;j<m;j++)
a[j]=creal((cos(M_PI*j)-I*sin(M_PI*j))*c[j]/(m+I*0));
b[j]=cimag((cos(M_PI*j)-I*sin(M_PI*j))*c[j]/(m+I*0));
for(w=0;w<2*m-1;w++)
for(w=0;w<=m;w++)
8
{
for(w=1;w<m-1;w++)
return 0;
for(i=1;i<=p;i++)
twop=twop*2.0;
for(i=p;0<=i;i--)
if(0<=a)
r=a%twop;
if(0!=a-r)
k[i]=(a-r)/pow(2.0,i);
a=a-k[i]*pow(2.0,i);
else
k[i]=0;
9
}
else
k[i]=0;
if(2<=twop)
twop=twop/2.0;
double f(double x)
double y;
y=fabs(x);
return y;
10