Мне нужно вычислить возрастающий факториал больших чисел, лучшее, что я нашел до сих пор, это возрастающая факториальная функция из пакета sympy sympy package , что действительно хорошо, но Мне все еще нужно что-то быстрее.
Мне нужна действительно быстрая версия этого:
from itertools import combinations
from numpy import prod
def my_rising_factorial(degree, elt):
return sum([prod(i) for i in combinations(xrange(1,degree),elt)])
EDIT:
с учетом возрастающего факториала x (n) = x (x + 1) (x + 2) ... (x + n-1), я хотел бы получить данный множитель его расширенной формулы.
например:
дано: x (6) = x (x + 1) (x + 2) (x + 3) (x + 5) (x + 6)
и расширенная форма: x (6) = x ** 6 + 15 * x ** 5 + 85 * x ** 4 + 225 * x ** 3 + 274 * x ** 2 + 120 * x
Я хочу кое-что, как получить один из этих множителей (в данном случае 1, 15, 85, 225, 274, 120)
с "my_rising_factorial ()" он работает хорошо ... но очень медленно
>>>[my_rising_factorial(6,i) for i in xrange (6)]
[1.0, 15, 85, 225, 274, 120]