Esempio n. 1
0
def test_sympyissue_10113():
    f = x**2 / (x**2 - 4)
    assert imageset(x, f, S.Reals) == Union(Interval(-oo, 0, True),
                                            Interval(1, oo, True, True))
    assert imageset(x, f, Interval(-2, 2)) == Interval(-oo, 0, True)
    assert imageset(x, f, Interval(-2, 3)) == Union(
        Interval(-oo, 0, True), Interval(Rational(9, 5), oo, False, True))
Esempio n. 2
0
def test_image_piecewise():
    f = Piecewise((x, x <= -1), (1 / x**2, x <= 5), (x**3, True))
    f1 = Piecewise((0, x <= 1), (1, x <= 2), (2, True))
    f2 = Piecewise((x, x <= -1), (x**3, True))
    assert imageset(x, f, Interval(-5, 5)) == Union(
        Interval(-5, -1), Interval(Rational(1, 25), oo, false, true))
    assert imageset(x, f1, Interval(1, 2)) == FiniteSet(0, 1)
    assert imageset(x, f2, Interval(-2, 2)) == Interval(-2, 8)
Esempio n. 3
0
def test_sympyissue_10113():
    f = x**2/(x**2 - 4)
    assert imageset(x, f, S.Reals) == Union(Interval(-oo, 0, True),
                                            Interval(1, oo, True, True))
    assert imageset(x, f, Interval(-2, 2)) == Interval(-oo, 0, True)
    assert imageset(x, f, Interval(-2, 3)) == Union(Interval(-oo, 0, True),
                                                    Interval(Rational(9, 5),
                                                             oo, False, True))
Esempio n. 4
0
def test_image_piecewise():
    f = Piecewise((x, x <= -1), (1/x**2, x <= 5), (x**3, True))
    f1 = Piecewise((0, x <= 1), (1, x <= 2), (2, True))
    f2 = Piecewise((x, x <= -1), (x**3, True))
    assert imageset(x, f, Interval(-5, 5)) == Union(Interval(-5, -1),
                                                    Interval(Rational(1, 25),
                                                             oo, false, true))
    assert imageset(x, f1, Interval(1, 2)) == FiniteSet(0, 1)
    assert imageset(x, f2, Interval(-2, 2)) == Interval(-2, 8)
Esempio n. 5
0
def test_imageset_intersection_real():
    assert (imageset(Lambda(n, n + (n - 1) * (n + 1) * I),
                     S.Integers).intersection(S.Reals) == FiniteSet(-1, 1))

    s = ImageSet(
        Lambda(n, -I * (I * (2 * pi * n - pi / 4) + log(abs(sqrt(-I))))),
        S.Integers)
    assert s.intersection(S.Reals) == imageset(Lambda(n, 2 * n * pi - pi / 4),
                                               S.Integers)
Esempio n. 6
0
def test_image_Intersection():
    x = Symbol('x', extended_real=True)
    y = Symbol('y', extended_real=True)
    assert (imageset(x, x**2,
                     Interval(-2, 0).intersection(Interval(x, y))) == Interval(
                         0, 4).intersection(
                             Interval(Min(x**2, y**2), Max(x**2, y**2))))
Esempio n. 7
0
def test_infinitely_indexed_set_2():
    a = Symbol('a', integer=True)
    assert imageset(Lambda(n, n),
                    S.Integers) == imageset(Lambda(n, n + a), S.Integers)
    assert imageset(Lambda(n, n),
                    S.Integers) == imageset(Lambda(n, -n + a), S.Integers)
    assert imageset(Lambda(n, -6 * n),
                    S.Integers) == ImageSet(Lambda(n, 6 * n), S.Integers)
    assert imageset(Lambda(n, 2 * n + pi),
                    S.Integers) == ImageSet(Lambda(n, 2 * n + pi), S.Integers)
    assert imageset(Lambda(n, pi * n + pi),
                    S.Integers) == ImageSet(Lambda(n, pi * n + pi), S.Integers)
    assert imageset(Lambda(n, exp(n)), S.Integers) != imageset(
        Lambda(n, n), S.Integers)
