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)
Exemple #2
0
    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)
Exemple #3
0
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
Exemple #4
0
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