在MATLAB中求矩阵特征值和特征向量的代码
以下面这个矩阵
A=
3 -1 -2
2 0 -2
2 -1 -1
要完整的写出代码 展开
>>clc;clear;close;
>>A=[3,-1,-2;2,0,-2;2,-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的好处就是能够一次性将特征值和特征向量求取出来,缺点就是矩阵必须是实对称矩阵,至于算法复杂度方面我没有进行测试。
matlab具体代码如下:
>>clc;
>>clear;
>>close;
>>A=[3,-1,-2;2,0,-2;2,-1,-1];
>>[X,B]=eig(A)
代码中最后一行指的是求矩阵A的特征值和特征向量,其中B的对角线元素是特征值,而X的列即为相应的特征向量。
扩展资料:
求特征值:
描述正方形矩阵的特征值的重要工具是特征多项式,λ是A的特征值等价于线性方程组(A – BI) v = 0 (其中I是单位矩阵)有非零解v (一个特征向量),因此等价于行列式|A – BI|=0 [1] 。
函数p(B) = det(A – BI)是B的多项式,因为行列式定义为一些乘积的和,这就是A的特征多项式。矩阵的特征值也就是其特征多项式的零点。
一个矩阵A的特征值可以通过求解方程pA(B) = 0来得到。 若A是一个n×n矩阵,则pA为n次多项式,因而A最多有n个特征值。 反过来,代数基本定理说这个方程刚好有n个根,如果重根也计算在内的话。所有奇数次的多项式必有一个实数根,因此对于奇数n,每个实矩阵至少有一个实特征值。在实矩阵的情形,对于偶数或奇数的n,非实数特征值成共轭对出现。
求特征向量:
一旦找到两两互不相同的特征值B,相应的特征向量可以通过求解方程(A – BI) v = 0 得到,其中v为待求特征向量,I为单位阵。
当特征值出现重根时,如B1=B2,此时,特征向量v1的求解方法为(A-B1I)v1=0,v2为(A-B2I)v2=v1,依次递推。
没有实特征值的一个矩阵的例子是顺时针旋转90度。
参考资料:百度百科——特征向量
>>clc;clear;close;
>>A=[3,-1,-2;2,0,-2;2,-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
拓展内容:
MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国
mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
求矩阵特征值和特征向量的方法特征多项式