《计算方法》研究报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
我们令矩阵,则需要证明为对角化的矩阵。 根据矩阵的结合律,令 记列向量,且, 并且记,即以n为周期延拓后序列的主值序列,也就是循环矩阵C 的第个列向量,得到。 记,
则由DFT的性质可以得到,所以 而, 综上,命题得证。
2. 编程实现 1) 存储方案设计 由于Toeplitz矩阵与循环矩阵中有大量重复数据,因此,根据
实验并作出平均用时-阶数图像来直观地进行对比。 测试步骤:
1、 确定实验矩阵的最小阶数与最大阶数 2、 循环矩阵C根据阶数n生成n个随机数,Toeplitz矩阵则要生
成2n-1个随机数,并根据5)变为循环矩阵 3、 对生成的循环矩阵分别直接计算向量积和利用FFT计算向量
积,分别统计时间,并取时间平均值 4、 分别作出用时-阶数图像,进行直观对比
化为循环矩阵,只需要在存储阶Toeplitz矩阵的向量中添加一个 0,并调整元素顺序即可得到阶循环矩阵,之后的计算步骤与
循环矩阵完全类似。 3) 编制Matlab程序 Matlab程序已包含在文件夹中 3. 测试算例 设计测试方法。
进行测试时由随机数生成器生成矩阵 为保证实验的准确性,我们要进行多阶多次实验分别取平均时间 以减小实验误差,因此我们对1-1000阶矩阵每阶分别进行1000次
利用fft计算Toeplitz的计算时间在512阶矩阵左右处有一个跳变,这是因
为在计算阶Toeplitz矩阵时由于需要做长度的DFT,因此512阶以下的
Toeplitz矩阵至多需要做1024点的fft,而512阶以上的矩阵则都需要做 2048点的fft,所以可以看到在512阶左右两边的矩阵都趋向与平缓,同 理也可以预测在1024阶左右也将存在一个跃变。
2016年《计算方法》研讨课题目
------ Toeplitz矩阵与向量的乘积
课题小组: 组长: 李灵萱 成员: 仇天乐、肖晟远、赵海宁、寿立夫、张连炜、 李怡宁
一个阶Toeplitz矩阵形如 可以将嵌入一个“循环矩阵”,然后利用FFT来快速计算矩阵-向量积,其 计算复杂度为。
1. 理论基础 1) 一个阶循环矩阵具有如下结构
. 2) 一个阶离散Fourier矩阵为
. 这里的是虚数单位。 3) 数学上业已证明:一个阶循百度文库矩阵能被对角化,即
, 且是的特征值。可以用IFFT计算,即 4) 利用和,则矩阵-向量积可以表为
. 5) 对于阶Toeplitz矩阵,首先将嵌入一个阶循环矩阵,即
,其中 将维列向量嵌入一个维列向量,这时有 根据4)的事实,可用阶的FFT和IFFT计算矩阵-向量积,于是间接获得矩 阵-向量积。这样,矩阵-向量积的计算复杂度从降低到了。 6) 公式的数学证明
两者的特点,我们用长度为的向量来储存Toeplitz矩阵,即;用 长度为的向量来储存循环矩阵,即。将储存空间从降低 为。
2) 计算步骤设计 1. 循环矩阵
1.1直接计算
因为我们将循环矩阵存储在长度为的向量中,所以可以利 用次向量积求得答案,在计算时只需要注意在每次向量 积时调整中元素的顺序即可。
1.2利用fft求解 首先利用ifft函数求得循环矩阵的特征值,注意到matlab中ifft
3)
函数并未做归一化处理,因此需要在ifft得到的向量上乘以系数; 之后对向量取ifft ,并与特征值做matlab中的点乘操作,最后对所 得向量做fft运算即可得到结果。
2. Toeplitz矩阵 直接计算Toeplitz矩阵与向量乘法的步骤与循环矩阵类似,同 样需要注意所存储向量在实际运算中元素的顺序; 利用fft求解Toeplitz矩阵与向量乘法的关键是将Toeplitz矩阵转
1) 给定循环矩阵不变,对随机生成的多个向量连续计算矩阵-向量 积,并记录总时间。对比直接计算与借助FFT计算的速度。
可以看到在计算实数循环矩阵时,利用fft的方法相比于直接计 算大约块50~100倍;而在计算复数矩阵时加速的效果则要差一 些。
2) 给定Toeplitz矩阵不变,对随机生成的多个向量连续计算矩阵-向 量积,并记录总时间。对比直接计算与借助FFT计算的速度。
相关文档
最新文档