Esempio n. 1
0
def test_Subs_subs():
    assert Subs(x * y, x, x).subs(x, y) == Subs(x * y, x, y)
    assert Subs(x * y, x, x + 1).subs(x, y) == Subs(x * y, x, y + 1)
    assert Subs(x * y, y, x + 1).subs(x, y) == Subs(y**2, y, y + 1)
    a = Subs(x * y * z, (y, x, z), (x + 1, x + z, x))
    b = Subs(x * y * z, (y, x, z), (x + 1, y + z, y))
    assert a.subs(x, y) == b and a.doit().subs(x, y) == a.subs(x, y).doit()
    f = Function("f")
    g = Function("g")
    assert Subs(2 * f(x, y) + g(x), f(x, y),
                1).subs(y, 2) == Subs(2 * f(x, y) + g(x), (f(x, y), y), (1, 2))
Esempio n. 2
0
 def s_check(rv, ans):
     # get the dummy
     rv = list(rv)
     d = rv[0].atoms(Dummy)
     reps = zip(d, [s]*len(d))
     # replace s with this dummy
     rv = (rv[0].subs(reps).expand(), [(p[0].subs(reps), p[1].subs(reps))
                                for p in rv[1]],
           [a.subs(reps) for a in rv[2]])
     ans = (ans[0].subs(reps).expand(), [(p[0].subs(reps), p[1].subs(reps))
                                for p in ans[1]],
            [a.subs(reps) for a in ans[2]])
     return str(rv[0]) in [str(ans[0]), str(-ans[0])] and \
         str(rv[1:]) == str(ans[1:])
Esempio n. 3
0
 def s_check(rv, ans):
     # get the dummy
     rv = list(rv)
     d = rv[0].atoms(Dummy)
     reps = zip(d, [s] * len(d))
     # replace s with this dummy
     rv = (rv[0].subs(reps).expand(), [
         (p[0].subs(reps), p[1].subs(reps)) for p in rv[1]
     ], [a.subs(reps) for a in rv[2]])
     ans = (ans[0].subs(reps).expand(), [
         (p[0].subs(reps), p[1].subs(reps)) for p in ans[1]
     ], [a.subs(reps) for a in ans[2]])
     return str(rv[0]) in [str(ans[0]), str(-ans[0])] and \
         str(rv[1:]) == str(ans[1:])
Esempio n. 4
0
def test_Subs_subs():
    assert Subs(x*y, x, x).subs(x, y) == Subs(x*y, x, y)
    assert Subs(x*y, x, x + 1).subs(x, y) == \
        Subs(x*y, x, y + 1)
    assert Subs(x*y, y, x + 1).subs(x, y) == \
        Subs(y**2, y, y + 1)
    a = Subs(x*y*z, (y, x, z), (x + 1, x + z, x))
    b = Subs(x*y*z, (y, x, z), (x + 1, y + z, y))
    assert a.subs(x, y) == b and \
        a.doit().subs(x, y) == a.subs(x, y).doit()
    f = Function('f')
    g = Function('g')
    assert Subs(2*f(x, y) + g(x), f(x, y), 1).subs(y, 2) == Subs(
        2*f(x, y) + g(x), (f(x, y), y), (1, 2))
Esempio n. 5
0
 def t(m, a, b):
     from sympy import sympify, Piecewise
     a, b = sympify([a, b])
     m_ = m
     m = hyperexpand(m)
     if not m == Piecewise((a, abs(z) < 1), (b, abs(1/z) < 1), (m_, True)):
         return False
     if not (m.args[0].args[0] == a and m.args[1].args[0] == b):
         return False
     z0 = randcplx()/10
     if abs(m.subs(z, z0).n() - a.subs(z, z0).n()).n() > 1e-10:
         return False
     if abs(m.subs(z, 1/z0).n() - b.subs(z, 1/z0).n()).n() > 1e-10:
         return False
     return True
Esempio n. 6
0
 def t(m, a, b):
     from sympy import sympify, Piecewise
     a, b = sympify([a, b])
     m_ = m
     m = hyperexpand(m)
     if not m == Piecewise((a, abs(z) < 1), (b, abs(1/z) < 1), (m_, True)):
         return False
     if not (m.args[0].args[0] == a and m.args[1].args[0] == b):
         return False
     z0 = randcplx()/10
     if abs(m.subs(z, z0).n() - a.subs(z, z0).n()).n() > 1e-10:
         return False
     if abs(m.subs(z, 1/z0).n() - b.subs(z, 1/z0).n()).n() > 1e-10:
         return False
     return True