Skip to content
Advertisement

Summation of a product of a function and a vector in Sympy

I want to use the following expression in sympy.

sum_{n=0}^{4}A_{n}f(n)

For example I tried this sympy code, but an error has occurred.

from sympy import symbols, Matrix, Sum

n = symbols('n', integer=True, nonnegative=True)
expr = n**3 + 2 * n**2 + 3 * n          # f(n)
matrix = Matrix([1, 234, 56, 7, 890])   # A_n

result = Sum(matrix[n] * expr, (n, 0, 4))
>>> TypeError: 'Symbol' object cannot be interpreted as an integer

How can I manage this? (How to use Symbol’s value as an index of Matrix?)

Advertisement

Answer

You can use symbolic indices with a matrix but you need to use double indices:

In [2]: from sympy import symbols, Matrix, Sum
   ...: 
   ...: n = symbols('n', integer=True, nonnegative=True)
   ...: expr = n**3 + 2 * n**2 + 3 * n          # f(n)
   ...: matrix = Matrix([1, 234, 56, 7, 890])   # A_n
   ...: 
   ...: result = Sum(matrix[n, 0] * expr, (n, 0, 4))

In [3]: result
Out[3]: 
   4                                   
_______                                
╲                                      
 ╲                                     
  ╲                       ⎛⎡ 1 ⎤⎞      
   ╲                      ⎜⎢   ⎥⎟      
    ╲                     ⎜⎢234⎥⎟      
     ╲  ⎛ 3      2      ⎞ ⎜⎢   ⎥⎟      
     ╱  ⎝n  + 2⋅n  + 3⋅n⎠⋅⎜⎢56 ⎥⎟[n, 0]
    ╱                     ⎜⎢   ⎥⎟      
   ╱                      ⎜⎢ 7 ⎥⎟      
  ╱                       ⎜⎢   ⎥⎟      
 ╱                        ⎝⎣890⎦⎠      
╱                                      
‾‾‾‾‾‾‾                                
 n = 0                                 

In [4]: result.doit()
Out[4]: 99134
User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement