def hyp0f1(v,z): """Confluent hypergeometric limit function 0F1. Limit as q->infinity of 1F1(q;a;z/q) """ z = asarray(z) if issubdtype(z.dtype, complexfloating): arg = 2*sqrt(abs(z)) num = where(z>=0, iv(v-1,arg), jv(v-1,arg)) den = abs(z)**((v-1.0)/2) else: num = iv(v-1,2*sqrt(z)) den = z**((v-1.0)/2.0) num *= gamma(v) return where(z==0,1.0,num/ asarray(den))
def hyp0f1(v, z): r"""Confluent hypergeometric limit function 0F1. Parameters ---------- v, z : array_like Input values. Returns ------- hyp0f1 : ndarray The confluent hypergeometric limit function. Notes ----- This function is defined as: .. math:: _0F_1(v,z) = \sum_{k=0}^{\inf}\frac{z^k}{(v)_k k!}. It's also the limit as q -> infinity of ``1F1(q;v;z/q)``, and satisfies the differential equation :math:``f''(z) + vf'(z) = f(z)`. """ v = atleast_1d(v) z = atleast_1d(z) v, z = np.broadcast_arrays(v, z) arg = 2 * sqrt(abs(z)) old_err = np.seterr(all='ignore') # for z=0, a<1 and num=inf, next lines num = where(z.real >= 0, iv(v - 1, arg), jv(v - 1, arg)) den = abs(z)**((v - 1.0) / 2) num *= gamma(v) np.seterr(**old_err) num[z == 0] = 1 den[z == 0] = 1 return num / den
def ivp(v,z,n=1): """Return the nth derivative of Iv(z) with respect to z. """ if not isinstance(n,types.IntType) or (n<0): raise ValueError("n must be a non-negative integer.") if n == 0: return iv(v,z) else: return bessel_diff_formula(v, z, n, iv, 1)
def ivp(v, z, n=1): """Return the nth derivative of Iv(z) with respect to z. """ if not isinstance(n, types.IntType) or (n < 0): raise ValueError("n must be a non-negative integer.") if n == 0: return iv(v, z) else: return bessel_diff_formula(v, z, n, iv, 1)