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

如何在Sympy表达式中删除系数低于指定阈值的项?

在SymPy中移除系数小于指定阈值的项

当然可以实现,核心思路是拆分表达式的各项,筛选出系数绝对值不低于设定阈值的项,再重新组合成新表达式。

具体实现代码

from sympy import symbols, exp

# 定义符号与原始表达式
u = symbols('u')
expr = 0.25 + 8.5*exp(-2.6*u) - 2.7e-17*exp(-2.4*u) + 1.2*exp(-0.1*u)

def filter_small_coeffs(expr, threshold=1e-5):
    # 将表达式拆分为独立的项
    terms = expr.as_ordered_terms()
    # 筛选系数绝对值 >= 阈值的项
    filtered_terms = []
    for term in terms:
        # 获取项的系数
        coeff = term.as_coeff_Add()[0]
        if abs(coeff) >= threshold:
            filtered_terms.append(term)
    # 重新组合表达式
    return sum(filtered_terms)

# 调用函数处理表达式
result = filter_small_coeffs(expr)
print(result)

代码说明

  • as_ordered_terms():将表达式拆分为相加的独立项,方便逐个处理。
  • as_coeff_Add()[0]:提取每个项的系数,对于常数项(比如0.25),系数就是其本身。
  • 筛选逻辑:只保留系数绝对值大于等于设定阈值(默认1e-5)的项,最后通过sum()重新组合成表达式。

运行上述代码后,输出结果为:0.25 + 8.5*exp(-2.6*u) + 1.2*exp(-0.1*u),符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:27:04