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

Sympy中Expr.coeff()处理含分母表达式时返回0的原因咨询

问题原因及解决方法

在Sympy里,coeff(x)方法默认是把表达式当作关于x的整式多项式来提取系数——也就是说,它只会识别那些系数是“不含x的整式”的x项。当你把x+2除以y后,表达式变成x/y + 2/y,这里x的系数是1/y,属于分式而非整式,所以coeff(x)会直接返回0,因为它找不到符合要求的整式系数。

正确提取系数的方法

方法1:用Poly类处理有理函数域上的多项式

把表达式看作x的多项式,允许系数是包含y的有理函数,用Poly类来提取:

from sympy import Poly
from sympy.abc import x, y
eq = x + 2
expr = eq/y
# 将表达式视为x的多项式,系数域包含y
poly = Poly(expr, x)
# 获取x项的系数
print(poly.coeffs()[0])  # 输出 1/y

方法2:手动分离项提取系数

先展开表达式,再分离出含x的项,除以x得到系数:

from sympy import *
from sympy.abc import x, y
eq = x + 2
expr = expand(eq/y)  # 得到 x/y + 2/y
# 遍历展开后的项,找到含x的项
for term in expr.args:
    if x in term.free_symbols:
        coeff = term / x
        print(coeff)  # 输出 1/y
        break

方法3:使用as_coeff_Add快速分离

利用as_coeff_Add把常数项和含变量的项分开,再提取x的系数:

from sympy import *
from sympy.abc import x, y
eq = x + 2
expr = eq/y
# 分离常数部分和含变量的部分
const_part, var_part = expr.as_coeff_Add()
# 从含变量的部分提取x的系数
x_coeff = var_part / x
print(x_coeff)  # 输出 1/y

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 08:12:39