你好~我在做矩阵QR算法的研究,设计了householder、GIVENS、schmidt三种方法,现在要对其算法性能分析
发布网友
发布时间:2022-05-12 19:56
我来回答
共1个回答
热心网友
时间:2023-10-20 10:58
这个只是QR分解的几种基本计算方法,不是QR算法。
如果仅是很明确的“性能”分析,那么和数值稳定性就没有关系。
从性能的角度讲,传统意义上只要分析浮点运算次数,从循环里面数一下就出来了,这个没有难度。四则运算和开方不必分开讨论,一起算就行了。一般来讲MATLAB形式的伪代码很多教材里都有。
如果要求高一点就要分析读写次数,在现代计算机上这个对性能的影响很大。如果一点概念也没有就算了,这个要求相对比较高,你的老师也未必完全掌握了。
从精度的角度讲一般只要分析计算解的正交性(||Q'Q-I||)和残量大小(||A-QR||)就行了,注意Gram-Schmidt方法常用的形式有两种,正交性差距是挺大的。如果最后还要做数值例子,可以任取一个矩阵A和一个向量x,然后对[x,Ax,A^2*x,...,A^r*x]进行QR分解,如果例子太随意可能条件数太小,不足以体现算法间的区别。追问感谢!现在对矩阵A用自己编写函数[qrhs(A)完成了QR分解,要求A的特征值和特征向量该怎么求呢?只会求其特征值,特征向量不知道从哪写起。
function I = tzzhs(A,M,j)%基于householder法求特征值的函数%六阶矩阵:A 求矩阵特征值:I
for i=1:M %多次迭代
[q,r]=qrhs(A);
A = r*q;I = diag(A);end
另外,我要分析迭代次数M对特征值的影响,取M=5,10,50,100,现象不明显,而且没有什么规律可言。急,请多指点,不尽感激!
追答QR迭代产生上三角矩阵,只要会求上三角矩阵的特征向量就行了,然后再乘一下变换矩阵,如果没有重根的话这个应该完全没难度。
至于迭代次数,应该说下三角部分的收敛速度是由|λ_i|/|λ_j|决定的,你自己观察,结论我就不告诉你了。如果你把代码改成带位移的QR算法,那么迭代次数和矩阵阶数也有一定关系,同样自己观察。
来自:求助得到的回答