广义特征值问题

时间:2011-07-19 13:31:57

标签: matlab linear-algebra eigenvector eigenvalue

我正在尝试将广义特征值问题转换为正常的特征值计算。

我有这段代码:

[V,D,flag] = eigs(A, T);

现在我将其转换为:

A1 = inv(T)*A;
[V1,D1,flag1] = eigs(A1);

我不应该得到相同的结果吗?根据我在Matlab文档中的理解,第一个等式解决了:

A*V = B*V*D

,第二个解决了:

A*V = V*D
我错过了什么吗?

谢谢!

2 个答案:

答案 0 :(得分:5)

一个简单的例子:

A = rand(4); B = randn(4); B = B'*B;         %'# some matrices
[VV,DD] = eig(B\A);
[V,D] = eigs(A,B);
V = bsxfun(@rdivide, V, sqrt(sum(V.*V)));    %# make: norm(V(:,i))==1

结果:

V =
     -0.64581       0.8378      0.77771      0.50851
      0.70571     -0.51601     -0.32503     -0.70623
      0.27278     0.076874     -0.51777      0.25359
      0.10245      0.16095     -0.14641     -0.42232
VV =
     -0.64581       0.8378     -0.77771     -0.50851
      0.70571     -0.51601      0.32503      0.70623
      0.27278     0.076874      0.51777     -0.25359
      0.10245      0.16095      0.14641      0.42232
D =
       17.088            0            0            0
            0      0.27955            0            0
            0            0     -0.16734            0
            0            0            0     0.027889
DD =
       17.088            0            0            0
            0      0.27955            0            0
            0            0     -0.16734            0
            0            0            0     0.027889

注意:特征值并不总是排序相同,符号约定也可能不同......

答案 1 :(得分:0)

首先检查T是否可逆。其次,我确信D = D1V = V1达到比例因子。检查V1的每一列是否与V的相应列相同,直至比例因子(即查看V./V1)。