首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C++中快速实现矩阵对角化?

如何在C++中快速实现矩阵对角化?
EN

Stack Overflow用户
提问于 2013-10-26 04:54:30
回答 3查看 4.3K关注 0票数 2

我不知道该选择哪个库(适用于windows):LAPACK++、Armadillo、IT++、Eigen,或者其他库?

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

此外,我很高兴了解这些库的优缺点。

EN

回答 3

Stack Overflow用户

发布于 2013-12-02 07:25:13

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

因此,我的建议是,你可以通过放弃你正在寻找的信息的准确性或粒度来获得速度。

票数 4
EN

Stack Overflow用户

发布于 2013-12-02 03:19:52

你可能会对此持保留态度,但here是由Eigen的开发人员发布的一些基准测试。除了Eigen之外,我从未使用过任何其他线性代数库,但您的需求可能与我的不同。

票数 1
EN

Stack Overflow用户

发布于 2013-10-26 12:53:30

就寻找行列式而言,有许多不同的实现可以使用。一种是使用高斯消元法来创建上/下三角矩阵-这是有益的,因为您只需在对角线上相乘即可得到行列式。如果任何行或任何列最终归零,则行列式将为0,并且矩阵将不会有逆矩阵。您可以实际使用此方法,并使用单位矩阵扩充矩阵,然后执行完整的高斯-乔丹消元法,并将原始矩阵转换为单位矩阵,如http://www.mathportal.org/linear-algebra/matrices/gauss-jordan.php所示。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19599284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档