我找到了一些用于查找矩阵行列式的 C++ 代码,适用于 4x4 到 8x8。它工作正常,但我的项目需要 18x18 或更大的矩阵,并且代码太慢。代码是递归的,但递归是处理 18x18 矩阵的正确概念吗?我还能如何找到行列式?
最佳答案
我假设您正在使用扩展 Laplace's formula 的 简单方法 .如果您想提高速度,可以使用 LU decomposition 分解矩阵 M
(分成两个上下对角矩阵),您可以在 2*n^3/3 FLOPS
中使用修改后的 Gauss-Jordan 消除来实现,然后将行列式计算为:
det(M) = det(L) * det(U)
,对于三角矩阵,这只是它们对角线元素的乘积。
这个过程仍然会比 O(n!)
更快。
编辑:你也可以使用Crout's method ,已被广泛实现。
关于c++ - 如何找到大矩阵的行列式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1886280/