Esempio n. 8
0
def test_infinitely_indexed_set_1():
    assert imageset(Lambda(n, n),
                    S.Integers) == imageset(Lambda(m, m), S.Integers)

    assert (imageset(Lambda(n, 2 * n), S.Integers).intersection(
        imageset(Lambda(m, 2 * m + 1), S.Integers)) == EmptySet())

    assert (imageset(Lambda(n, 2 * n), S.Integers).intersection(
        imageset(Lambda(n, 2 * n + 1), S.Integers)) == EmptySet())

    assert (imageset(Lambda(m, 2 * m), S.Integers).intersection(
        imageset(Lambda(n, 3 * n),
                 S.Integers)) == ImageSet(Lambda(t, 6 * t), S.Integers))
Esempio n. 9
0
def test_integers():
    Z = S.Integers
    assert 5 in Z
    assert -5 in Z
    assert 5.5 not in Z
    zi = iter(Z)
    a, b, c, d = next(zi), next(zi), next(zi), next(zi)
    assert (a, b, c, d) == (0, 1, -1, 2)
    assert isinstance(a, Basic)

    assert Z.intersection(Interval(-5, 5)) == Range(-5, 6)
    assert Z.intersection(Interval(-5, 5, True, True)) == Range(-4, 5)
    assert Z.intersection(Set(x)) == Intersection(Z, Set(x), evaluate=False)

    assert Z.inf == -oo
    assert Z.sup == oo

    assert Z.boundary == Z

    assert imageset(Lambda((x, y), x * y),
                    Z) == ImageSet(Lambda((x, y), x * y), Z)
Esempio n. 10
0
def test_intersection():
    pytest.raises(TypeError, lambda: Intersection(1))
    pytest.raises(TypeError, lambda: Intersection())

    assert Interval(0, 2).intersection(Interval(1, 2)) == Interval(1, 2)
    assert Interval(0, 2).intersection(Interval(1, 2, True)) == \
        Interval(1, 2, True)
    assert Interval(0, 2, True).intersection(Interval(1, 2)) == \
        Interval(1, 2, False, False)
    assert Interval(0, 2, True, True).intersection(Interval(1, 2)) == \
        Interval(1, 2, False, True)
    assert Interval(0, 2).intersection(Union(Interval(0, 1), Interval(2, 3))) == \
        Union(Interval(0, 1), Interval(2, 2))

    x = Symbol('x')

    assert Intersection(Interval(0, 1), FiniteSet(x)).is_iterable
    assert not Intersection(Interval(0, 1), Interval(0, x)).is_iterable

    assert FiniteSet(1, 2, x).intersection(FiniteSet(x)) == FiniteSet(x)
    assert FiniteSet('ham', 'eggs').intersection(FiniteSet('ham')) == \
        FiniteSet('ham')
    assert FiniteSet(1, 2, 3, 4, 5).intersection(S.EmptySet) == S.EmptySet

    assert Interval(0, 5).intersection(FiniteSet(1, 3)) == FiniteSet(1, 3)
    assert Interval(0, 1, True, True).intersection(FiniteSet(1)) == S.EmptySet

    assert Union(Interval(0, 1), Interval(2, 3)).intersection(Interval(1, 2)) == \
        Union(Interval(1, 1), Interval(2, 2))
    assert Union(Interval(0, 1), Interval(2, 3)).intersection(Interval(0, 2)) == \
        Union(Interval(0, 1), Interval(2, 2))
    assert Union(Interval(0, 1), Interval(2, 3)).intersection(Interval(1, 2, True, True)) == \
        S.EmptySet
    assert Union(Interval(0, 1), Interval(2, 3)).intersection(S.EmptySet) == \
        S.EmptySet
    assert Union(Interval(0, 5), FiniteSet('ham')).intersection(FiniteSet(2, 3, 4, 5, 6)) == \
        Union(FiniteSet(2, 3, 4, 5), Intersection(FiniteSet(6), Union(Interval(0, 5), FiniteSet('ham'))))

    # issue sympy/sympy#8217
    assert Intersection(FiniteSet(x), FiniteSet(y)) == \
        Intersection(FiniteSet(x), FiniteSet(y), evaluate=False)
    assert FiniteSet(x).intersection(S.Reals) == \
        Intersection(S.Reals, FiniteSet(x), evaluate=False)

    # tests for the intersection alias
    assert Interval(0, 5).intersection(FiniteSet(1, 3)) == FiniteSet(1, 3)
    assert Interval(0, 1, True, True).intersection(FiniteSet(1)) == S.EmptySet

    assert Union(Interval(0, 1), Interval(2, 3)).intersection(Interval(1, 2)) == \
        Union(Interval(1, 1), Interval(2, 2))

    assert ProductSet(FiniteSet(1),
                      FiniteSet(2)).intersection(Interval(1, 2)).is_Intersection

    # iterable
    i = Intersection(FiniteSet(1, 2, 3), Interval(2, 5), evaluate=False)
    assert i.is_iterable
    assert set(i) == {Integer(2), Integer(3)}

    # challenging intervals
    x = Symbol('x', extended_real=True)
    i = Intersection(Interval(0, 3), Interval(x, 6))
    assert (5 in i) is False
    pytest.raises(TypeError, lambda: 2 in i)

    # Singleton special cases
    assert Intersection(Interval(0, 1), S.EmptySet) == S.EmptySet
    assert Intersection(S.Reals, Interval(-oo, x, True)) == Interval(-oo, x, True)

    # Products
    line = Interval(0, 5)
    i = Intersection(line**2, line**3, evaluate=False)
    assert (2, 2) not in i
    assert (2, 2, 2) not in i
    pytest.raises(ValueError, lambda: list(i))

    assert (Intersection(Intersection(S.Integers, S.Naturals, evaluate=False),
                         S.Reals, evaluate=False) ==
            Intersection(S.Integers, S.Naturals, S.Reals, evaluate=False))

    assert (imageset(Lambda(x, x**2),
                     Intersection(FiniteSet(1, 2), FiniteSet(2, 3),
                                  evaluate=False)) == FiniteSet(4))
