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

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

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 01 0 4 0 0 00 1 0 3 0 00 0 1 0 2 00 0 0 1 0 10 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

0.6167

>>clcclearclose

>>A=[3,-1,-22,0,-22,-1,-1]

>>[X,B]=eig(A) %求矩阵A的特征值和特征向量,其中B的对角线元素是特征值,

%X的列是相应的特征向量

最后的结果是:

X =

0.7276 -0.5774 0.6230

0.4851 -0.5774 -0.2417

0.4851 -0.5774 0.7439

B =

1.0000 0 0

0 0.0000 0

0 0 1.0000

扩展资料:

特征值和特征向量的求解根据项目的需求或者是矩阵的具体形式,主要可以分成如下三种形式:

1、只需要获得矩阵的最大特征值和特征值所对应的特征向量。

2、需要求取矩阵的所有特征值。

3、需要求取特征值和特征向量的矩阵为实对称矩阵,则可以通过另一种方法进行求解。

这三种形式特征值和特征向量的求取:

1.如果自己仅仅要求最大特征值的话肯定采用形式1的算法,该算法的优点是时间复杂度较低,计算量相对较小,该方法不但能够求取特征值和特征向量,而且只要特征值不全为0,该方法都能获得想要的结果。

2.如果需要获得一个矩阵的所有特征值,则通过形式2可以很好的解决该问题,但是该方法的缺点是仅仅能够获得特征值,获得特征值之后利用其它方法进行求解,这样做自然而然计算量就大了起来。

3.如果矩阵为实对称矩阵,那么可以通过形式3对其进行特征值和特征向量的求取,该方法相对于形式2的好处就是能够一次性将特征值和特征向量求取出来,缺点就是矩阵必须是实对称矩阵,至于算法复杂度方面我没有进行测试。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12098694.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存