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

Sympy中方程代入报错:TypeError: Relational can not be used in Mul 求解

解决SymPy中方程代入时的TypeError问题

你遇到的错误根源在于:直接将sympy.Eq类型的等式对象(即volume)传入subs方法,但subs仅接受表达式作为替换值,而非关系型对象(Relational),因此触发了TypeError: Relational can not be used in Mul。

解决方案:从等式中解出变量的表达式再代入

无需手动改写公式,只需通过SymPy的solve方法从体积等式中解出h的显式表达式,再将该表达式代入表面积公式即可:

import sympy

r, h = sympy.symbols('r h')

# 定义体积等式
volume = sympy.Eq(sympy.pi*r**2*h, 355)
# 从等式中解出h的表达式(solve返回列表,取第一个元素)
h_expr = sympy.solve(volume, h)[0]

# 定义表面积公式
areaSup = 2*sympy.pi*r*h + 2*sympy.pi*r**2
# 代入h的表达式
areaSup = areaSup.subs(h, h_expr)

# 可选:简化表达式并输出
print(areaSup.simplify())

说明

  • sympy.solve(volume, h)会返回所有满足等式的h的解,这里因为是一元一次方程,所以列表只有一个元素。
  • 用解出的表达式代入,既避免了手动改写公式的出错风险,又能保证计算的准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:25:19