对于这个问题,我认为我的大部分代码都是正确的。但是,正确的特征向量包含我所拥有的负值。
说明:
我的代码:
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,它会检出。显然,正确的值应该是我得到的负值。有人可以澄清吗?
答案 0 :(得分:2)
这种行为是正确的。要理解原因,我们需要查看特征向量的定义(来源:wikipedia):
方矩阵A的特征向量或特征向量是非零向量v,当与A相乘时,产生其自身的标量倍数。 [...]那就是: Av = nv 。
其中 v 是特征向量, n 是对应的特征值。
由于这些是线性运算,对于任何非零,标量 k , A *(kv)= n *(kv)。这意味着,特征向量乘以因子 k 将是对应特征值的另一个特征向量。
Matlab输出归一化的特征向量,即它们的长度(norm(A8)
)等于1.但是,正面和负面版本都是M
的特征向量。您可以通过创建结果的否定版本并将其乘以P来验证这一点,这将再次为您提供结果的否定版本。