SymPy: выражение для суммирования символов в списке - PullRequest
0 голосов
/ 25 сентября 2018

Я пишу программу, которая оценивает степенной ряд 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] вызывает исключение.

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

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

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

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

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

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

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

0 голосов
/ 25 сентября 2018

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...