这是我做的一个求e^(-n) N=16的程序 怎么算出的结果和答案不同啊
帮下 谢谢
频谱计算的完整C程序为
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<process.h>
#define PI 3.1415926
float x[1024],y[1024],am[1024];
void main()
  {
  int l,N,i;
  float a;
  void put_in(int N);     %*输入函数*%
  void re_bit(int N);     %*倒序重排*%
  void butterfly(int l);  %*蝶形算法*%
  printf("input l(l<=10)=");
  scanf("%d",&l);
  N=(int)(pow(2,l));
  put_in(N);
  re_bit(N);
  butterfly(l);
    for(i=0;i<N;i++)
      printf("%6.4f+i%6.4f\n",x[i],y[i]); %*FFT结果*%
      printf("\n\n");
      getchar();
    for(i=0;i<N;i++)
     {
       am[i]=sqrt(x[i]*x[i]+y[i]*y[i]);   %*其幅度谱*%
       printf("%6.4f\n",am[i]);
     }
     printf("\n\n");
     getchar();
  }
  void butterfly(int l)
  {
  int i,j,r,m1,m2,m3,m4;
  int k1,k2;
  int N;
  float u,v;
  N=(int)(pow(2,l));
   for(i=0;i<l;i++)
    {
      m1=(int)(pow(2,i));
      m2=2*m1;
      m3=N/m2;
       for(j=0;j<m3;j++)
    {
    m4=j*m2;
    for(r=0;r<m1;r++)
    {
      k1=m4+r;
      k2=k1+m1;
      u=x[k2]*cos(2*PI*r/m2)+y[k2]*sin(2*PI*r/m2);
      v=y[k2]*cos(2*PI*r/m2)-x[k2]*sin(2*PI*r/m2);
      x[k2]=x[k1]-u;
      y[k2]=y[k1]-v;
      x[k1]=x[k1]+u;
      y[k1]=y[k1]+v;
    }
    }
    }
  }
  void re_bit(int N)
   {
     int i,j,M,s;
     float a;
     M=N/2;
     i=0;
     for(j=1;j<N;j++)
      {
       s=M;
       while(i>=s)
        {
              i=i-s;
              s=s/2;
            }
     if(j<i)
            {
              a=x[j];x[j]=x[i];x[i]=a;
              a=y[j];y[j]=y[i];y[i]=a;
             }
       }
  }
   void put_in(int N)
    {
      int i;
      for(i=0;i<N;i++)
       {
             x[i]=exp(-i);
             y[i]=0.0;
            }
}
[此贴子已经被作者于2007-6-10 23:26:11编辑过]



 
											





 
	    

 
	