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
相关产品推荐
相关产品推荐

