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)
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)"
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)"
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
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
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))
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
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
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)
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
def test_sympyissue_8129(): X = Exponential('X', 4) assert P(X >= X) == 1 assert P(X > X) == 0 assert P(X > X+1) == 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
def test_sympyissue_10003(): X = Exponential('x', 3) G = Gamma('g', 1, 2) assert P(X < -1) == 0 assert P(G < -1) == 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