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

Sympy中能否仅应用外层分配律实现有限表达式展开?

实现SymPy的有限度展开

要实现仅应用外层分配律的部分展开,SymPy没有直接的内置函数,但可以通过自定义函数来实现。针对你的示例,具体代码如下:

from sympy import symbols, Mul

x = symbols("x")
poly = x*(x**2 + x*(x+2))

def partial_expand(expr):
    # 仅处理外层乘法包含加法项的情况
    if expr.is_Mul and any(arg.is_Add for arg in expr.args):
        add_term = None
        other_factors = []
        # 分离加法项和其他乘法因子
        for arg in expr.args:
            if arg.is_Add:
                add_term = arg
            else:
                other_factors.append(arg)
        # 将其他因子分配到加法的每一项,不展开内部结构
        return sum(term * Mul(*other_factors) for term in add_term.args)
    return expr

# 调用自定义函数
result = partial_expand(poly)
print(result)

运行后会输出:x**3 + x**2*(x + 2),正好符合你想要的仅展开外层分配律的效果。

这个函数的核心逻辑是:识别出外层乘法中的加法项,将其余乘法因子逐一分配到加法的每一项中,保留每一项内部的原有结构不展开。如果需要处理更复杂的嵌套表达式,可以根据需求扩展这个函数的判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 05:35:05