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

如何展开SymPy中乘法表达式的括号以拆分单项式?

SymPy展开表达式并拆分单项式的解决方案

直接展开表达式

SymPy内置的expand()函数可以直接完成括号展开,完全满足需求:

from sympy import *
c1, c2, x = symbols("c1, c2, x")
expr = c2*x*(c1*x + c2*x)

# 执行展开
expanded_expr = expand(expr)
print(expanded_expr)  # 输出:c1*c2*x**2 + c2**2*x**2

拆分单个单项式

展开后的表达式属于Add类型,可直接通过迭代或as_ordered_terms()方法提取每个单项式:

# 方法1:直接迭代Add对象
terms = [term for term in expanded_expr]

# 方法2:使用as_ordered_terms()(按字典序排序项)
terms = expanded_expr.as_ordered_terms()

# 遍历输出每个项
for term in terms:
    print(term)

执行后会分别输出:

c1*c2*x**2
c2**2*x**2

关于Poly转换的问题

转Poly再还原出现非确定性错误,通常是因为Poly默认会按特定变量顺序(字典序)重新排列项,且内部会对系数做归一化处理,导致还原后的表达式顺序或形式和预期不一致。相比之下,用expand()配合直接拆分的方法更直观、可靠,完全避免这类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:45:34