Я работаю над алгоритмом, который вычисляет детерминант любой 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
- но я был бы признателен, если бы кто-нибудь объяснил, что здесь не так с рекурсией?