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

如何用SymPy展开含可变指数的多项式并求指定项系数?

如何用SymPy求带符号指数多项式的特定项系数

别担心,基础问题完全没问题😉。你遇到的情况是因为当n是符号整数变量时,SymPy的expand函数不会自动展开(x²+x+1)^n——毕竟它不知道n的具体值,没法生成有限项的展开式。不过我们有两种方法可以解决你的问题:直接提取系数,或者通过组合推导验证结果。

方法一:用SymPy直接提取x²的系数

我们可以利用series函数将表达式展开到足够高的阶数(这里到x³就够了,因为我们只关心x²的系数),然后移除高阶无穷小项,最后用coeff方法提取目标系数。代码如下:

from sympy import symbols, series

# 定义符号变量,n限定为非负整数
x, n = symbols('x n', integer=True, nonnegative=True)
expr = (x**2 + x + 1)**n

# 展开到x^3项,去掉O(x^3)的高阶无穷小标记
expanded_series = series(expr, x, 0, 3).removeO()

# 提取x²的系数
x2_coeff = expanded_series.coeff(x, 2)
print(x2_coeff)  # 输出 n*(n+1)/2,也就是你预期的n + inom{n}{2}

运行这段代码后,你会得到n(n+1)/2,和你预期的n + inom{n}{2}完全等价(因为inom{n}{2} = n(n-1)/2,加n后就是n(n+1)/2)。

方法二:组合数学推导验证

如果你想理解这个系数的来源,我们可以把原式拆成二项式的形式来推导:

(x² + x + 1)^n = [(x+1) + x²]^n

根据二项式定理展开后,每一项是inom{n}{k} (x+1)^{n-k} (x²)^k。我们只需要找所有能生成x²的项:

  • 当k=0时:(x+1)^n中x²的系数是inom{n}{2}
  • 当k=1时:(x+1)^{n-1}中x^0的系数是1,乘以inom{n}{1},得到n
  • 当k≥2时:(x²)^k已经是x^{4}及以上的项,不会贡献x²的系数

把这两部分加起来,就是inom{n}{2} + n = n(n+1)/2,和SymPy计算的结果一致。

为什么直接用expand不行?

SymPy的expand函数针对的是有限项的多项式展开,当指数n是符号变量时,它无法确定展开后的项数,所以会保留原式的形式。只有当n是具体数值(比如n=3)时,expand((x²+x+1)**3)才会直接展开成完整的多项式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:31:10