Python中的因子求和

Python中的因子求和,python,sum,sympy,factorial,Python,Sum,Sympy,Factorial,我想用python中的符号代数计算带阶乘的和。我能产生的问题的最简单版本如下: from sympy.abc import j from math import factorial from sympy import summation summation(factorial(j), (j, 1, 4)) 我得到以下错误: Traceback (most recent call last): File "<stdin>", line 1, in <module>

我想用python中的符号代数计算带阶乘的和。我能产生的问题的最简单版本如下:

from sympy.abc import j
from math import factorial
from sympy import summation
summation(factorial(j), (j, 1, 4))
我得到以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "sympy/core/expr.py", line 194, in __int__
    r = self.round(2)
  File "sympy/core/expr.py", line 3042, in round
    raise TypeError('%s is not a number' % type(x))
TypeError: <class 'sympy.core.symbol.Symbol'> is not a number

有什么建议吗?

我能想到的避免循环的唯一解决方案是功能版本:S:

from math import factorial

reduce(int.__add__,map(factorial,xrange(1,5)))

使用Sympy自己的
factorial
函数(而不是
math
模块的factorial函数)可能会返回您想要的结果

按照初始设置,但忽略math import factorial中的
,然后可以编写:

>>> from sympy import factorial, symbols
>>> x = symbols('x')
>>> summation(x**(j-1)/factorial(j-1), (j, 1, 3))
x**2/2 + x + 1
这将阶乘级数之和简化为一个简单的二次方程

我注意到您正在计算
exp(x)
幂级数展开式的前几个项之和:


嗯,这里的总和是什么…?对不起!我编辑了问题并添加了“来自sympy导入汇总”
>>> from sympy import factorial, symbols
>>> x = symbols('x')
>>> summation(x**(j-1)/factorial(j-1), (j, 1, 3))
x**2/2 + x + 1
1 + x + x**2/2! + x**3/3! + ...