并行计算MPI程序设计.docx

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
并行计算MPI程序设计

*******************实践教学*******************兰州理工大学理学院 2016年春季学期并行计算课程设计专业班级: 2013级信息与计算科学姓名:学号导教师:成绩:摘要FFT,即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。???设x(n)为N项的复数序列,由DFT变换,任一X(m)的计算都需要N次复数乘法和N-1次复数加法,而一次复数乘法等于四次实数乘法和两次实数加法,一次复数加法等于两次实数加法,即使把一次复数乘法和一次复数加法定义成一次“运算”(四次实数乘法和四次实数加法),那么求出N项复数序列的X(m),即N点DFT变换大约就需要N^2次运算。当N=1024点甚至更多的时候,需要N2=1048576次运算,在FFT中,利用WN的周期性和对称性,把一个N项序列(设N=2k,k为正整数),分为两个N/2项的子序列,每个N/2点DFT变换需要(N/2)^2次运算,再用N次运算把两个N/2点的DFT变换组合成一个N点的DFT变换。这样变换以后,总的运算次数就变成N+2(N/2)^2=N+N^2/2。继续上面的例子,N=1024时,总的运算次数就变成了525312次,节省了大约50%的运算量。而如果我们将这种“一分为二”的思想不断进行下去,直到分成两两一组的DFT运算单元,那么N点的DFT变换就只需要Nlog(2)(N)次的运算,N在1024点时,运算量仅有10240次,是先前的直接算法的1%,点数越多,运算量的节约就越大,这就是FFT的优越性关键字:FFT 蝶式计算 傅里叶变换目录摘要2目录3一、题目及要求41.1题目41.2要求4二、算法设计与算法原理52.1 算法原理与设计52.2设计求解步骤6三、算法描述与算法流程73.1算法描述73.2 流程图9四、源程序代码与运行结果104.1源程序104.2运行结果16五、算法分析及其优缺点175.1 算法分析175.2优缺点18六、总结19七、参考文献20一、题目及要求1.1题目对给定的=(1,2,4,3,8,6,7,2),利用串行FFT递归算法(蝶式递归计算原理)计算其傅里叶变换的结果1.2要求利用串行递归与蝶式递归原理,对给定的向量求解傅里叶变换的结果二、算法设计与算法原理2.1 算法原理与设计 令 为n/2次单位元根,则有 . 将b向量的偶数项和奇数项分别记为 和 注意推导中反复使用图2.12.2设计求解步骤三、算法描述与算法流程3.1算法描述n=8的FFT蝶式计算图图3.1图3.2 FFT递归计算流程图3.2 流程图飞级数i=?是否该级该组起始下标j=?是否该级该组元素序数k=?是否图3.3四、源程序代码与运行结果4.1源程序/************FFT***********/ //整个程序输入和输出利用同一个空间x[N],节约空间 #include stdio.h #include math.h #include stdlib.h #define N 1000 //定义输入或者输出空间的最大长度typedefstruct {double real;doubleimg; }complex; //定义复数型变量的结构体 void fft(); //快速傅里叶变换函数声明 void initW(); //计算W(0)~W(size_x-1)的值函数声明 void change(); //码元位置倒置函数函数声明 void add(complex,complex,complex *); /*复数加法*/ void mul(complex,complex,complex *); /*复数乘法*/ void sub(complex,complex,complex *); /*复数减法*/ void divi(complex,complex,complex *); /*复数除法*/ void output();

文档评论(0)

bigone123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档