MATLAB eig()和eigs()函数的用法(附带实例)
在 MATLAB 中,利用 eig() 函数与 eigs() 函数可以求矩阵的特征值和特征向量的数值解。
eig() 函数的调用格式如下:
利用 eigs() 函数可以求特征值和特征向量的子集,由于 eigs() 函数采用迭代法求解,因此在规模上最多只给出 6 个特征值和特征向量。该函数的调用格式如下:
【实例】求矩阵 A 的特征值和特征向量。在命令行窗口中输入以下语句,并查看输出结果。
矩阵 A 的某个特征值对应的特征向量不是有限的,更不是唯一的,而是无穷的。所以,上例中结果只是一个代表而已。
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 的某个特征值对应的特征向量不是有限的,更不是唯一的,而是无穷的。所以,上例中结果只是一个代表而已。