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

Sympy求解单变量双边方程时出现‘Add’ object is not callable报错求助

为什么Sympy代码报错‘Add’ object is not callable?

你的代码报错的核心问题是表达式中缺少乘法运算符:在lhs的分母部分,(3625511843314 - (y * 0.0931622))和(364312177802 - (1.02832244 * y))两个括号之间没有写*,SymPy会把后面的括号解析为对前面表达式的函数调用,但前面的Add对象(符号表达式的类型)并不是可调用的函数,因此抛出该错误。

另外,建议你用精确分数代替浮点数参与符号运算——浮点数会引入精度误差,可能干扰SymPy的求解过程。可以用sympy.Rational来定义精确的系数。

修正后的代码

from sympy import symbols, Eq, solve, Rational

y = symbols('y', positive=True)

# 用Rational替代浮点数,保证运算精度
coeff1 = Rational('0.0931622')
coeff2 = Rational('1.02832244')
coeff3 = Rational('1.001892')

lhs = ((y + 38916130600092) * (33005327976 + y * coeff1)) / ((3625511843314 - y * coeff1) * (364312177802 - coeff2 * y))
rhs = (674255588738 - coeff3 * y)/(692042851647 + coeff2 * y) 

eq1 = Eq(lhs, rhs) 
sol = solve(eq1)
print(sol)

如果确实需要使用浮点数,只需要补充缺失的*即可:

from sympy import symbols, Eq, solve

y = symbols('y', positive=True)

lhs = ((y + 38916130600092) * (33005327976 + (y * 0.0931622))) / ((3625511843314 - (y * 0.0931622)) * (364312177802 - (1.02832244 * y)))
rhs =  (674255588738 - (1.001892 * y))/(692042851647 + (1.02832244 * y)) 

eq1 = Eq(lhs, rhs) 
sol = solve(eq1)
print(sol)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:45:48