matlab QR分解用啥算法实现的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab QR分解用啥算法实现的相关的知识,希望对你有一定的参考价值。
QR分解法是目前求一般矩阵全部特征值的最有效并广泛应用的方法,一般矩阵先经过正交相似变化成为Hessenberg矩阵,然后再应用QR方法求特征值和特征向量。它是将矩阵分解成一个正规正交矩阵Q与上三角形矩阵R,所以称为QR分解法,与此正规正交矩阵的通用符号Q有关。 参考技术A function l = rqrtz(A,M)%QR算法求矩阵全部特征值
%已知矩阵:A
%迭代步数:M
%求得的矩阵特征值:l
A = hess(A);
for i=1:M
N = size(A);
n = N(1,1);
u = A(n,n);
[q,r]=qr(A-u*eye(n,n));
A = r*q+u*eye(n,n);
l = diag(A);
end
------------------------------------
A=[0 5 0 0 0 0;1 0 4 0 0 0;0 1 0 3 0 0;0 0 1 0 2 0;0 0 0 1 0 1;0 0 0 0 1 0]
A =
0 5 0 0 0 0
1 0 4 0 0 0
0 1 0 3 0 0
0 0 1 0 2 0
0 0 0 1 0 1
0 0 0 0 1 0
>> rqrtz(A,50)
ans =
-3.2030
3.2030
-1.8837
1.8837
-0.6167
0.6167
>> eig(A)
ans =
-3.3243
3.3243
-1.8892
-0.6167
1.8892本回答被提问者采纳
急求matlab复数矩阵QR分解代码我知道matlab本身有qr函数 但是我想知道利用householder变换递归实现的原理。
matlab代码或C代码,谢谢!!!
实Householder变换和复Householder变换没有本质区别,只不过是把H=I-2ww^T改成H=I-2ww^H至于递归实现,只要对第一列进行消去后再递归就行了追问
你有没有利用householder变换递归实现QR分解代码,能不能发给我一份啊。看代码
便于理解其思想。我QQ号是764158660,先谢谢的了啊。
我手里没有,因为目前用递归写的QR一定不会是高效代码,我没兴趣收藏这种程序
追问哪种算法写的QR分解是高效的代码啊?
追答这东西比较复杂,如果你连最简单的递归算法都不会实现,多解释也是浪费
你还是务实一点,先把实Householder变换和复Householder变换搞清楚再说
n=size(A,1);
R=A;
Q=eye(n);
for i=1:n-1
x=R(i:n,i);
y=[1;zeros(n-i,1)];
Ht=householder(x,y);
H=blkdiag(eye(i-1),Ht);
Q=Q*H;
R=H*R;
end
以上是关于matlab QR分解用啥算法实现的的主要内容,如果未能解决你的问题,请参考以下文章
matlab中如何用qr函数求特征值和特征向量,矩阵是mxn
lanczos算法及C++实现实对称三对角阵特征值分解的分治算法