c++ - 如何找到大矩阵的行列式

标签 c++ matrix

我找到了一些用于查找矩阵行列式的 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/

相关文章:

c++ - 无法访问类的成员

c - 没有正确显示矩阵的转置?

matlab - MATLAB中对矩阵元素求和的方法有哪些?

c++ - 如何 enable_if 具有可变模板参数的类?

c++ - 具有相同主体不同名称的两个函数

c++ - boost deadline_timer 最小示例 : should I substitute "sleep"?

matlab - MATLAB 中矩阵的分块向量求和

python - numpy 将 RGB 图像转换为 YIQ 颜色空间

r - 协方差矩阵和相关矩阵之间的转换

c++ - 从输入中导出最小的正则表达式