Ejemplo n.º 1
0
 def get_pi(l, m):
     terms = []
     for k in xrange((l - m) / 2 + 1):
         factor = (-1)**k * int(
             binomial(l, k) * binomial(2 * l - 2 * k, l) *
             fac(l - 2 * k)) / S(2**l * int(fac(l - 2 * k - m)))
         terms.append(factor * r**(2 * k) * z**(l - 2 * k - m))
     return Add(*terms)
def daubechis(N):
	# make polynomial
	q_y = [sm.binomial(N-1+k,k) for k in reversed(range(N))]

	# get polynomial roots y[k]
	y = sm.mp.polyroots(q_y, maxsteps=200, extraprec=64)

	z = []
	for yk in y:
		# subustitute y = -1/4z + 1/2 - 1/4/z to factor f(y) = y - y[k]
		f = [sm.mpf('-1/4'), sm.mpf('1/2') - yk, sm.mpf('-1/4')]

		# get polynomial roots z[k]
		z += sm.mp.polyroots(f)

	# make polynomial using the roots within unit circle
	h0z = sm.sqrt('2')
	for zk in z:
		if sm.fabs(zk) < 1:
			h0z *= sympy.sympify('(z-zk)/(1-zk)').subs('zk',zk)

	# adapt vanising moments
	hz = (sympy.sympify('(1+z)/2')**N*h0z).expand()

	# get scaling coefficients
	return [sympy.re(hz.coeff('z',k)) for k in reversed(range(N*2))]
Ejemplo n.º 3
0
 def iterate(rest, n_rest):
     if rest and n_rest > 0:
         for k in range(n_rest + 1):
             for coeff, next in iterate(rest[1:], n_rest - k):
                 if k == 0:
                     this_factor = []
                 else:
                     this_factor = [Expression("Power", rest[0], Integer(k))]
                 yield (int(mpmath.binomial(n_rest, k) * coeff), this_factor + next)
     elif n_rest == 0:
         yield (sympy.Integer(1), [])
Ejemplo n.º 4
0
 def iterate(rest, n_rest):
     if rest and n_rest > 0:
         for k in range(n_rest + 1):
             for coeff, next in iterate(rest[1:],
                                        n_rest - k):
                 if k == 0:
                     this_factor = []
                 else:
                     this_factor = [Expression(
                         'Power', rest[0], Integer(k))]
                 yield (int(
                     mpmath.binomial(n_rest, k) * coeff),
                     this_factor + next)
     elif n_rest == 0:
         yield (sympy.Integer(1), [])
Ejemplo n.º 5
0
 def get_b(m):
     terms = []
     for p in xrange(m+1):
         factor = int(binomial(m, p))*sin((m-p)*pi/S(2))
         terms.append(factor*x**p*y**(m-p))
     return Add(*terms)
Ejemplo n.º 6
0
 def get_pi(l, m):
     terms = []
     for k in xrange((l-m)/2+1):
         factor = (-1)**k*int(binomial(l,k)*binomial(2*l-2*k,l)*fac(l-2*k))/S(2**l*int(fac(l-2*k-m)))
         terms.append(factor*r**(2*k)*z**(l-2*k-m))
     return Add(*terms)
Ejemplo n.º 7
0
 def get_b(m):
     terms = []
     for p in xrange(m + 1):
         factor = int(binomial(m, p)) * sin((m - p) * pi / S(2))
         terms.append(factor * x**p * y**(m - p))
     return Add(*terms)