我有带有实值特征系统的非对称实值矩阵。如何有效地计算特征向量?
使用scipy.linalg.eig(which calls dgeev) 比 (=> ) 慢 3-4 倍,比scipy.linalg.eigh(=> )dsyevd慢 2倍,但 SVD 和 Hermitian 特征值分解在这里都不合适。我猜想支持复杂值存储的需要是造成额外开销的原因。对于具有实值特征值分解的矩阵,是否有更快的例程?scipy.linalg.svdgesdd
我有带有实值特征系统的非对称实值矩阵。如何有效地计算特征向量?
使用scipy.linalg.eig(which calls dgeev) 比 (=> ) 慢 3-4 倍,比scipy.linalg.eigh(=> )dsyevd慢 2倍,但 SVD 和 Hermitian 特征值分解在这里都不合适。我猜想支持复杂值存储的需要是造成额外开销的原因。对于具有实值特征值分解的矩阵,是否有更快的例程?scipy.linalg.svdgesdd
诀窍是试图找出为什么该矩阵首先具有真正的特征值。通常是因为一组合适的共轭把它变成一个对称矩阵,然后你可以减少到一个对称计算。
乘除以可以改写
所以你的计算相当于求特征值 of然后计算。显然的特征值等于的特征值。如果是 Cholesky 分解,则它们等于的特征值,这是对称的。答对了。
对于特征向量,相同的计算表明如果是的特征向量,则是的特征向量,因此也是的特征向量。
编辑:哎呀,最后一部分确实需要倒数。