1

固有ベクトルの中心性について質問したいと思います。累乗反復を使用して固有値を計算する必要があります。これは、固有値を計算するための私のコードです:

  v=rand(165,1);
    for k=1:5
        w = data_table*v;
        lamda = norm(w);
        v = w/lamda;

    end

単一の固有値を取得したときに、取得した単一の固有値を使用して固有ベクトル スコアを計算するのに混乱しました。たとえば、固有値を計算するコードでは、優勢な固有値 = 78.50 が得られます。この固有値スコアを使用して、固有ベクトル スコアを計算します。通常、次のようなコードを使用して常に固有値と固有ベクトルを計算します。 [U,V] = eig(data_matrix); しかし、そのコードの結果:

v = 
-167.59 0   0

0   -117.51 0

0   0   -112.0


V = 
0.0404505   0.04835455  -0.01170

0.0099050   -0.0035217  -0.05561

0.0319591   -0.0272589  0.018426

その結果から、3 つの固有値スコアを使用して固有ベクトルを計算します。私の質問は、固有ベクトル スコアを計算する方法ですが、ベキ反復コードで取得した固有値スコアを 1 つだけ使用するだけですか?

4

1 に答える 1

1

累乗反復は、最大の固有値を持つ固有ベクトルである支配的な固有ベクトルを見つけます。

から始める場合

v=ones(165,1)/165;     % initialisation
for i=1:5              % 5 iterations
    w=data_table*v;    % assuming size(data_table) = [165 165]
    v=w/norm(w);
end

アルゴリズムが 5 回の反復で収束する場合、v は支配的な固有ベクトルです。

また、コードをテストするための小さな例から始めます。[U,V] = eig(data_matrix);V はサイズ [3 3] の完全な行列ではなく、サイズ [165 165] の対角行列でなければならないため、matlab の呼び出しは混乱を招きます。

これを試して:

X=[1 1 1;1 1 2;1 2 2]
[U,V]=eig(X)
X*U(:,3)
U(:,3)*V(3,3)

matlab 出力の最大の固有値、つまり (V3,3) と対応するベクトル U(:,3) を確認します。

べき乗反復を使用して、この固有ベクトルを見つけます。

 v=ones(1,3)
 w=v*X;v=w/norm(w)
 w=v*X;v=w/norm(w)
 w=v*X;v=w/norm(w)
 w=v*X;v=w/norm(w)
于 2013-04-24T12:07:51.003 に答える