예제 #1
0
 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
예제 #2
0
 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)])
예제 #3
0
 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
예제 #4
0
 def _sage_(self):
     import sage.all as sage
     return sage.falling_factorial(self.args[0]._sage_(),
                                   self.args[1]._sage_())
예제 #5
0
 def _sage_(self):
     import sage.all as sage
     return sage.falling_factorial(self.args[0]._sage_(),
                                   self.args[1]._sage_())