algorithm - 一种计算 n*n 矩阵 : 行列式的数学算法

标签 algorithm wolfram-mathematica

我正在研究一种计算任何 n*n 矩阵的行列式的算法,这是我的代码:

 Laplace[matrix_List] := Module[{a = matrix, newmatrix, result = 0},
     If [Length[a] == 1, result = Total[Total[a]],
         For [i = 1, i <= Length[a], i++,
              newmatrix = Drop[a, {i}, {1}];
              result = result + (-1)^(i + 1) *
                       Total[Total[Take[a, {i}, {1}]]]*
                       Laplace[newmatrix]; 
         ]
     ]; result]

它递归地工作,它适用于 2*2 矩阵(我已经用 Det[] 检查过), 但它不适用于任何高于 2 的矩阵!

我想自己解决这个解决方案 - 我想自己实现这个,而不是简单地使用 Det - 但如果有人能在这里解释递归有什么问题,我将不胜感激?

最佳答案

你不应该用递归的方式计算行列式,它会花费很多时间。最简单的方法是取第一列,看看是否有不同于 0 的元素。如果没有,则行列式等于 0。否则取该元素,矩阵中的每一行都与所选元素不同元素减去所选元素的线乘以当前线的第一个元素的对称性。该减法应该为您留下一条以 0 作为其第一个元素的行。然后,您可以消除所选元素的第一列和行,并将 n-1 顺序行列式与 (-1)^(line_index+column_index)*chosen_element 相乘。

关于algorithm - 一种计算 n*n 矩阵 : 行列式的数学算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9044834/

相关文章:

algorithm - 快速双向加密的建议?

java - 查找二维数组中的节点位置

algorithm - 如何找到通过连接任何一对点创建的具有最大斜率的线段?

algorithm - 是否有任何有效的算法可以找到无向图中最长循环的长度?

wolfram-mathematica - 在 Mathematica 中测试 Null 和非 Null

function - Mathematica 中的递归函数

graph - Mathematica 中具有特定分支因子的随机树

python - Mathematica 中的临时变量

c++ - 快速排序的改进

wolfram-mathematica - 求解二次方程组