首页 > 编程笔记 > MATLAB笔记 阅读:4

MATLAB eig()和eigs()函数的用法(附带实例)

在 MATLAB 中,利用 eig() 函数与 eigs() 函数可以求矩阵的特征值和特征向量的数值解。

eig() 函数的调用格式如下:
e=eig(A) % 返回一个列向量,其中包含方阵 A 的特征值
[V,D]=eig(A) % 返回特征值的对角矩阵 D 和矩阵 V,其列是对应的右特征向量,使得 AV=VD
[V,D,W]=eig(A) % 额外返回满矩阵 W,其列是对应的左特征向量,使得 W'A=DW'
e=eig(A,B) % 返回一个列向量,其中包含方阵 A 和 B 的广义特征值
[V,D]=eig(A,B) % 返回广义特征值的对角矩阵 D 和矩阵 V,其列是对应的右特征向量,使得 AV=BV*D
[V,D,W]=eig(A,B) % 额外返回满矩阵 W,其列是对应的左特征向量,使得 W'A=DW'*B

利用 eigs() 函数可以求特征值和特征向量的子集,由于 eigs() 函数采用迭代法求解,因此在规模上最多只给出 6 个特征值和特征向量。该函数的调用格式如下:
d=eigs(A)               % 返回一个向量,其中包含矩阵 A 的 6 个模最大的特征值
d=eigs(A,k)            % 返回 k 个模最大的特征值
[V,D]=eigs(___)         % 返回对角矩阵 D 和矩阵 V
                         % 前者包含主对角线上的特征值,后者的各列中包含对应的特征向量

【实例】求矩阵 A 的特征值和特征向量。在命令行窗口中输入以下语句,并查看输出结果。
>> A=[1 -3 3; 3 -5 3; 6 -6 4]
A =
     1    -3     3
     3    -5     3
     6    -6     4
>> e=eig(A)
e =
     4.0000
    -2.0000
    -2.0000
>> [V,D]=eig(A)
V =
   -0.4082   -0.8103    0.1933
   -0.4082   -0.3185   -0.5904
   -0.8165    0.4918   -0.7836
D =
     4.0000         0         0
          0   -2.0000         0
          0         0   -2.0000
矩阵 D 用对角线方式给出了矩阵 A 的特征值:λ1=4,λ2=λ3=-2。而与这些特征值相应的特征向量则由 X 的各列来代表,X 的第 1 列是 λ1 的特征向量,第 2 列是 λ2 的特征向量。

矩阵 A 的某个特征值对应的特征向量不是有限的,更不是唯一的,而是无穷的。所以,上例中结果只是一个代表而已。

相关文章