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