MATLAB中的广义特征向量?

时间:2012-10-01 11:29:57

标签: matlab

是否有一种方法可以获得广义特征向量,以获得具有单个或至少极少数命令的高多重特征值?如果每个特征值的多重性为1,我可以使用[V,D] = eig(A),但此命令不适用于多个特征值。

1 个答案:

答案 0 :(得分:4)

根据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)