def test_diff(): assert Rational(1, 3).diff(x) is S.Zero assert I.diff(x) is S.Zero assert pi.diff(x) is S.Zero assert x.diff(x, 0) == x assert (x**2).diff(x, 2, x) == 0 assert (x**2).diff((x, 2), x) == 0 assert (x**2).diff((x, 1), x) == 2 assert (x**2).diff((x, 1), (x, 1)) == 2 assert (x**2).diff((x, 2)) == 2 assert (x**2).diff(x, y, 0) == 2*x assert (x**2).diff(x, (y, 0)) == 2*x assert (x**2).diff(x, y) == 0 raises(ValueError, lambda: x.diff(1, x)) p = Rational(5) e = a*b + b**p assert e.diff(a) == b assert e.diff(b) == a + 5*b**4 assert e.diff(b).diff(a) == Rational(1) e = a*(b + c) assert e.diff(a) == b + c assert e.diff(b) == a assert e.diff(b).diff(a) == Rational(1) e = c**p assert e.diff(c, 6) == Rational(0) assert e.diff(c, 5) == Rational(120) e = c**Rational(2) assert e.diff(c) == 2*c e = a*b*c assert e.diff(c) == a*b
def test_solve_for_functions_derivatives(): t = Symbol('t') x = Function('x')(t) y = Function('y')(t) a11, a12, a21, a22, b1, b2 = symbols('a11,a12,a21,a22,b1,b2') soln = solve([a11 * x + a12 * y - b1, a21 * x + a22 * y - b2], x, y) assert soln == { x: (a22 * b1 - a12 * b2) / (a11 * a22 - a12 * a21), y: (a11 * b2 - a21 * b1) / (a11 * a22 - a12 * a21), } assert solve(x - 1, x) == [1] assert solve(3 * x - 2, x) == [Rational(2, 3)] soln = solve([ a11 * x.diff(t) + a12 * y.diff(t) - b1, a21 * x.diff(t) + a22 * y.diff(t) - b2 ], x.diff(t), y.diff(t)) assert soln == { y.diff(t): (a11 * b2 - a21 * b1) / (a11 * a22 - a12 * a21), x.diff(t): (a22 * b1 - a12 * b2) / (a11 * a22 - a12 * a21) } assert solve(x.diff(t) - 1, x.diff(t)) == [1] assert solve(3 * x.diff(t) - 2, x.diff(t)) == [Rational(2, 3)] eqns = set((3 * x - 1, 2 * y - 4)) assert solve(eqns, set((x, y))) == {x: Rational(1, 3), y: 2} x = Symbol('x') f = Function('f') F = x**2 + f(x)**2 - 4 * x - 1 assert solve(F.diff(x), diff(f(x), x)) == [(-x + 2) / f(x)] # Mixed cased with a Symbol and a Function x = Symbol('x') y = Function('y')(t) soln = solve( [a11 * x + a12 * y.diff(t) - b1, a21 * x + a22 * y.diff(t) - b2], x, y.diff(t)) assert soln == { y.diff(t): (a11 * b2 - a21 * b1) / (a11 * a22 - a12 * a21), x: (a22 * b1 - a12 * b2) / (a11 * a22 - a12 * a21) }
def test_solve_for_functions_derivatives(): t = Symbol('t') x = Function('x')(t) y = Function('y')(t) a11, a12, a21, a22, b1, b2 = symbols('a11,a12,a21,a22,b1,b2') soln = solve([a11*x + a12*y - b1, a21*x + a22*y - b2], x, y) assert soln == { x: (a22*b1 - a12*b2)/(a11*a22 - a12*a21), y: (a11*b2 - a21*b1)/(a11*a22 - a12*a21), } assert solve(x - 1, x) == [1] assert solve(3*x - 2, x) == [Rational(2, 3)] soln = solve([a11*x.diff(t) + a12*y.diff(t) - b1, a21*x.diff(t) + a22*y.diff(t) - b2], x.diff(t), y.diff(t)) assert soln == { y.diff(t): (a11*b2 - a21*b1)/(a11*a22 - a12*a21), x.diff(t): (a22*b1 - a12*b2)/(a11*a22 - a12*a21) } assert solve(x.diff(t) - 1, x.diff(t)) == [1] assert solve(3*x.diff(t) - 2, x.diff(t)) == [Rational(2, 3)] eqns = set((3*x - 1, 2*y - 4)) assert solve(eqns, set((x, y))) == { x: Rational(1, 3), y: 2 } x = Symbol('x') f = Function('f') F = x**2 + f(x)**2 - 4*x - 1 assert solve(F.diff(x), diff(f(x), x)) == [(-x + 2)/f(x)] # Mixed cased with a Symbol and a Function x = Symbol('x') y = Function('y')(t) soln = solve([a11*x + a12*y.diff(t) - b1, a21*x + a22*y.diff(t) - b2], x, y.diff(t)) assert soln == { y.diff(t): (a11*b2 - a21*b1)/(a11*a22 - a12*a21), x: (a22*b1 - a12*b2)/(a11*a22 - a12*a21) }
def test_speed(): # this should return in 0.0s. If it takes forever, it's wrong. assert x.diff(x, 10**8) == 0