Exemplo n.º 1
0
def test_image_interval():
    from sympy.core.numbers import Rational
    x = Symbol('x', real=True)
    a = Symbol('a', 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)  # 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))
Exemplo n.º 2
0
def test_imageset():
    ints = S.Integers
    assert imageset(x, x - 1, S.Naturals) is S.Naturals0
    assert imageset(x, x + 1, S.Naturals0) is S.Naturals
    assert imageset(x, abs(x), S.Naturals0) is S.Naturals0
    assert imageset(x, abs(x), S.Naturals) is S.Naturals
    assert imageset(x, abs(x), S.Integers) is S.Naturals0
    # issue 16878a
    r = symbols('r', real=True)
    assert (1, r) not in imageset(x, (x, x), S.Reals)
    assert (r, r) in imageset(x, (x, x), S.Reals)
    assert 1 + I in imageset(x, x + I, S.Reals)
    assert {1} not in imageset(x, (x,), S.Reals)
    assert (1, 1) not in imageset(x, (x,) , S.Reals)
    raises(TypeError, lambda: imageset(x, ints))
    raises(ValueError, lambda: imageset(x, y, z, ints))
    raises(ValueError, lambda: imageset(Lambda(x, cos(x)), y))
    raises(ValueError, lambda: imageset(Lambda(x, x), ints, ints))
    assert imageset(cos, ints) == ImageSet(Lambda(x, cos(x)), ints)
    def f(x):
        return cos(x)
    assert imageset(f, ints) == imageset(x, cos(x), ints)
    f = lambda x: cos(x)
    assert imageset(f, ints) == ImageSet(Lambda(x, cos(x)), ints)
    assert imageset(x, 1, ints) == FiniteSet(1)
    assert imageset(x, y, ints) == {y}
    assert imageset((x, y), (1, z), ints*S.Reals) == {(1, z)}
    clash = Symbol('x', integer=true)
    assert (str(imageset(lambda x: x + clash, Interval(-2, 1)).lamda.expr)
        in ('_x + x', 'x + _x'))
    x1, x2 = symbols("x1, x2")
    assert imageset(lambda x,y: Add(x,y), Interval(1,2), Interval(2, 3)) == \
        ImageSet(Lambda((x1, x2), x1+x2), Interval(1,2), Interval(2,3))
Exemplo n.º 3
0
def test_imageset():
    ints = S.Integers
    raises(TypeError, lambda: imageset(x, ints))
    raises(ValueError, lambda: imageset(x, y, z, ints))
    raises(ValueError, lambda: imageset(Lambda(x, cos(x)), y))
    assert imageset(cos, ints) == ImageSet(Lambda(x, cos(x)), ints)
    def f(x):
        return cos(x)
    raises(TypeError, lambda: imageset(f, ints))
    f = lambda x: cos(x)
    assert imageset(f, ints) == ImageSet(Lambda(x, cos(x)), ints)
    assert imageset(x, 1, ints) == FiniteSet(1)
    assert imageset(x, y, ints) == FiniteSet(y)
    assert (str(imageset(lambda y: x + y, Interval(-2, 1)).lamda.expr)
        in ('_x + x', 'x + _x'))
Exemplo n.º 4
0
def test_imageset():
    ints = S.Integers
    raises(TypeError, lambda: imageset(x, ints))
    raises(ValueError, lambda: imageset(x, y, z, ints))
    raises(ValueError, lambda: imageset(Lambda(x, cos(x)), y))
    assert imageset(cos, ints) == ImageSet(Lambda(x, cos(x)), ints)

    def f(x):
        return cos(x)

    assert imageset(f, ints) == imageset(x, cos(x), ints)
    f = lambda x: cos(x)
    assert imageset(f, ints) == ImageSet(Lambda(x, cos(x)), ints)
    assert imageset(x, 1, ints) == FiniteSet(1)
    assert imageset(x, y, ints) == FiniteSet(y)
    clash = Symbol('x', integer=true)
    assert (str(imageset(lambda x: x + clash, Interval(-2, 1)).lamda.expr)
            in ('_x + x', 'x + _x'))
    x1, x2 = symbols("x1, x2")
    assert imageset(lambda x,y: Add(x,y), Interval(1,2), Interval(2, 3)) == \
        ImageSet(Lambda((x1, x2), x1+x2), Interval(1,2), Interval(2,3))
Exemplo n.º 5
0
def test_minima():
    from sympy import Integers
    x, y, n = symbols('x y n')
    assert minima(sin(x), x) == ImageSet(Lambda(n, 2*pi*n + 3*pi/2), Integers)
    assert minima(sin(x), x, Interval(0, 2*pi)) == {3*pi/2}
    assert minima(sin(x)-x, x) == EmptySet()
    assert minima(x - x**3, x, Interval(-1, 2)) == {-sqrt(3)/3}
    assert minima(sin(x)**2, x, Interval(-pi/2, pi/2)) == {0}
    assert minima(sin(x)*cos(x), x, Interval(0, 2*pi)) == {3*pi/4, 7*pi/4}
    #assert minima((x+3)*(x-2), x) == {-1/2}
    assert minima((x+3)/(x-2), x) == EmptySet()
    assert minima(x**5-3*x**3+2*x**2+6, x) == {0, 1}
    assert minima(exp(x), x) == EmptySet()
    assert minima(log(x) - x, x) == EmptySet()
    assert minima(y, x) == EmptySet()

    raises(ValueError, lambda : maxima(sin(x), x, S.EmptySet))
    raises(ValueError, lambda : maxima(log(cos(x)), x, S.EmptySet))
    raises(ValueError, lambda : maxima(1/(x**2 + y**2 + 1), x, S.EmptySet))
    raises(ValueError, lambda : maxima(sin(x), sin(x)))
    raises(ValueError, lambda : maxima(sin(x), x*y, S.EmptySet))
    raises(ValueError, lambda : maxima(sin(x), S(1)))