You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sympy求和计算行列式报错:cannot determine truth value of Relational

解决Sympy中使用summation计算行列式时的TypeError问题

问题原因

当用符号变量i作为索引调用m.cofactor(i,0)时,cofactor方法内部会执行索引合法性检查(比如if i < 0:),但符号变量与数值的比较会返回**关系式(Relational)**而非布尔值,Sympy无法确定该关系式的真值,因此抛出TypeError: cannot determine truth value of Relational。

而直接访问m[i,0]可以正常运行,是因为Sympy矩阵支持符号索引的直接取值,但cofactor方法的实现并未兼容符号索引场景。

解决方案

由于索引范围仅为0-2,可以直接手动展开求和项,或用Python原生循环累加,避免使用符号变量作为cofactor的索引:

方案1:手动展开求和

from sympy import Matrix

m = Matrix([[3,  2, -1],
            [2, -1, -3],
            [1,  3, -2]])

# 按第一列展开计算行列式
D = m[0,0]*m.cofactor(0,0) + m[1,0]*m.cofactor(1,0) + m[2,0]*m.cofactor(2,0)
print(D)  # 输出28

方案2:Python循环累加

from sympy import Matrix

m = Matrix([[3,  2, -1],
            [2, -1, -3],
            [1,  3, -2]])

D = sum(m[k, 0] * m.cofactor(k, 0) for k in range(3))
print(D)  # 输出28

验证结果

两种方案的结果均与m.det()一致:

print(m.det())  # 输出28

内容的提问来源于stack exchange,提问作者mins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 20:15:34