2

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

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

此外,我很乐意大致了解这些库的优缺点。

4

3 回答 3

4

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

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

于 2013-12-01T23:25:13.373 回答
1

您可能想对此持保留态度,但这里有一些 Eigen 开发人员发布的基准。除了 Eigen,我从未使用过任何其他线性代数库,但您的需求可能与我的不同。

于 2013-12-01T19:19:51.817 回答
-3

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

于 2013-10-26T04:53:29.533 回答