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变换搞清楚再说

参考技术A function [Q,R]=qrhs(A)
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分解用啥算法实现的的主要内容,如果未能解决你的问题,请参考以下文章

QR分解与最小二乘(转载自AndyJee)

matlab用QR方法怎么求特征值,把程序写出来,谢谢

matlab中如何用qr函数求特征值和特征向量,矩阵是mxn

lanczos算法及C++实现实对称三对角阵特征值分解的分治算法

MATLAB教程案例34基于Lucas-Kanade算法和金字塔分解提取图像目标运动场的matlab仿真实现

急求,matlab中, 已知矩阵A,已完成对A的QR分解,下一步求A的特征值和特征向量,程序怎么编写?