【发布时间】:2012-10-01 23:07:37
【问题描述】:
在使用单个或至少很少的命令的特征值的高度多重性的情况下,有没有办法获得广义特征向量?如果每个特征值的多重性为 1,我可以使用 [V,D] = eig(A),但此命令不适用于多个特征值。
【问题讨论】:
标签: matlab
在使用单个或至少很少的命令的特征值的高度多重性的情况下,有没有办法获得广义特征向量?如果每个特征值的多重性为 1,我可以使用 [V,D] = eig(A),但此命令不适用于多个特征值。
【问题讨论】:
标签: matlab
根据 Matlab 文档,[V,D] = eig(A,B) 产生一个广义特征值的对角矩阵 D 和一个完整矩阵 V,其列是相应的特征向量,因此 A*V = B*V*D
这里举个例子如何自己做...首先我们输入一个样本矩阵A:
A = [ 35 -12 4 30 ;
22 -8 3 19 ;
-10 3 0 -9 ;
-27 9 -3 -23 ];
然后我们探索它的特征多项式、特征值和特征向量。
poly(A)
ans =
1.0000 -4.0000 6.0000 -4.0000 1.0000
这些是特征多项式的系数,因此是 (λ − 1)^4 那么
[V, D] = eigensys(A)
V =
[ 1, 0]
[ 0, 1]
[-1, 3]
[-1, 0]
D =
[1]
[1]
[1]
[1]
因此 MATLAB 只找到两个独立的特征向量
w1 = [1 0 -1 -1]';
w2 = [0 1 3 0]';
与单一多重性 4 特征值 λ=1 相关,因此具有缺陷 2。
所以我们建立了4x4单位矩阵和矩阵B=A-λI
Id = eye(4);
B = A - L*Id;
当L=1时,当我们计算B^2和B^3时
B2 = B*B
B3 = B2*B
我们发现B2≠0,但B3 = 0,所以应该有一个长度为3的链与
特征值 λ = 1 。选择第一个广义特征向量
u1 = [1 0 0 0]';
我们计算进一步的广义特征向量
u2 = B*u1
u2 =
34
22
-10
-27
和
u3 = B*u2
u3 =
42
7
-21
-42
因此我们根据(普通)找到了长度为 3 的链 {u3, u2, u1} 特征向量 u3。 (为了协调这个结果与 MATLAB 的 eigensys 计算,您 可以检查 u3-42w1=7w2)
【讨论】:
eigensys 不再存在。 eig(sym(A)) 可以用作替代品,尽管输出不会完全匹配。此外,poly 的替代方法是 charpoly,它返回符号结果。