【问题标题】:Eigen values and vectors calculation error in pythonpython中的特征值和向量计算错误
【发布时间】:2019-10-06 02:36:39
【问题描述】:

我正在尝试以特定格式获取任何矩阵“X”的特征向量和值。我使用linalg 函数来获取特征对,但预期的输出格式与我的结果不同。例如,ve 表示特征值和特征向量。 v1 = 1, e1 = [1,0,0], v2 = 2, e2 = [0,1,0], v3 = 3, e3 = [0,0,1].

所以在这个例子中,矩阵 X 的特征对应该是@​​987654330@。 这里P[0]代表第一个特征对(1,[1,0,0]),其中特征值为1,特征向量为[1,0,0]

你能帮我进一步编码这部分吗?

e,v = np.linalg.eigh(X)

【问题讨论】:

    标签: python numpy matrix eigenvalue eigenvector


    【解决方案1】:

    np.linalg.eigh

    首先,应该注意np.linalg.eigh 计算 Hermitian 矩阵的特征值——这不适用于所有矩阵。如果你想计算任何矩阵X 的特征值,你可能应该切换到np.linalg.eig 之类的东西:

    import numpy as np
    
    L = np.diag([1,2,3])
    V = np.vstack(([1,0,0],[0,1,0],[0,0,1]))
    
    # X = V@L@V.T (eigendecomposition)
    X = V@L@V.T
    
    w,v = np.linalg.eig(X)
    assert (np.diag(w) == L).all()
    assert (v == V).all()
    

    特征对

    要构造特征对,只需使用一些列表推导:

    import numpy as np
    
    # X = V@L@V.T (eigendecomposition)
    X = np.diag([1,2,3])
    
    w,v = np.linalg.eig(X)
    
    Ep = [(val,vec.tolist()) for val,vec in zip(w,v)]
    

    享受吧!

    【讨论】:

    • 嗨@soyapencil,感谢您的意见。我仍然收到'w'的断言错误。断言类型(w)== np.ndarray AssertionError
    • 糟糕!上面的一些小错误。现在都修好了。
    猜你喜欢
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    相关资源
    最近更新 更多