def estimate_kappa(N, ssx, scx): if N == 0: return 10.0**-6 elif N == 1: return 10*math.pi else: rbar2 = (ssx/N)**2. + (scx/N)**2. rbar = rbar2**.5 kappa = rbar*(2.-rbar2)/(1.-rbar2) A_p = lambda k : bessel_1(k)/bessel_0(k) Apk = A_p(kappa) kappa_1 = kappa - (Apk - rbar)/(1.0-Apk**2-(1.0/kappa)*Apk) Apk = A_p(kappa_1) kappa = kappa_1 - (Apk - rbar)/(1.0-Apk**2-(1.0/kappa_1)*Apk) Apk = A_p(kappa) kappa_1 = kappa - (Apk - rbar)/(1.0-Apk**2-(1.0/kappa)*Apk) Apk = A_p(kappa_1) kappa = kappa_1 - (Apk - rbar)/(1.0-Apk**2-(1.0/kappa_1)*Apk) if numpy.isnan(kappa): return 10.0**-6 else: return numpy.abs(kappa)
def estimate_kappa(N, ssx, scx): if N == 0: return 10.**-6 elif N == 1: return 10 * pi else: rbar2 = (ssx / N)**2. + (scx / N)**2. rbar = rbar2**.5 kappa = rbar * (2. - rbar2) / (1. - rbar2) A_p = lambda k: bessel_1(k) / bessel_0(k) Apk = A_p(kappa) kappa_1 = kappa - (Apk - rbar) / (1. - Apk**2 - (1. / kappa) * Apk) Apk = A_p(kappa_1) kappa = kappa_1 - (Apk - rbar) / (1. - Apk**2 - (1. / kappa_1) * Apk) Apk = A_p(kappa) kappa_1 = kappa - (Apk - rbar) / (1. - Apk**2 - (1. / kappa) * Apk) Apk = A_p(kappa_1) kappa = kappa_1 - (Apk - rbar) / (1. - Apk**2 - (1. / kappa_1) * Apk) if isnan(kappa): return 10.**-6 else: return abs(kappa)
def log_bessel_0(x): besa = bessel_0(x) # If bessel_0(a) is inf, then use the exponential approximation to # prevent numerical overflow. if isinf(besa): I0 = x - .5 * log(2 * pi * x) else: I0 = log(besa) return I0
def log_bessel_0(x): besa = bessel_0(x) # if bessel_0(a) is inf, then use the eponential approximation to # prevent numericala overflow if math.isinf(besa): I0 = x - .5*log(2*math.pi*x) else: I0 = log(besa) return I0