Esempio n. 11
0
def test_infinitely_indexed_diophantine():
    assert (imageset(Lambda(m, 2 * pi * m), S.Integers).intersection(
        imageset(Lambda(n, 3 * pi * n),
                 S.Integers)) == ImageSet(Lambda(t, 6 * pi * t), S.Integers))
Esempio n. 12
0
def test_image_Intersection():
    x = Symbol('x', extended_real=True)
    y = Symbol('y', extended_real=True)
    assert (imageset(x, x**2, Interval(-2, 0).intersection(Interval(x, y))) ==
            Interval(0, 4).intersection(Interval(Min(x**2, y**2),
                                                 Max(x**2, y**2))))
Esempio n. 13
0
def test_image_interval():
    x = Symbol('x', extended_real=True)
    a = Symbol('a', extended_real=True)
    assert imageset(x, 2*x, Interval(-2, 1)) == Interval(-4, 2)
    assert imageset(x, 2*x, Interval(-2, 1, True, False)) == \
        Interval(-4, 2, True, False)
    assert imageset(x, x**2, Interval(-2, 1, True, False)) == \
        Interval(0, 4, False, True)
    assert imageset(x, x**2, Interval(-2, 1)) == Interval(0, 4)
    assert imageset(x, x**2, Interval(-2, 1, True, False)) == \
        Interval(0, 4, False, True)
    assert imageset(x, x**2, Interval(-2, 1, True, True)) == \
        Interval(0, 4, False, True)
    assert imageset(x, (x - 2)**2, Interval(1, 3)) == Interval(0, 1)
    assert imageset(x, 3*x**4 - 26*x**3 + 78*x**2 - 90*x, Interval(0, 4)) == \
        Interval(-35, 0)  # Multiple Maxima
    assert imageset(x, x + 1/x, Interval(-oo, oo)) == Interval(-oo, -2) \
        + Interval(2, oo)  # Single Infinite discontinuity
    assert imageset(x, 1/x + 1/(x - 1)**2, Interval(0, 2, True, False)) == \
        Interval(Rational(3, 2), oo, False, True)  # Multiple Infinite discontinuities

    # Test for Python lambda
    assert imageset(lambda x: 2*x, Interval(-2, 1)) == Interval(-4, 2)

    assert (imageset(Lambda(x, a*x), Interval(0, 1)) ==
            ImageSet(Lambda(x, a*x), Interval(0, 1)))

    assert (imageset(Lambda(x, sin(cos(x))), Interval(0, 1)) ==
            ImageSet(Lambda(x, sin(cos(x))), Interval(0, 1)))

    assert imageset(x, -(x - 2)*(x + 2),
                    Interval(-3, 4)) == Interval(-12, 4)

    assert (imageset(z, 2*z, ImageSet(Lambda((x, y), x*y),
                                      Interval(0, 2))) ==
            ImageSet(Lambda(z, 2*z), ImageSet(Lambda((x, y), x*y),
                                              Interval(0, 2))))
Esempio n. 14
0
def test_image_EmptySet():
    x = Symbol('x', extended_real=True)
    assert imageset(x, 2*x, S.EmptySet) == S.EmptySet
