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

如何用SymPy Poly遍历修改多变量多项式单项式及工具适配性咨询

用SymPy处理多变量多项式的单项式修改

SymPy Poly是否适用?

完全适用。sympy.Poly专门为多变量多项式的代数操作设计,能高效处理包含数十个单项式的场景,提供了直接访问、修改每个单项式的接口,非常匹配你的需求。

实现步骤与代码示例

核心思路是遍历多项式的每个单项式,判断是否符合条件(此处为c1的指数等于2),对符合条件的项调整指数,最后重新构建多项式:

  1. 导入依赖并定义符号
from sympy import symbols, Poly

c1, c2, x = symbols('c1 c2 x')
  1. 创建原多项式
original_poly = Poly(2*c1**2*c2*x**3 + c2*x, c1, c2, x, domain='ZZ')
  1. 遍历并处理每个单项式
    Poly.terms()方法会返回所有单项式的(指数元组, 系数)对,指数元组的顺序和创建Poly时指定的变量顺序一致(此处为c1, c2, x):
processed_terms = []

for (exp_c1, exp_c2, exp_x), coeff in original_poly.terms():
    # 判断当前项是否包含c1²
    if exp_c1 == 2:
        # 除以c1*x:等价于c1指数减1,x指数减1,系数保持不变
        new_exponents = (exp_c1 - 1, exp_c2, exp_x - 1)
        processed_terms.append((new_exponents, coeff))
    else:
        # 不符合条件的项直接保留
        processed_terms.append(((exp_c1, exp_c2, exp_x), coeff))
  1. 构建处理后的新多项式
    使用Poly.from_terms()方法从处理后的项生成新多项式:
new_poly = Poly.from_terms(processed_terms, c1, c2, x, domain='ZZ')
print(new_poly)

执行后输出:

Poly(2*c1*c2*x**2 + c2*x, c1, c2, x, domain='ZZ')

扩展说明

  • 若需要调整判断条件(比如检查c1的任意次幂、其他变量的组合),只需修改指数判断的逻辑即可。
  • domain='ZZ'确保系数为整数,若需处理有理数或其他域,可修改为'QQ'(有理数)、'RR'(实数)等。
  • 对于包含大量单项式的多项式,这种遍历方式效率稳定,SymPy内部对多项式操作做了优化,无需担心性能问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 07:09:11