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

使用Python求解单变量方程结果偏差问题排查

热力学方程求解结果与预期不符的排查思路

我尝试求解两个热力学方程(E15.4A + E15.4B)= 2.044×10⁶的单变量方程,预期解为t=4910,但运行以下Python代码后得到的结果存在偏差,不清楚问题所在:

R = 8.314
AC = 5.457 #ACO2
BC = 1.045e3 #BCO2
DC = -1.157e-5 #DCO2
AH = 3.47 #AH2O
BH = 1.45e3 #BH2O
DH = 0.121e-5 #DH2O
t = symbols('x')
eq1 = Eq(3*R*(AC*(t-298)+BC/2*(t**2-298**2)-DC*(1/t-1/298))+\
     4*R*(AH*(t-298)+BH/2*(t**2-298**2)-DH*(1/t-1/298))-2.044e6,4900)

sol = solve(eq1)
print(sol)

可能的问题排查方向

  • 方程构造逻辑错误:根据描述,目标应为 E15.4A + E15.4B = 2.044×10⁶,但代码中构造的是 (E15.4A + E15.4B) - 2.044e6 = 4900,相当于把等式右侧额外加了4900,这和预期目标完全不符。建议将方程改为 Eq(3*R*(...) + 4*R*(...) - 2.044e6, 0) 再尝试求解。
  • 热容积分项符号验证:检查热力学公式中热容积分的符号是否匹配。如果原方程中DC、DH是Cp = A + B*T + C/T²的系数,积分∫Cp dT从298到t时,C/T²的积分结果应为C*(1/298 - 1/t),代码中-DC*(1/t - 1/298)的写法是对的,但如果DC本身的符号标注错误(比如实际应为正),会导致计算偏差。
  • 解的数值转换与筛选:solve返回的可能是符号形式的解或多个根,建议将结果转换为浮点数查看:print([s.evalf() for s in sol]),并筛选符合物理意义的正温度值。
  • 单位一致性检查:确认所有参数单位统一,R=8.314的单位是J/(mol·K),2.044e6的单位如果是kJ,需要换算为2.044e9 J,否则会导致数量级偏差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:25:32