%已知矩阵: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的好处就是能够一次性将特征值和特征向量求取出来,缺点就是矩阵必须是实对称矩阵,至于算法复杂度方面我没有进行测试。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)