使用显性特征值计算特征向量

问题描述:

我想问一些关于特征向量中心性的问题。 我必须使用功率迭代来计算特征值。这是我的代码来计算特征值:使用显性特征值计算特征向量

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 

从结果我们计算的特征向量使用三个特征值的分数。我的问题是如何计算特征向量分数,但只使用我们在功率迭代代码中获得的一个特征值分数?

功率迭代找到主导特征向量,即具有最大特征值的特征向量。

如果你开始

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是你的主要特征向量;

此外,我会从一个较小的例子开始测试你的代码。你的matlab调用[U,V] = eig(data_matrix);令人困惑,因为V应该是一个大小为[165 165]的对角矩阵,而不是大小为[3 3]的完整矩阵。

尝试这种情况:

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)