【问题标题】:eigenvectors created by numpy.linalg.eig don't seem correctnumpy.linalg.eig 创建的特征向量似乎不正确
【发布时间】:2015-12-31 19:49:59
【问题描述】:

我创建了一个任意的 2x2 矩阵:

In [87]: mymat = np.matrix([[2,4],[5,3]])

In [88]: mymat
Out[88]: 
matrix([[2, 4],
        [5, 3]])

我尝试使用 numpy.linalg.eig 计算特征向量:

In [91]: np.linalg.eig(mymat)
Out[91]: 
(array([-2.,  7.]),
 matrix([[-0.70710678, -0.62469505],
        [ 0.70710678, -0.78086881]]))

In [92]: eigvec = np.linalg.eig(mymat)[1][0].T

In [93]: eigvec
Out[93]: 
matrix([[-0.70710678],
        [-0.62469505]])

我将我的一个特征向量与我的矩阵相乘,期望结果是一个向量,该向量是我的特征向量的标量倍数。

In [94]: mymat * eigvec
Out[94]: 
matrix([[-3.91299375],
        [-5.40961905]])

然而事实并非如此。谁能向我解释这里出了什么问题?

【问题讨论】:

    标签: python numpy matrix eigenvector


    【解决方案1】:

    来自linalg.eig 的文档:

    v : (..., M, M) 数组
    归一化(单位“长度”)特征向量,使得 列v[:,i] 是对应的特征向量 特征值w[i].

    你想要的是列,而不是行。

    >>> mymat = np.matrix([[2,4],[5,3]])
    >>> vals, vecs = np.linalg.eig(mymat)
    >>> vecs[:,0]
    matrix([[-0.70710678],
            [ 0.70710678]])
    >>> (mymat * vecs[:,0])/vecs[:,0]
    matrix([[-2.],
            [-2.]])
    >>> vecs[:,1]
    matrix([[-0.62469505],
            [-0.78086881]])
    >>> (mymat * vecs[:,1])/vecs[:,1]
    matrix([[ 7.],
            [ 7.]])
    

    【讨论】:

      【解决方案2】:

      不,这是真的。 numpy 无法正常工作。示例:

      A
      Out[194]: 
      matrix([[-3,  3,  2],
              [ 1, -1, -2],
              [-1, -3,  0]])
      
      E = np.linalg.eig(A)
      
      E
      Out[196]: 
      (array([ 2., -4., -2.]),
       matrix([[ -2.01889132e-16,   9.48683298e-01,   8.94427191e-01],
               [  5.54700196e-01,  -3.16227766e-01,  -3.71551690e-16],
               [ -8.32050294e-01,   2.73252305e-17,   4.47213595e-01]]))
      
      A*E[1] / E[1]
      Out[205]: 
      matrix([[ 6.59900617, -4.        , -2.        ],
              [ 2.        , -4.        , -3.88449298],
              [ 2.        ,  8.125992  , -2.        ]])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-02
        • 1970-01-01
        • 1970-01-01
        • 2013-09-17
        • 1970-01-01
        相关资源
        最近更新 更多