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

SymPy中嵌套Piecewise分段方程的简化方法

SymPy 扁平化嵌套Piecewise分段函数的方法

直接调用SymPy内置的piecewise_fold()工具即可解决嵌套分段无法自动合并的问题,该函数会自动提取所有内层Piecewise的分段条件,计算各互斥区间对应的最终表达式,消除嵌套结构。

操作步骤

  • 不要直接对嵌套的B调用simplify(),先通过piecewise_fold(B)展开所有嵌套分段
  • 对展开后的结果调用simplify()整理表达式项的顺序,即可得到目标扁平化结构

完整可运行代码

from sympy import *
T = symbols("T")

A = Piecewise((T + 1/T, (T >= 300) & (T < 700)), (log(T), (T >= 700) & (T < 900)), (T**9.0, (T >= 900) & (T < 6000)), (0, True))
B = Piecewise((A + 2*T, (T >= 300) & (T < 900)), (A + 3, (T >= 900) & (T < 6000)), (0, True))

# 展开嵌套+化简
result = simplify(piecewise_fold(B))
print(result)

输出结果

运行代码后将输出完全符合预期的无嵌套分段结构:

Piecewise((3*T + 1/T, (T >= 300) & (T < 700)), (2*T + log(T), (T >= 700) & (T < 900)), (T**9.0 + 3, (T >= 900) & (T < 6000)), (0, True))

注:piecewise_fold会自动处理分段条件的交集逻辑,筛掉无效的重叠分支,最终返回的所有分段条件都是互斥且按区间顺序排列的,外层套simplify仅用于整理表达式的项顺序,不影响分段逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:48:14