Пример #1
0
def zeta(s):
    """
    zeta(s) -- calculate the Riemann zeta function of a real or complex
    argument s.

    """
    Float.store()
    Float._prec += 8
    si = s
    s = ComplexFloat(s)
    if s.real < 0:
        # Reflection formula (XXX: gets bad around the zeros)
        pi = pi_float()
        y = power(2, s) * power(pi, s-1) * sin(pi*s/2) * gamma(1-s) * zeta(1-s)
    else:
        p = Float._prec
        n = int((p + 2.28*abs(float(s.imag)))/2.54) + 3
        d = _zeta_coefs(n)
        if isinstance(si, (int, long)):
            t = 0
            for k in range(n):
                t += (((-1)**k * (d[k] - d[n])) << p) // (k+1)**si
            y = (Float((t, -p)) / -d[n]) / (Float(1) - Float(2)**(1-si))
        else:
            t = Float(0)
            for k in range(n):
                t += (-1)**k * Float(d[k]-d[n]) * exp(-_logk(k+1)*s)
            y = (t / -d[n]) / (Float(1) - exp(log(2)*(1-s)))
    Float.revert()
    if isinstance(y, ComplexFloat) and s.imag == 0:
        return +y.real
    else:
        return +y
Пример #2
0
def getSlope(times,
             valueList,
             maxCoverage,
             sqrt=False,
             verbose=False,
             tmpFileName="tmpFig.png"):
    x = np.array(times)
    x = np.array(times).astype(float)[0:maxCoverage]
    averageValues = np.array(valueList).astype(float)[0:maxCoverage]
    try:
        a, b = np.polyfit(x, averageValues, 1)
        popt = curve_fit(f.power, x, averageValues)
        aPower = popt[0][0]
        bPower = popt[0][1]
        if verbose:
            plt.figure(num=None,
                       figsize=(3, 3),
                       dpi=80,
                       facecolor='w',
                       edgecolor='k')
            label = "{}x+{}".format(a, b)
            print(label)
            plt.plot(x, averageValues)
            y = a * np.array(x) + b
            plt.plot(x, y, label=label)
            y = f.power(x, aPower, bPower)
            label = "{}x^{}".format(aPower, bPower)
            plt.plot(x, y, label=label)
            plt.legend(loc='upper left', prop={'size': 6})
            plt.savefig(tmpFileName)
            plt.close()
        if sqrt:
            valueSlope = aPower
        else:
            valueSlope = a
    except (TypeError, RuntimeError, ValueError):
        if (verbose):
            print("Error fitting...")
            print(x)
            print(averageValues)
            traceback.print_exc(file=sys.stdout)
        valueSlope = 0

    return valueSlope
Пример #3
0
def plot(x, y):
    maxCoverage = 31
    #gyradiusList vs averageSizes
    indexes = range(1, maxCoverage)
    xPlot = np.array(x)[indexes]
    xPlot = [np.mean(i) for i in xPlot]
    yPlot = np.array(y)
    plt.xlabel("Gyradius")
    plt.ylabel("Island size")
    plt.grid(True)
    plt.loglog(xPlot, yPlot, ".")
    # fit
    popt = curve_fit(f.power, xPlot, yPlot)
    aPower = popt[0][0]
    bPower = popt[0][1]
    label = "{}x^{}".format(aPower, bPower)
    yPlot = f.power(xPlot, aPower, bPower)
    plt.loglog(xPlot, yPlot, label=label)
    plt.legend(loc='upper left', prop={'size': 12})
    plt.savefig("gyradiusVsSize.png")
    plt.close()
Пример #4
0
    folder = "flux3.5e" + str(i)
    flux = float("3.5e" + str(i))
    print(folder)
    try:
        os.chdir(folder)
        meanValues = mk.getIslandDistribution(temperatures, False, False)
    except OSError:
        print("error changing to {}".format(folder))
        a = 0  #do nothing
    os.chdir(workingPath)

    mtt = meanValues.getAeRatioTimesPossible()  #/flux**.063
    r = np.array(mk.getRtt(temperatures))  #/flux**0.5
    plt.loglog(mtt, r, "-", label="N " + folder)
    if (i < -7):
        popt = curve_fit(f.power, r, mtt)
        a = popt[0][0]
        b = popt[0][1]
        x = r
        a = 2e2
        b = 2 / 3
        label = "{}x^{}".format(a, b)
        y = f.power(x, a, b)
        plt.loglog(x, y, label=label)
    plt.legend(loc='lower right', prop={'size': 6})
    plt.savefig("aeRatioVsRate.png")

plt.close()

print("Good bye!")
def test_power():
    assert f.power(1, 1) == 1
    assert f.power(5, 2) == 25
    assert f.power(2, -2) == 0.25
    assert f.power(-2, 2) == 4
