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

Finding the Associated Eigenvector in Matlab

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

说明:

我的代码:

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 中 1 的相关特征值及其来自 Y 的相关特征向量。这产生 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,它已签出。显然,正确的值应该是我得到的负值。有人可以澄清一下吗?

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

An eigenvector or characteristic vector of a square matrix A is a non-zero vector v that, when multiplied with A, yields a scalar multiple of itself. [...] That is: Av = nv.

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

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

Matlab 输出归一化特征向量,即它们的长度 (norm(A8)) 等于 1。但是,正负版本仍然是 M 的特征向量。您可以通过创建结果的负版本并将其与 P 相乘来验证这一点,这将再次得到结果的负版本。