Numpy特征向量计算错误

may*_*wsw 2 python numpy eigenvalue

我正在使用numpy来获取矩阵的特征值/特征向量.我的矩阵是对称的和积极的.

> mat

  matrix([[ 1.,  1.,  0.,  0.,  0.,  0.,  0.],
          [ 1.,  2.,  0.,  0.,  0.,  0.,  0.],
          [ 0.,  0.,  1.,  0.,  0.,  0.,  0.],
          [ 0.,  0.,  0.,  2.,  1.,  1.,  0.],
          [ 0.,  0.,  0.,  1.,  2.,  1.,  0.],
          [ 0.,  0.,  0.,  1.,  1.,  1.,  0.],
          [ 0.,  0.,  0.,  0.,  0.,  0.,  1.]])
Run Code Online (Sandbox Code Playgroud)

我用,np.eigh 因为我的矩阵是对称的.

> import numpy.linalg as la
> la.eigh(mat)

  (array([ 0.27,  0.38,  1.  ,  1.  ,  1.  ,  2.62,  3.73]),
   matrix([[ 0.  , -0.85, -0.  ,  0.  ,  0.  ,  0.53,  0.  ],
          [ 0.  ,  0.53, -0.  ,  0.  ,  0.  ,  0.85,  0.  ],
          [ 0.  ,  0.  , -0.  ,  1.  ,  0.  ,  0.  ,  0.  ],
          [-0.33, -0.  , -0.71, -0.  , -0.  , -0.  , -0.63],
          [-0.33, -0.  ,  0.71, -0.  , -0.  , -0.  , -0.63],
          [ 0.89, -0.  , -0.  , -0.  , -0.  , -0.  , -0.46],
          [-0.  , -0.  , -0.  , -0.  ,  1.  , -0.  , -0.  ]]))
Run Code Online (Sandbox Code Playgroud)

我的问题是,这些价值中的许多都有错误的标志.特别是,主要的特征向量(矩阵中最右边的列)在它应该是正的时候都是负的.我已经对matlab和octave进行了检查.这只是一个精确的错误,还是我缺少的东西?

如果是错误,有没有办法检查这样的错误并纠正它?

编辑:此计算是枢纽和权威的一部分,上面的矩阵是A*A ^ T. 这是的结果的原始文件(见第9页,第10页),该轮毂分数收敛到A*A ^ T的主本征向量.最终,我们希望将这些中心分数相互比较,因此符号实际上很重要.

在第10页,该论文还说,"另外(作为推论),如果M只有非负条目,那么M的主要特征向量只有非负条目." 这就是我问这个问题的原因.

Mik*_*ham 8

特征向量的符号是任意的.据我所知,在这方面没有正确或错误的答案.