c++ - 如何在 C++ 中快速对角化矩阵?

标签 c++ linear-algebra eigen armadillo diagonal

我不知道选择哪个库(对于 Windows):LAPACK++、Armadillo、IT++、Eigen,还是其他库?

我需要做的就是检查一个大的(大约10,000*10,000)矩阵是否可对角化,如果是的话,得到对角线和可逆矩阵,使得D=(P^(-1))*A *P。这必须尽快完成。我不知道该使用哪个库。

此外,我很高兴总体上了解每个库的优缺点。

最佳答案

这可能是一个相当模糊的答案,因为我不知道您遇到的确切问题是什么,但通常情况下您实际上并不需要所有这些信息,即您只关心一个矩阵的能量最大的特征值;至于其余的 - 如果特征值是 0.001(可对角化矩阵)还是 0.000(不可对角化矩阵),这真的很重要吗?对于许多现实世界(甚至理论)应用来说,答案是“并非如此”。

因此,我的建议是,您可以通过放弃所需信息的准确性粒度来提高速度

关于c++ - 如何在 C++ 中快速对角化矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19599284/

相关文章:

c++ - 对于单精度矩阵运算,AVX 与 SSE 的 Eigen 性能没有差异?

c++ - 如何使用动态加载函数(dlopen)操作/返回数据?

c++ - 特定构造函数的预设模板参数

optimization - 在 numpy 中向量化 linalg.eig()

Haskell 线性代数库与同类类具有多态性 *

c++ - 对于矩阵乘法,Eigen + MKL 比 Matlab 慢

c++ - 通用特征矩阵/vector 对象转移到自定义矩阵/vector 容器

c++ - 如何加快将文本文件加载到多 vector

c++ - BST 递归解决方案中的第 K 个最小元素

c++ - 为什么添加 `const` 会使通用引用成为右值