numero - funcion factorial python 3
Sumando factoriales en Python (2)
La única solución que puedo pensar en evitar bucles es una versión funcional: S:
from math import factorial
reduce(int.__add__,map(factorial,xrange(1,5)))
Me gustaría calcular sumas con factoriales usando álgebra simbólica en python. La versión más simple del problema que puedo generar es la siguiente:
from sympy.abc import j
from math import factorial
from sympy import summation
summation(factorial(j), (j, 1, 4))
Y obtengo el siguiente error:
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
Fundamentalmente, lo que me gustaría calcular es
summation(x**(j-1)/factorial(j-1), (j, 1, 3))
¿Cualquier sugerencia?
El uso de la función factorial
propia de Sympy (en lugar de la función factorial del módulo math
) tal vez podría devolver lo que desee.
Después de su configuración inicial, pero omitiendo el from math import factorial
, puede escribir:
>>> from sympy import factorial, symbols
>>> x = symbols(''x'')
>>> summation(x**(j-1)/factorial(j-1), (j, 1, 3))
x**2/2 + x + 1
Esto reduce la suma de las series factoriales a una simple ecuación cuadrática.
Noto que está calculando la suma de los primeros términos de la expansión de la serie de potencia de exp(x)
:
1 + x + x**2/2! + x**3/3! + ...