急求matlab复数矩阵QR分解代码我知道matlab本身有qr函数 但是我想知道利用householder变换递归实现的原理。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了急求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中, 已知矩阵A,已完成对A的QR分解,下一步求A的特征值和特征向量,程序怎么编写?

已针对矩阵A用自己编写函数[q,r]=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
问题1 如何在上述程序的基础上求出特征向量?求程序
2 对求的特征向量验证正确性
3 我要分析迭代次数M对特征值的影响,取M=5,10,50,100,但是对六阶实对称阵而言,现象不明显;对六阶复对称真而言,没有什么规律可言。是什么原因?急,请多指点,不尽感激!

楼主的问题是自己写程序完成矩阵的QR分解,既然是迭代实现QR分解,就与矩阵论中说的计算特征值和特征向量的方法有些区别了。大体的步骤应该是首先将矩阵化成双对角矩阵,然后追赶计算特征值和特征向量,程序代码可以参考 徐士良编的 常用数值算法 c语言描述追问

是的,前面已完成了QR分解,就剩求特征值和特征向量,并完成迭代次数对特征值影响的分析了,是要用matlab的语言编写的,能在我编写的程序上略加指点吗?因为比较急,可能没时间看参考书了。
另外问一下:对A采用了两种QR基本算法得到的两个正交阵Q1和Q2,假设他俩是差不多的,就是对应元素相同,现在要对其分析画图等,即使验证这两个矩阵是接近相同的,通常有哪几种表述方法,比较直观呢?

参考技术A 求特征向量用matlab中eig命令

第三个问题应该是阶段误差的原因吧!追问

不用matlab自带的库函数,求QR分解和特征值特征向量都得自己编写。
阶段误差是指?我取的值没有代表性吗?我感觉是我编写的迭代法求特征值太简单了。求解答

追答

“截断误差” ,这个问题我不是很确定,“我取的值没有代表性吗?” 不应该这样讲 是递增的就可以
没时间看参考书我就不推荐了

matlab语言就是简单,你改用fortran试试,就麻烦了,呵呵

以上是关于急求matlab复数矩阵QR分解代码我知道matlab本身有qr函数 但是我想知道利用householder变换递归实现的原理。的主要内容,如果未能解决你的问题,请参考以下文章

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

对矩阵进行QR分解的Matlab代码

对矩阵进行QR分解的Matlab代码

对矩阵进行QR分解的Matlab代码

matlab QR分解用啥算法实现的

matlab的QR分解函数QR()