【问题标题】:Generalized eigenvalue problem广义特征值问题
【发布时间】:2011-07-19 13:31:57
【问题描述】:
我正在尝试将广义特征值问题转换为正常的特征值计算。
我有这个代码:
[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
我错过了什么吗?
谢谢!!
【问题讨论】:
标签:
matlab
linear-algebra
eigenvector
eigenvalue
【解决方案1】:
一个简单的例子:
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
注意:特征值的排序并不总是相同的,符号约定也可能不同......
【解决方案2】:
首先检查T 是否可逆。其次,我确定D = D1 和V = V1 达到比例因子。检查V1 的每一列是否与V 的对应列相同,达到比例因子(即查看V./V1)。