带索引变量的 Sympy 求和

问题描述 投票:0回答:2

我尝试使用 Sum 和索引变量创建一个 sympy 表达式,如前面的解释here 但是,我无法对该表达式进行羔羊化并给出一个数组来计算总和。 这不可能吗?

sum sympy calculus
2个回答
6
投票

也许像这样?

from sympy.abc import i
s = Sum(Indexed('x',i),(i,1,3))
f = lambda x: Subs(s.doit(), [s.function.subs(s.variables[0], j)
for j in range(s.limits[0][1], s.limits[0][2] + 1)], x).doit()

>>> f((30,10,2))
42

6
投票

您可以使用lambdaify。只需确保总和的限制与 numpy 数组的可迭代项匹配即可。

from sympy import Sum, symbols, Indexed, lambdify
import numpy as np

x, i = symbols("x i")
s = Sum(Indexed('x',i),(i,0,3))
f = lambdify(x, s)
b = np.array([1, 2, 3, 4])
f(b)
© www.soinside.com 2019 - 2024. All rights reserved.