def get_recursion_row(self,i): r = self.coefficients() d = self.order() row = [] #var = self.__polynomialRing.gens()[-1] ### First summation part #row += [sum([falling_factorial(k,l)*self.base().sequence(r[l],i-k+l) for l in range(0,k+1)]) for k in range(0,min(i,d))] #if(i<d): # ## Second summation part # row += [sum([falling_factorial(k+i,l)*self.base().sequence(r[l], l-k) for l in range(k,i+k+1)]) for k in range(d-i)] # ## Third summation part # row += [self.forward(k)(**{str(var):i}) for k in range(d-i,d+1)] #else: # ## Second summation part # row += [self.backward(i-d-k)(**{str(var):i}) for k in range(i-d)] # ## Third summation part # row += [self.forward(k)(**{str(var):i}) for k in range(0,d+1)] ## First summation part row += [sum([falling_factorial(k,l)*self.base().sequence(r[l],i-k+l) for l in range(0,k+1)]) for k in range(0,min(i,d))] if(i<d): ## Second summation part row += [sum([falling_factorial(k+i,l)*self.base().sequence(r[l], l-k) for l in range(k,i+k+1)]) for k in range(d-i)] ## Third summation part row += [self.__eval_pol(self.forward(k),i) for k in range(d-i,d+1)] else: ## Second summation part row += [self.__eval_pol(self.backward(i-d-k),i) for k in range(i-d)] ## Third summation part row += [self.__eval_pol(self.forward(k),i) for k in range(0,d+1)] return row
def backward(self, n): if(n < 0): raise IndexError("Backward polynomials have only positive index") elif(self.is_zero()): return 0 var = self.__polynomialRing.gens()[-1] return sum([self.base().sequence(self.coefficient(l), l+n)*falling_factorial(var-n, l) for l in range(0,self.order()+1)])
def _inverse_egf(n): if(n == 0): return 0 elif(n == 1): return 1/f(1) else: result = 0 for k in range(1,n): poly = bell_polynomial(n-1,k) extra = ((-1)**k)*falling_factorial(n+k-1, k) if(k == n-1): evaluation = poly(x=f(2)/2/f(1)) else: evaluation = poly(**{"x%d" %(i) : f(i+2)/(i+2)/f(1) for i in range(n-k)}) result += extra*evaluation return (1/(f(1)**n)) * result
def _sage_(self): import sage.all as sage return sage.falling_factorial(self.args[0]._sage_(), self.args[1]._sage_())