在MATLAB中求矩阵特征值和特征向量的代码

在MATLAB中求矩阵特征值和特征向量的代码,第1张

>>clcclearclose

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

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

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

最后的结果是:

X=

0.7276-0.57740.6230

0.4851-0.5774-0.2417

0.4851-0.57740.7439

B=

1.000000

00.00000

001.0000

扩展资料:

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

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

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

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

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

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

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

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

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


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

原文地址:https://54852.com/yw/12467955.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存