求助:试图通过分解为代数余子式的方式求解矩阵的行列式
mathematica吧
全部回复
仅看楼主
level 2
zzh161013 楼主
试图通过分解为代数余子式的方式求解矩阵的行列式,定义了相关函数,但函数执行结果不对。
f[lbk]A_, m_[rbk] :=
Module[lbk]{result = 0}, If[lbk]Length[lbk]A[rbk] == 2, result = FullSimplify[lbk]Det[lbk]A[rbk][rbk];
Return[lbk]result[rbk],
For[lbk]i = 1, i <= Length[lbk]A[rbk], i++,
result = result + (-1)^(i + m) A[lbk][lbk]i, m[rbk][rbk] f[lbk]Drop[lbk]A, {i}, {m}[rbk], 1[rbk][rbk];
Return[lbk]result[rbk][rbk][rbk]
2024年03月29日 12点03分 1
吧务
level 15

[冷]让你用For,把自己坑死了吧。For的头3个参数不是局部化的(这个看颜色就该看出来——不知道我在说啥的去看看《有的字母蓝,有的字母黑,你知道为什么吗?你对语法着色有认识》那帖),而你又没做手动局部化(这里再强调一遍:如果不知道Module有什么用,那么,请不要盲目使用),结果内层For循环把i给改大之后没重置,导致第一层只算了第一个子式。
顺便Return也是多余的。
最后:
Clear@f;
f[{{x_}}, _] := x
f[A_, m_] := Sum[(-1)^(i + m) A[[i, m]] f[Drop[A, {i}, {m}], 1], {i, Length@A}]
2024年04月06日 06点04分 2
1