示例#1
0
def test_x_y_to_zeta_eta():
    x = np.random.rand(16) * 3000
    y = np.random.rand(16) * 3000
    x[-1] = y[-1] = 56.0
    x[-2] = y[-2] = 0.0
    factor_ = 4 / np.pi
    zeta_ = []
    eta_ = []
    for x_, y_ in zip(x, y):
        z = np.sqrt(x_**2 + y_**2)
        if x_ < y_:
            eta_.append(factor_ * np.arctan(x_ / y_))
            zeta_.append(z)
        elif x_ > y_:
            eta_.append(factor_ * np.arctan(y_ / x_))
            zeta_.append(-z)
        else:
            zeta_.append(z)
            eta_.append(1.0)

        z_temp, e_temp = x_y_to_zeta_eta([x_], [y_])
        assert np.allclose(zeta_[-1], z_temp)
        assert np.allclose(eta_[-1], e_temp)

    zeta, eta = x_y_to_zeta_eta(x, y)
    assert np.allclose(zeta, np.asarray(zeta_))
    assert np.allclose(eta, np.asarray(eta_))
def test_extended_czjzek_polar():
    S0 = {"zeta": 1, "eta": 0.1}
    x, y = ExtCzjzekDistribution(S0, eps=0.05, polar=True).rvs(size=COUNT)
    x1, y1 = x_y_from_zeta_eta(*x_y_to_zeta_eta(x, y))
    np.testing.assert_almost_equal(x, x1)
    np.testing.assert_almost_equal(y, y1)
def test_czjzek_polar():
    x, y = CzjzekDistribution(sigma=0.5, polar=True).rvs(size=COUNT)
    x1, y1 = x_y_from_zeta_eta(*x_y_to_zeta_eta(x, y))
    np.testing.assert_almost_equal(x, x1)
    np.testing.assert_almost_equal(y, y1)