如何提取SymPy化简后二元线性方程的常数项及所有系数
提取SymPy化简后线性方程的常数项
你用coeff(-1)的方法不对,因为coeff()方法需要传入符号对象(比如x、y),而非数值。要提取线性表达式Ax + By + C里的常数项C,以下是几种可靠的解决方式:
方法1:代入x=0、y=0
直接将x和y替换为0,剩余部分即为常数项:
from sympy import symbols, simplify x, y = symbols('x y') expr = (x - 4.48e10)**2 + (y+1.047e11)**2 - (x + 1.346e11)**2 - (y + 5.23e10)**2 smpl = simplify(expr) # 提取常数项 constant_term = smpl.subs({x: 0, y: 0}) print(constant_term)
方法2:转换为多项式后获取常数项
把化简后的表达式转为多项式对象,直接调用方法提取常数项:
poly = smpl.as_poly() # 两种写法都可以 constant_term = poly.TC() # TC() 专门用于获取常数项 # 或 constant_term = poly.coeffs()[-1] print(constant_term)
方法3:用已提取的x/y系数反推
利用已拿到的x、y系数,从原表达式中减去Ax和By部分,剩余内容就是常数项:
x_coeff = smpl.coeff(x) y_coeff = smpl.coeff(y) constant_term = smpl - x_coeff*x - y_coeff*y print(constant_term)
以上方法都会输出你需要的7.88332e+21左右的结果(因浮点数精度问题,显示可能略有差异,比如7.88332000000000e+21)。
内容的提问来源于stack exchange,提问作者new-to-coding
相关产品推荐
相关产品推荐

