Exemplo n.º 1
0
def test_cdf():
    X = Normal('x', 0, 1)

    d = cdf(X)
    assert P(X < 1) == d(1)
    assert d(0) == Rational(1, 2)

    d = cdf(X, X > 0)  # given X>0
    assert d(0) == 0

    Y = Exponential('y', 10)
    d = cdf(Y)
    assert d(-5) == 0
    assert P(Y > 3) == 1 - d(3)

    pytest.raises(ValueError, lambda: cdf(X + Y))

    Z = Exponential('z', 1)
    f = cdf(Z)
    z = Symbol('z')
    assert f(z) == Piecewise((1 - exp(-z), z >= 0), (0, True))

    U = Uniform('x', 3, 5)
    u = cdf(U)
    assert u(z) == z/2 - Rational(3, 2)
Exemplo n.º 2
0
def test_RandomDomain():
    X = Normal('x1', 0, 1)
    assert str(where(X > 0)) == "Domain: (0 < x1) & (x1 < oo)"

    D = Die('d1', 6)
    assert str(where(D > 4)) == "Domain: (Eq(d1, 5)) | (Eq(d1, 6))"

    A = Exponential('a', 1)
    B = Exponential('b', 1)
    assert str(pspace(Tuple(A, B)).domain) == "Domain: (0 <= a) & (0 <= b) & (a < oo) & (b < oo)"
Exemplo n.º 3
0
def test_RandomDomain():
    X = Normal('x1', 0, 1)
    assert str(where(X > 0)) == "Domain: And(0 < x1, x1 < oo)"

    D = Die('d1', 6)
    assert str(where(D > 4)) == "Domain: Or(Eq(d1, 5), Eq(d1, 6))"

    A = Exponential('a', 1)
    B = Exponential('b', 1)
    assert str(pspace(Tuple(
        A, B)).domain) == "Domain: And(0 <= a, 0 <= b, a < oo, b < oo)"
Exemplo n.º 4
0
def test_input_value_assertions():
    a, b = symbols('a b')
    p, q = symbols('p q', positive=True)

    pytest.raises(ValueError, lambda: Normal('x', 3, 0))
    pytest.raises(ValueError, lambda: Normal('x', a, b))
    Normal('X', a, p)  # No error raised
    pytest.raises(ValueError, lambda: Exponential('x', a))
    Exponential('Ex', p)  # No error raised
    for fn in [Pareto, Weibull, Beta, Gamma]:
        pytest.raises(ValueError, lambda: fn('x', a, p))
        pytest.raises(ValueError, lambda: fn('x', p, a))
        fn('x', p, q)  # No error raised
Exemplo n.º 5
0
def test_rs_swap():
    X = Normal('x', 0, 1)
    Y = Exponential('y', 1)

    XX = Normal('x', 0, 2)
    YY = Normal('y', 0, 3)

    expr = 2*X + Y
    assert expr.subs(rs_swap((X, Y), (YY, XX))) == 2*XX + YY
Exemplo n.º 6
0
def test_sympyissue_10052():
    X = Exponential('X', 3)
    assert P(X < oo) == 1
    assert P(X > oo) == 0
    assert P(X < 2, X > oo) == 0
    assert P(X < oo, X > oo) == 0
    assert P(X < oo, X > 2) == 1
    assert P(X < 3, X == 2) == 0
    pytest.raises(ValueError, lambda: P(1))
    pytest.raises(ValueError, lambda: P(X < 1, 2))
Exemplo n.º 7
0
def test_exponential():
    rate = Symbol('lambda', positive=True, real=True)
    X = Exponential('x', rate)

    assert E(X) == 1 / rate
    assert variance(X) == 1 / rate**2
    assert skewness(X) == 2
    assert skewness(X) == smoment(X, 3)
    assert smoment(2 * X, 4) == smoment(X, 4)
    assert moment(X, 3) == 3 * 2 * 1 / rate**3
    assert P(X > 0) == Integer(1)
    assert P(X > 1) == exp(-rate)
    assert P(X > 10) == exp(-10 * rate)

    assert where(X <= 1).set == Interval(0, 1)

    # issue sympy/sympy#10003
    X = Exponential('x', 3)
    G = Gamma('g', 1, 2)
    assert P(X < -1) == 0
    assert P(G < -1) == 0
Exemplo n.º 8
0
def test_prefab_sampling():
    N = Normal('X', 0, 1)
    L = LogNormal('L', 0, 1)
    E = Exponential('Ex', 1)
    P = Pareto('P', 1, 3)
    W = Weibull('W', 1, 1)
    U = Uniform('U', 0, 1)
    B = Beta('B', 2, 5)
    G = Gamma('G', 1, 3)

    variables = [N, L, E, P, W, U, B, G]
    niter = 10
    for var in variables:
        for i in range(niter):
            assert sample(var) in var.pspace.domain.set
Exemplo n.º 9
0
def test_exponential():
    rate = Symbol('lambda', positive=True, extended_real=True, finite=True)
    X = Exponential('x', rate)

    assert E(X) == 1 / rate
    assert variance(X) == 1 / rate**2
    assert skewness(X) == 2
    assert skewness(X) == smoment(X, 3)
    assert smoment(2 * X, 4) == smoment(X, 4)
    assert moment(X, 3) == 3 * 2 * 1 / rate**3
    assert P(X > 0) == Integer(1)
    assert P(X > 1) == exp(-rate)
    assert P(X > 10) == exp(-10 * rate)

    assert where(X <= 1).set == Interval(0, 1)
Exemplo n.º 10
0
def test_symbolic():
    mu1, mu2 = symbols('mu1 mu2', real=True)
    s1, s2 = symbols('sigma1 sigma2', real=True, positive=True)
    rate = Symbol('lambda', real=True, positive=True)
    X = Normal('x', mu1, s1)
    Y = Normal('y', mu2, s2)
    Z = Exponential('z', rate)
    a, b, c = symbols('a b c', real=True)

    assert E(X) == mu1
    assert E(X + Y) == mu1 + mu2
    assert E(a*X + b) == a*E(X) + b
    assert variance(X) == s1**2
    assert simplify(variance(X + a*Y + b)) == variance(X) + a**2*variance(Y)

    assert E(Z) == 1/rate
    assert E(a*Z + b) == a*E(Z) + b
    assert E(X + a*Z + b) == mu1 + a/rate + b
Exemplo n.º 11
0
def test_sympyissue_8129():
    X = Exponential('X', 4)
    assert P(X >= X) == 1
    assert P(X > X) == 0
    assert P(X > X+1) == 0
Exemplo n.º 12
0
def test_sympyissue_8129():
    # pylint: disable=comparison-with-itself
    X = Exponential('X', 4)
    assert P(X >= X) == 1
    assert P(X > X) == 0
    assert P(X > X + 1) == 0
Exemplo n.º 13
0
def test_sympyissue_10003():
    X = Exponential('x', 3)
    G = Gamma('g', 1, 2)
    assert P(X < -1) == 0
    assert P(G < -1) == 0
Exemplo n.º 14
0
def test_issue_10003():
    X = Exponential('x', 3)
    G = Gamma('g', 1, 2)
    assert P(X < -1) == S.Zero
    assert P(G < -1) == S.Zero