在Matlab中求关联特征向量
对于这个问题,我想大部分代码都是正确的。然而,正确的特征向量包含了我得到的负值 说明: 我的代码:在Matlab中求关联特征向量,matlab,eigenvector,eigenvalue,Matlab,Eigenvector,Eigenvalue,对于这个问题,我想大部分代码都是正确的。然而,正确的特征向量包含了我得到的负值 说明: 我的代码: 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
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)为:
当我把M乘以p,我得到p,这是正确的。显然,正确的值应该是我得到的负值。有人能澄清一下吗?这种行为是正确的。为了理解原因,我们需要了解特征向量的定义(来源:): 方阵a的特征向量或特征向量是非零向量v,当与a相乘时,产生自身的标量倍数。[…]即:Av=nv 其中,v是特征向量,n是相应的特征值 由于这些是线性运算,A*(kv)=n*(kv)用于任何非零标量k。这意味着,一个特征向量乘以一个系数k将是对应特征值的另一个特征向量 Matlab输出归一化特征向量,即其长度(
norm(A8)
)等于1。但是,正的和负的版本都是M
的特征向量。您可以通过创建结果的负版本并将其与P相乘来验证这一点,P将再次给出结果的负版本
0.1667
0.3333
0.3333
0.3333
0.5000
0.3333
0.1667
0.3333
0.3333
0.1667