c - 如何找到更好的算法来计算非常大的矩阵的特征值和特征向量

标签 c eigenvector eigenvalue

我已经使用 Jacobi 方法在 C 代码中找到所有特征值和特征向量。虽然 Jacobi 方法的复杂度为 O(n^3),但我的矩阵维度很大 (17814 X 17814)。这需要很多时间。我想知道一个更好的算法来解决这个问题。如果需要,我可以附上我的 C 代码。

最佳答案

评论中建议的算法不一定是最好的。
如你所见here , Jacobi 方法在使用特殊技术时可以快得多。
最重要的是,Jacobi 非常容易并行运行,稀疏矩阵比密集矩阵快得多,因此您也可以利用它,具体取决于您的架构和您拥有的矩阵类型。

我想说,最好的办法是测试几种不同的方法,并在实践中看看哪里可以获得最佳结果。
O(n^2.376) 不一定优于 O(n^3),具体取决于常数。

关于c - 如何找到更好的算法来计算非常大的矩阵的特征值和特征向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29140073/

相关文章:

c++ - 将数组映射回现有的特征矩阵

swift - Swift 3.x 中的矩阵和对角化

c - 为程序的特定部分添加颜色 C 而不是 C++

c - const 在哪里降低性能而不是优化它?

运行 C 程序时核心转储

c - 复制二进制文件时何时使用 int 与 char 作为缓冲区?

python - 将 numpy lhs 单位特征向量乘以 numpy 矩阵

python - scipy.sparse.linalg.eigsh() 不会给出与 Matlab 的 eigs() 相同的结果,为什么?

numpy - 为什么特征向量与对应特征值的乘积不等于原矩阵与特征向量的乘积?