如何使用SymPy将数值集合代入符号化求和运算完成累加?
SymPy将数值集合代入符号化求和式的方法
你可以通过两步替换实现需求,完整可运行代码如下:
from sympy import * # 待代入的数值集合 items = [0, 5, 6, 2, 7] # 声明SymPy变量与求和式 i, n = symbols('i n') x = symbols('x', cls=Function) f = Sum(x(i), (i, 0, n)) # 执行替换并计算结果 result = f.subs({ # 替换求和上限n为集合长度减1,对齐下标 n: len(items) - 1, # 生成x(i)到集合对应下标的映射关系 **{x(idx): val for idx, val in enumerate(items)} }).doit() print(result) # 输出:20,即0+5+6+2+7的累加结果
相关要点说明:
subs方法支持传入字典批量完成替换,用**可以把字典推导式生成的映射关系解包到参数字典中。- 最后必须调用
doit()方法才能让SymPy执行实际的求和运算,否则返回的仍然是未计算的求和表达式对象。 - 注意:如果你的集合下标不是从0开始,只需要同步调整求和式的起始下标、
enumerate的start参数,以及求和上限的替换逻辑即可。
内容的提问来源于stack exchange,提问作者tmn
相关产品推荐
相关产品推荐