Пример #6
0
        - To quit, press X
        """)

    op = input("> Enter operator key: ").lower()

    if op == 'x':
        break

    elif op == 'a':
        print("> The answer is: ", f.add(num1, num2))

    elif op == 's':
        in_order = bool(
            int(input(
                ">> Enter 1 -> num1 - num2 OR Enter 0 -> num2 - num1: ")))
        print("> The answer is: ", f.subtract(num1, num2, in_order=in_order))

    elif op == 'm':
        print("> The answer is: ", f.multiply(num1, num2))

    elif op == 'd':
        in_order = bool(
            int(input(">> Enter 1 -> num1 / num2 OR Enter 0 -> num2 / num1")))
        print("> The answer is: ", f.divide(num1, num2, in_order=in_order))

    elif op == 'p':
        print("> The answer is: ", f.power(num1, num2))

    else:
        print("> Invalid entry, try again...")
def plot(ax, ax2, data, i):
    marker = ["o", "s", "H", "D", "^", "d", "h", "p", "o"]
    cm = plt.get_cmap("Accent")
    alpha = 0.5
    mew = 0
    lw = 3
    data = np.array(data)
    flux = data[0, 0]
    x = data[:, 6] / flux**0.17
    if ax2 != None:
        ax2.plot(x, data[:, 5], label="isld", lw=lw, ls="--", color=cm(i / 8))
        ax2.text(x[0] / 8,
                 data[:, 5][0],
                 fun.base10(flux),
                 color=cm(i / 8),
                 size=10)
    lg1, = ax.plot(x,
                   data[:, 3],
                   label=r"$F=$" + fun.base10(flux),
                   lw=lw,
                   marker="",
                   ls="-",
                   mew=mew,
                   ms=8,
                   alpha=alpha,
                   color=cm(i / 8))
    ax.plot(x,
            data[:, 4],
            label=r"$N_h$" + fun.base10(flux),
            lw=lw + 1,
            marker="",
            ls="-.",
            mew=1,
            color=cm(i / 8),
            markeredgecolor=cm(i / 8),
            ms=7,
            alpha=1)
    ax.text(x[0] / 8,
            data[:, 4][0],
            fun.base10(flux),
            color=cm(i / 8),
            size=10)
    if i == 0:
        ax.annotate("",
                    xytext=(x[1], data[:, 4][1] * 1.5),
                    xy=(x[1] / 80, data[:, 4][1] * 3),
                    arrowprops=dict(arrowstyle="->",
                                    connectionstyle="angle3",
                                    ls="-",
                                    color="gray"),
                    ha="center",
                    va="center")
    if i == 4:
        xFit = np.array([1e2, 1e12])
        ax2.plot(xFit, fun.power(xFit, 4e4, -0.3333), ls=":", color="black")
        bbox_props = dict(boxstyle="round", fc="w", ec="0.5", alpha=0.3)
        label = r"$\theta=0.30$"
        ax.annotate(r"$1/3$", xy=(1e5, 3e2), bbox=bbox_props)
        ax.annotate(label,
                    xy=(0.5, 0.93),
                    xycoords="axes fraction",
                    bbox=bbox_props)
        ax.annotate("",
                    xy=(1e9, 1e-5),
                    xycoords='data',
                    xytext=(1e9, 1e4),
                    arrowprops=dict(arrowstyle="-",
                                    connectionstyle="arc3",
                                    ls="--",
                                    color="gray"))
        ax.annotate("",
                    xy=(8e10, 1e-5),
                    xycoords='data',
                    xytext=(8e10, 1e4),
                    arrowprops=dict(arrowstyle="-",
                                    connectionstyle="arc3",
                                    ls="--",
                                    color="gray"))
        addEllipses()
        alpha = 0.2
        arrow = dict(arrowstyle="-[", ls="-", color="gray", alpha=0)
        ax.annotate("A",
                    xy=(7e2, 3),
                    xytext=(7e2, 1),
                    ha="center",
                    va="center",
                    arrowprops=arrow,
                    color="green",
                    alpha=alpha)
        ax.annotate("B",
                    xy=(7e2, 1e-4),
                    xytext=(7e2, 1e-4),
                    ha="center",
                    va="center",
                    arrowprops=arrow,
                    color="blue",
                    alpha=alpha)
        ax.annotate("C",
                    xy=(8e9, 1),
                    xytext=(8e9, 5e-1),
                    ha="center",
                    va="center",
                    arrowprops=arrow,
                    color="red",
                    alpha=alpha)
        ax.annotate("D",
                    xy=(8e11, 2e2),
                    xytext=(8e11, 7e2),
                    ha="center",
                    va="center",
                    arrowprops=arrow,
                    color="brown",
                    alpha=alpha)
        y = 3e-5
        ax.text(2e7, y, "$I$", color="gray")
        ax.text(5e9, y, "$II$", color="gray")
        ax.text(2e11, y, "$III$", color="gray")

        ax2.annotate("",
                     xy=(x[-1] * 18, data[:, 5][-1]),
                     xytext=(x[-1] * 2, data[:, 5][-1] / 1.5),
                     arrowprops=dict(arrowstyle="->",
                                     connectionstyle="angle3",
                                     ls="-",
                                     color="gray"),
                     ha="center",
                     va="center")