我有一个非常大的方阵矩阵,大约100000,我想知道该矩阵的行列式值是否为零。
最快的方法是什么?
我必须在C ++中实现它
答案 0 :(得分:1)
假设您正在尝试确定矩阵是否为非单数,您可能需要查看此处:
正如评论中所提到的,最好使用某种BLAS库来为你做这件事,例如Boost::uBLAS
。
答案 1 :(得分:1)
通常,这种大小的矩阵极其稀疏。使用行和列重新排序算法将条目集中在对角线附近,然后使用QR分解或LU分解。第二个因子的对角线条目的乘积是 - 直到QR情况下的符号 - 行列式。这可能仍然过于恶劣,通过执行奇异值分解获得秩的最佳结果。但是,SVD更贵。
答案 2 :(得分:0)
有一个属性,如果任何两行相等或一行是另一行的常数倍,我们可以说该矩阵的行列式为零。它也适用于列。
答案 3 :(得分:0)
据我所知,你的应用程序不需要计算行列式,但矩阵的等级足以检查方程组是否具有非平凡的解: -