Python 中的阶乘求和
Summing factorials in Python
我想在 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
基本上,我想计算的是
summation(x**(j-1)/factorial(j-1), (j, 1, 3))
有什么建议吗?
我能想到的避免循环的唯一解决方案是功能版本:S:
from math import factorial
reduce(int.__add__,map(factorial,xrange(1,5)))
使用 Sympy 自己的 factorial
函数(而不是 math
模块的阶乘函数)可能 return 你想要的。
按照您的初始设置但省略 from 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)
:
的幂级数展开的前几项之和
1 + x + x**2/2! + x**3/3! + ...
我想在 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
基本上,我想计算的是
summation(x**(j-1)/factorial(j-1), (j, 1, 3))
有什么建议吗?
我能想到的避免循环的唯一解决方案是功能版本:S:
from math import factorial
reduce(int.__add__,map(factorial,xrange(1,5)))
使用 Sympy 自己的 factorial
函数(而不是 math
模块的阶乘函数)可能 return 你想要的。
按照您的初始设置但省略 from 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)
:
1 + x + x**2/2! + x**3/3! + ...