2011-07-19 20 views
2

一般化固有値問題を通常の固有値計算に変換しようとしています。一般化固有値問題

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

が、私は同じ結果を得るべきではない:私はに変換今

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

私はこのコードを持っていますか?私は、MATLABドキュメントの理解どのようなことから、最初の方程式は解く:

A*V = B*V*D 

2つ目は、解決します

A*V = V*D 

私は何かが足りないのですか?

ありがとうございます!

+0

されています'T'は可逆ですか? – Jacob

+1

はい、対角行列です – Sara

答えて

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 

注:固有値は常に同じにソートされていない、また、符号規則は異なる場合があります...

0

まず、Tが可逆であるかどうかを確認します。第二に、私は確かにD = D1とそのスケールファクタまでのV = V1です。 V1の各列が、対応する列のVと同じであるかどうかを確認します(つまり、V./V1を参照)。

関連する問題