Esempio n. 15
0
def test_image_is_ImageSet():
    assert isinstance(imageset(x, sqrt(sin(x)), Range(5)), ImageSet)
Esempio n. 16
0
def test_image_FiniteSet():
    x = Symbol('x', extended_real=True)
    assert imageset(x, 2*x, FiniteSet(1, 2, 3)) == FiniteSet(2, 4, 6)
Esempio n. 17
0
def test_image_Union():
    x = Symbol('x', extended_real=True)
    assert (imageset(x, x**2, Interval(-2, 0) + FiniteSet(1, 2, 3)) ==
            Interval(0, 4) + FiniteSet(9))
Esempio n. 18
0
def test_image_interval():
    x = Symbol('x', extended_real=True)
    a = Symbol('a', extended_real=True)
    assert imageset(x, 2*x, Interval(-2, 1)) == Interval(-4, 2)
    assert imageset(x, 2*x, Interval(-2, 1, True, False)) == \
        Interval(-4, 2, True, False)
    assert imageset(x, x**2, Interval(-2, 1, True, False)) == \
        Interval(0, 4, False, True)
    assert imageset(x, x**2, Interval(-2, 1)) == Interval(0, 4)
    assert imageset(x, x**2, Interval(-2, 1, True, False)) == \
        Interval(0, 4, False, True)
    assert imageset(x, x**2, Interval(-2, 1, True, True)) == \
        Interval(0, 4, False, True)
    assert imageset(x, (x - 2)**2, Interval(1, 3)) == Interval(0, 1)
    assert imageset(x, 3*x**4 - 26*x**3 + 78*x**2 - 90*x, Interval(0, 4)) == \
        Interval(-35, 0)  # Multiple Maxima
    assert imageset(x, x + 1/x, Interval(-oo, oo)) == Interval(-oo, -2) \
        + Interval(2, oo)  # Single Infinite discontinuity
    assert imageset(x, 1/x + 1/(x - 1)**2, Interval(0, 2, True, False)) == \
        Interval(Rational(3, 2), oo, False, True)  # Multiple Infinite discontinuities

    # Test for Python lambda
    assert imageset(lambda x: 2*x, Interval(-2, 1)) == Interval(-4, 2)

    assert (imageset(Lambda(x, a*x), Interval(0, 1)) ==
            ImageSet(Lambda(x, a*x), Interval(0, 1)))

    assert (imageset(Lambda(x, sin(cos(x))), Interval(0, 1)) ==
            ImageSet(Lambda(x, sin(cos(x))), Interval(0, 1)))

    assert imageset(x, -(x - 2)*(x + 2),
                    Interval(-3, 4)) == Interval(-12, 4)

    assert (imageset(z, 2*z, ImageSet(Lambda((x, y), x*y),
                                      Interval(0, 2))) ==
            ImageSet(Lambda(z, 2*z), ImageSet(Lambda((x, y), x*y),
                                              Interval(0, 2))))
Esempio n. 19
0
def test_image_FiniteSet():
    x = Symbol('x', extended_real=True)
    assert imageset(x, 2*x, FiniteSet(1, 2, 3)) == FiniteSet(2, 4, 6)
Esempio n. 20
0
def test_infinitely_indexed_set_3():
    assert imageset(Lambda(n, 2 * n + 1),
                    S.Integers) == imageset(Lambda(n, 2 * n - 1), S.Integers)
    assert imageset(Lambda(n, 3 * n + 2),
                    S.Integers) == imageset(Lambda(n, 3 * n - 1), S.Integers)
Esempio n. 21
0
def test_image_EmptySet():
    x = Symbol('x', extended_real=True)
    assert imageset(x, 2*x, S.EmptySet) == S.EmptySet
Esempio n. 22
0
def test_image_Union():
    x = Symbol('x', extended_real=True)
    assert (imageset(x, x**2, Interval(-2, 0) + FiniteSet(1, 2, 3)) ==
            Interval(0, 4) + FiniteSet(9))
Esempio n. 23
0
def test_ImageSet_simplification():
    assert imageset(Lambda(n, n), S.Integers) == S.Integers
    assert (imageset(Lambda(n, sin(n)),
                     imageset(Lambda(m, tan(m)),
                              S.Integers)) == imageset(Lambda(m, sin(tan(m))),
                                                       S.Integers))
Esempio n. 24
0
def test_intersection():
    pytest.raises(TypeError, lambda: Intersection(1))
    pytest.raises(TypeError, lambda: Intersection())

    assert Interval(0, 2).intersection(Interval(1, 2)) == Interval(1, 2)
    assert Interval(0, 2).intersection(Interval(1, 2, True)) == \
        Interval(1, 2, True)
    assert Interval(0, 2, True).intersection(Interval(1, 2)) == \
        Interval(1, 2, False, False)
    assert Interval(0, 2, True, True).intersection(Interval(1, 2)) == \
        Interval(1, 2, False, True)
    assert Interval(0, 2).intersection(Union(Interval(0, 1), Interval(2, 3))) == \
        Union(Interval(0, 1), Interval(2, 2))

    x = Symbol('x')

    assert Intersection(Interval(0, 1), FiniteSet(x)).is_iterable
    assert not Intersection(Interval(0, 1), Interval(0, x)).is_iterable

    assert FiniteSet(1, 2, x).intersection(FiniteSet(x)) == FiniteSet(x)
    assert FiniteSet('ham', 'eggs').intersection(FiniteSet('ham')) == \
        FiniteSet('ham')
    assert FiniteSet(1, 2, 3, 4, 5).intersection(S.EmptySet) == S.EmptySet

    assert Interval(0, 5).intersection(FiniteSet(1, 3)) == FiniteSet(1, 3)
    assert Interval(0, 1, True, True).intersection(FiniteSet(1)) == S.EmptySet

    assert Union(Interval(0, 1), Interval(2, 3)).intersection(Interval(1, 2)) == \
        Union(Interval(1, 1), Interval(2, 2))
    assert Union(Interval(0, 1), Interval(2, 3)).intersection(Interval(0, 2)) == \
        Union(Interval(0, 1), Interval(2, 2))
    assert Union(Interval(0, 1), Interval(2, 3)).intersection(Interval(1, 2, True, True)) == \
        S.EmptySet
    assert Union(Interval(0, 1), Interval(2, 3)).intersection(S.EmptySet) == \
        S.EmptySet
    assert Union(Interval(0, 5), FiniteSet('ham')).intersection(FiniteSet(2, 3, 4, 5, 6)) == \
        Union(FiniteSet(2, 3, 4, 5), Intersection(FiniteSet(6), Union(Interval(0, 5), FiniteSet('ham'))))

    # issue sympy/sympy#8217
    assert Intersection(FiniteSet(x), FiniteSet(y)) == \
        Intersection(FiniteSet(x), FiniteSet(y), evaluate=False)
    assert FiniteSet(x).intersection(S.Reals) == \
        Intersection(S.Reals, FiniteSet(x), evaluate=False)

    # tests for the intersection alias
    assert Interval(0, 5).intersection(FiniteSet(1, 3)) == FiniteSet(1, 3)
    assert Interval(0, 1, True, True).intersection(FiniteSet(1)) == S.EmptySet

    assert Union(Interval(0, 1), Interval(2, 3)).intersection(Interval(1, 2)) == \
        Union(Interval(1, 1), Interval(2, 2))

    assert ProductSet(FiniteSet(1),
                      FiniteSet(2)).intersection(Interval(1, 2)).is_Intersection

    # iterable
    i = Intersection(FiniteSet(1, 2, 3), Interval(2, 5), evaluate=False)
    assert i.is_iterable
    assert set(i) == {Integer(2), Integer(3)}

    # challenging intervals
    x = Symbol('x', extended_real=True)
    i = Intersection(Interval(0, 3), Interval(x, 6))
    assert (5 in i) is False
    pytest.raises(TypeError, lambda: 2 in i)

    # Singleton special cases
    assert Intersection(Interval(0, 1), S.EmptySet) == S.EmptySet
    assert Intersection(S.Reals, Interval(-oo, x, True)) == Interval(-oo, x, True)

    # Products
    line = Interval(0, 5)
    i = Intersection(line**2, line**3, evaluate=False)
    assert (2, 2) not in i
    assert (2, 2, 2) not in i
    pytest.raises(ValueError, lambda: list(i))

    assert (Intersection(Intersection(S.Integers, S.Naturals, evaluate=False),
                         S.Reals, evaluate=False) ==
            Intersection(S.Integers, S.Naturals, S.Reals, evaluate=False))

    assert (imageset(Lambda(x, x**2),
                     Intersection(FiniteSet(1, 2), FiniteSet(2, 3),
                                  evaluate=False)) == FiniteSet(4))