Esempio n. 1
0
 def fdiff(self, argindex=4):
     if argindex == 1:
         # Diff wrt n
         raise ArgumentIndexError(self, argindex)
     elif argindex == 2:
         # Diff wrt a
         n, a, b, x = self.args
         k = C.Dummy("k")
         f1 = 1 / (a + b + n + k + 1)
         f2 = ((a + b + 2 * k + 1) * C.RisingFactorial(b + k + 1, n - k) /
               ((n - k) * C.RisingFactorial(a + b + k + 1, n - k)))
         return C.Sum(f1 * (jacobi(n, a, b, x) + f2 * jacobi(k, a, b, x)),
                      (k, 0, n - 1))
     elif argindex == 3:
         # Diff wrt b
         n, a, b, x = self.args
         k = C.Dummy("k")
         f1 = 1 / (a + b + n + k + 1)
         f2 = (-1)**(n - k) * (
             (a + b + 2 * k + 1) * C.RisingFactorial(a + k + 1, n - k) /
             ((n - k) * C.RisingFactorial(a + b + k + 1, n - k)))
         return C.Sum(f1 * (jacobi(n, a, b, x) + f2 * jacobi(k, a, b, x)),
                      (k, 0, n - 1))
     elif argindex == 4:
         # Diff wrt x
         n, a, b, x = self.args
         return S.Half * (a + b + n + 1) * jacobi(n - 1, a + 1, b + 1, x)
     else:
         raise ArgumentIndexError(self, argindex)
Esempio n. 2
0
 def _eval_rewrite_as_polynomial(self, n, m, x):
     k = C.Dummy("k")
     kern = C.factorial(2 * n - 2 * k) / (
         2**n * C.factorial(n - k) * C.factorial(k) *
         C.factorial(n - 2 * k - m)) * (-1)**k * x**(n - m - 2 * k)
     return (1 - x**2)**(m / 2) * C.Sum(kern,
                                        (k, 0, C.floor((n - m) * S.Half)))
Esempio n. 3
0
 def _eval_rewrite_as_polynomial(self, n, a, b, x):
     # TODO: Make sure n \in N
     k = C.Dummy("k")
     kern = (C.RisingFactorial(-n, k) *
             C.RisingFactorial(a + b + n + 1, k) *
             C.RisingFactorial(a + k + 1, n - k) / C.factorial(k) *
             ((1 - x) / 2)**k)
     return 1 / C.factorial(n) * C.Sum(kern, (k, 0, n))
Esempio n. 4
0
 def fdiff(self, argindex=3):
     if argindex == 1:
         # Diff wrt n
         raise ArgumentIndexError(self, argindex)
     elif argindex == 2:
         # Diff wrt alpha
         n, alpha, x = self.args
         k = C.Dummy("k")
         return C.Sum(assoc_laguerre(k, alpha, x) / (n - alpha), (k, 0, n - 1))
     elif argindex == 3:
         # Diff wrt x
         n, alpha, x = self.args
         return -assoc_laguerre(n - 1, alpha + 1, x)
     else:
         raise ArgumentIndexError(self, argindex)
Esempio n. 5
0
 def fdiff(self, argindex=3):
     if argindex == 1:
         # Diff wrt n
         raise ArgumentIndexError(self, argindex)
     elif argindex == 2:
         # Diff wrt a
         n, a, x = self.args
         k = C.Dummy("k")
         factor1 = 2 * (1 + (-1)**(n - k)) * (k + a) / ((k +
                        n + 2*a) * (n - k))
         factor2 = 2*(k + 1) / ((k + 2*a) * (2*k + 2*a + 1)) + \
             2 / (k + n + 2*a)
         kern = factor1*gegenbauer(k, a, x) + factor2*gegenbauer(n, a, x)
         return C.Sum(kern, (k, 0, n - 1))
     elif argindex == 3:
         # Diff wrt x
         n, a, x = self.args
         return 2*a*gegenbauer(n - 1, a + 1, x)
     else:
         raise ArgumentIndexError(self, argindex)
Esempio n. 6
0
 def _eval_rewrite_as_polynomial(self, n, x):
     k = C.Dummy("k")
     kern = C.binomial(n, 2 * k) * (x**2 - 1)**k * x**(n - 2 * k)
     return C.Sum(kern, (k, 0, C.floor(n / 2)))
Esempio n. 7
0
 def _eval_rewrite_as_polynomial(self, n, a, x):
     k = C.Dummy("k")
     kern = ((-1)**k * C.RisingFactorial(a, n - k) * (2 * x)**(n - 2 * k) /
             (C.factorial(k) * C.factorial(n - 2 * k)))
     return C.Sum(kern, (k, 0, C.floor(n / 2)))
Esempio n. 8
0
 def _eval_rewrite_as_polynomial(self, n, x):
     # TODO: Should make sure n is in N_0
     k = C.Dummy("k")
     kern = C.RisingFactorial(
         -n, k) / (C.gamma(k + alpha + 1) * C.factorial(k)) * x**k
     return C.gamma(n + alpha + 1) / C.factorial(n) * C.Sum(kern, (k, 0, n))
Esempio n. 9
0
 def _eval_rewrite_as_polynomial(self, n, x):
     # TODO: Should make sure n is in N_0
     k = C.Dummy("k")
     kern = C.RisingFactorial(-n, k) / C.factorial(k)**2 * x**k
     return C.Sum(kern, (k, 0, n))
Esempio n. 10
0
 def _eval_rewrite_as_polynomial(self, n, x):
     k = C.Dummy("k")
     kern = (-1)**k / (C.factorial(k) *
                       C.factorial(n - 2 * k)) * (2 * x)**(n - 2 * k)
     return C.factorial(n) * C.Sum(kern, (k, 0, C.floor(n / 2)))
Esempio n. 11
0
 def _eval_rewrite_as_polynomial(self, n, x):
     k = C.Dummy("k")
     kern = (-1)**k * C.binomial(n, k)**2 * ((1 + x) / 2)**(n - k) * (
         (1 - x) / 2)**k
     return C.Sum(kern, (k, 0, n))
Esempio n. 12
0
 def _eval_rewrite_as_polynomial(self, n, x):
     k = C.Dummy("k")
     kern = S.NegativeOne**k * C.factorial(n - k) * (2 * x)**(n - 2 * k) / (
         C.factorial(k) * C.factorial(n - 2 * k))
     return C.Sum(kern, (k, 0, C.floor(n / 2)))