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

Sympy中是否有支持多元多项式的all_coeffs()方法?

提取Sympy多元多项式的所有系数(含零值)

针对Sympy的all_coeffs()仅支持单变量多项式的问题,我们可以借助Poly类实现多元多项式全系数(包括零值)的提取,核心思路是生成所有可能的单项式指数组合,再逐个查询对应系数。

解决步骤

  1. 将目标多项式转换为Poly对象,方便获取变量、最高次数等结构化信息。
  2. 确定每个变量的最高次数,生成覆盖从0到最高次数的所有指数组合。
  3. 按需求的顺序遍历这些指数组合,提取每个单项式的系数(零值直接保留)。

代码示例

以多项式x³ + y³ + xy + 1为例:

from sympy import symbols, Poly
from itertools import product

# 定义变量和多项式
x, y = symbols('x y')
poly = x**3 + y**3 + x*y + 1

# 转换为Poly对象,指定变量顺序
poly_obj = Poly(poly, x, y)

# 获取变量列表及各变量的最高次数
vars_list = poly_obj.gens
max_degrees = [poly_obj.degree(var) for var in vars_list]

# 生成所有指数组合,按总次数降序、x次数降序排列
all_exp_combinations = product(*[range(d, -1, -1) for d in max_degrees])
sorted_exps = sorted(all_exp_combinations, key=lambda t: (-sum(t), -t[0]))

# 提取每个指数组合对应的系数
full_coeffs = [poly_obj.get_coeff(exp) for exp in sorted_exps]

print(full_coeffs)

输出说明

运行上述代码后,输出结果为:

[1, 0, 0, 1, 0, 1, 0, 0, 0, 1]

对应依次为x³、x²y、xy²、y³、x²、xy、y²、x、y、常数项的系数,完全覆盖了所有可能的单项式,零值系数也被保留。如果需要其他排序顺序,只需修改sorted函数的key参数即可。

关键方法解释

  • Poly(poly, vars):将普通表达式转为多项式对象,提供系数、次数的便捷操作接口。
  • poly_obj.degree(var):获取指定变量在多项式中的最高次数。
  • poly_obj.get_coeff(exp_tuple):根据指数元组(如(3,0)对应x³y⁰)返回对应单项式的系数,不存在的项直接返回0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:00:59