'Create indexed functions in sympy

Is it possible to create indexed functions in sympy like fi(t) which might be used in a product or sum, eg Σfi(t)?

import sympy as sp
f = sp.Function('f')
i = sp.symbols('i', integer=True)
t = sp.symbols('t', real=True)
sp.Indexed(f, i)(t)

The above code produces the following error:

TypeError: 
The base can only be replaced with a string, Symbol, IndexedBase or an
object with a method for getting items (i.e. an object with a
`__getitem__` method).


Solution 1:[1]

Assuming that you just want graphically pleasing output you can use the following

import sympy as sp
class f(sp.Function):
    name='f'
    def _latex(self, printer=None):
        a = [printer.doprint(i) for i in self.args]
        name=self.name
        return r'{}_{{{}}}\left('.format(name,a[0])+','.join(a[1:])+r'\right)'
i = sp.symbols('i', integer=True)
t = sp.symbols('t', real=True)
f(i,t)

sp.Sum(f(i,t),(i,0,sp.oo))

enter image description here

enter image description here

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Torben