matlab求矩阵的特征值

matlab求矩阵的特征值,第1张

matlab求矩阵的特征值如下:

第败衫一步matlab求矩阵特征值和特征向量是用eig函数,可肢禅以在命令行窗口中输入help eig,看一下eig函数用法

第二步进去matlab命令行窗口,输入x=[3 6 37 4 86 8 7],创建一个3行3列的矩阵

第三步输入[m,n]=eig(x),进行求x矩阵的特征值和特征向量,其中m矩阵的每一列值都是x矩阵的特征向量,这里已察饥腔经求出了x矩阵的3个特征向量

第四步n的对角元素值是x矩阵的特征值,输入diag(n),可以获取n矩阵的对角元素值,也就是求x矩阵的特征值

第五步按回车键之后,可以看到已经求出x矩阵的特征值了,根据需要使用

拓展说明:

在matlab中,还有个函数eigs,可以求特征向量和特征值的子集。

d = eigs(A)     %求稀疏矩阵A的6个绝对值最大特征值d,d以向量形式存放。

d = eigs(A,k)        %返回k个最大特征值

矩阵的特征值分解是非常重要的数学工具。在matlab中一般使用eig()函数完成矩阵特征值和特征向量的提取,其用法如下

结果如下:

显然eig()就是一般意义上的计算矩阵的特征值和特征向量

E = eig(A) 返回方阵A的所有特征值,构成列向量E。

[V,D] = eig(A) 返回方阵A的特征值和特征向量,其中特征值排满对角阵D的对角元素,对应的特征向量排列为方阵V的每一列。

而eigs()也能求取矩阵的特征值和特征向量,不过其返回的方阵幅值最大裂手蠢的6个特征值和特征向量,用法和eig()类似。不过eigs()通过迭代的方式来求解特征值,所以其在加快运算速度的同时降低了准确度。另外,一般eigs()处理的大型稀疏矩阵。

[V,D] = eigs(A) 返回方阵A的前6个最大肆陪特征特征值和特征向量。

[V,D] = eigs(A,k) 返回前k个最大特征值和特征向量。

一般情况下,eig()和eigs()返回的特征值是从大到小排列,然而这并不是一定的。经过测试,两者的特征值排序都可能为乱序,所以,在对顺序有要求的情况下,需要通过sort()函数来自动排序。

如下

按特征值大小排序结果如下:

John D'Errico设计了一个eigenshuffle.m函数能够得到排序后的特征值和特征向量。该方法排序方式为特征值大小降序排列薯桐。

速度测试:

结果:

显然eigenshuffle函数的速度比传统方法略低。

参考: https://cn.mathworks.com/matlabcentral/fileexchange/22885-eigenshuffle


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存