在Matlab中寻找相关的特征向量

时间:2015-01-31 05:11:39

标签: matlab eigenvector eigenvalue

对于这个问题,我认为我的大部分代码都是正确的。但是,正确的特征向量包含我所拥有的负值。

说明:

enter image description here

我的代码:

clear all; close all;

M = [0 1/4 1/4 0 0 0 0 0 0 0;
   1/2 0 1/4 1/4 1/6 0 0 0 0 0; 
   1/2 1/4 0 0 1/6 1/4 0 0 0 0; 
   0 1/4 0 0 1/6 0 1/2 1/4 0 0; 
   0 1/4 1/4 1/4 0 1/4 0 1/4 1/4 0; 
   0 0 1/4 0 1/6 0 0 0 1/4 1/2; 
   0 0 0 1/4 0 0 0 1/4 0 0; 
   0 0 0 1/4 1/6 0 1/2 0 1/4 0; 
   0 0 0 0 1/6 1/4 0 1/4 0 1/2; 
   0 0 0 0 0 1/4 0 0 1/4 0];

[Y, Z] = eig(M) % pull the first column of T

A8 = Y(:,1) % P

M*A8 % check

save ('A8.dat', 'A8', '-ascii')

我用,

[Y, Z] = eig(M)

在Z中找到与Z相关的特征向量中的1的相关特征值。这使得P(或A8)为:

0.1667
0.3333
0.3333
0.3333
0.5000
0.3333
0.1667
0.3333
0.3333
0.1667

当我将M乘以P时,我得到P,它会检出。显然,正确的值应该是我得到的负值。有人可以澄清吗?

1 个答案:

答案 0 :(得分:2)

这种行为是正确的。要理解原因,我们需要查看特征向量的定义(来源:wikipedia):

  

方矩阵A的特征向量或特征向量是非零向量v,当与A相乘时,产生其自身的标量倍数。 [...]那就是: Av = nv

其中 v 是特征向量, n 是对应的特征值。

由于这些是线性运算,对于任何非零,标量 k A *(kv)= n *(kv)。这意味着,特征向量乘以因子 k 将是对应特征值的另一个特征向量。

Matlab输出归一化的特征向量,即它们的长度(norm(A8))等于1.但是,正面和负面版本都是M的特征向量。您可以通过创建结果的否定版本并将其乘以P来验证这一点,这将再次为您提供结果的否定版本。