SymPy: выражение для суммирования символов в списке

1

Я пишу программу, вычисляющую степенной ряд sum_{m=0}{oo} a[m]x^m, где a[m] рекурсивно определено: a[m]=f(a[m-1]). Я генерирую символы следующим образом:

a = list(sympy.symbols(' '.join([('a%d' % i) for i in range(10)])))
for i in range(1, LIMIT):
   a[i] = f_recur(a[i-1], i-1)

Это позволяет мне ссылаться на символы a0,a1,...,a9 используя a[0],a[1],...,a[9], a[m] является функцией от a[m-1] заданный f_recur.

Теперь я надеюсь, что код суммирования будет следующим:

m, x, y = sympy.symbols('m x y')
y = sympy.Sum(a[m]*x**m, (m, 0, 10))

Но m не является целым числом, поэтому a[m] выбрасывает исключение.

В этой ситуации, где символы хранятся в списке, как бы вы закодировали суммирование? Спасибо за любую помощь!

Теги:
sympy

2 ответа

2
Лучший ответ

SymPy Sum представляет собой сумму с символическим индексом. Вы хотите получить сумму с конкретным индексом, проходящим через 0,... 9. Это может быть sum Питона

y = sum([a[m]*x**m for m in range(10)])

или, что предпочтительнее с точки зрения производительности (соответствующая проблема)

y = sympy.Add(*[a[m]*x**m for m in range(10)])

В любом случае m не является символом, а целым числом.

0

У меня есть работа, которая не использует sympy.Sum:

x = sympy.symbols('x')
y = a[0]*x**0
for i in range(1, LIMIT):
    y += a[i]*x**i

Это делает работу, но sympy.Sum не используется.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню