如何在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
相关产品推荐
相关产品推荐

