Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sympy summation with indexed variable

I try to create a sympy expression with a Sum with an indexed variable as previous explain here However, I can not do lambdify of this expression and give an array to get the sum calculated. Is this impossible?

like image 741
Diogo Santos Avatar asked Oct 16 '14 10:10

Diogo Santos


Video Answer


2 Answers

Perhaps like this?

>>> 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
like image 104
smichr Avatar answered Sep 21 '22 05:09

smichr


You can use lambdify. Just make sure the limits of the sum match the iterables of a numpy array.

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)
like image 28
Peterhack Avatar answered Sep 19 '22 05:09

Peterhack