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))]
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), [])
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), [])
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)
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 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)