Beispiel #1
0
 def testSubstitution2(self):
     e = parse_expr("INT x:[0,1]. exp(6*x)")
     e = rules.Substitution1("u", parse_expr("6 * x")).eval(e)
     e = rules.Linearity().eval(e)
     e = rules.OnSubterm(rules.CommonIntegral()).eval(e)
     e = rules.Simplify().eval(e)
     self.assertEqual(str(e.normalize()), "-1/6 + 1/6 * exp(6)")
Beispiel #2
0
 def testSubstitution(self):
     e = parse_expr("INT x:[0,1]. (3 * x + 1) ^ (-2)")
     e = rules.Substitution1("u", parse_expr("3 * x + 1")).eval(e)
     e = rules.Linearity().eval(e)
     e = rules.OnSubterm(rules.CommonIntegral()).eval(e)
     e = rules.Simplify().eval(e)
     self.assertEqual(e, Const(Fraction("1/4")))
Beispiel #3
0
 def eval(self, e):
     new_e = rules.Linearity().eval(e)
     if new_e != e:
         steps = [calc.LinearityStep(new_e)]
         return new_e, steps
     else:
         return e, None
Beispiel #4
0
 def testIntegrationByParts(self):
     e = parse_expr("INT x:[-1,2]. x * exp(x)")
     e = rules.IntegrationByParts(parse_expr("x"),
                                  parse_expr("exp(x)")).eval(e)
     e = rules.Simplify().eval(e)
     e = rules.Linearity().eval(e)
     e = rules.OnSubterm(rules.CommonIntegral()).eval(e)
     e = rules.Simplify().eval(e)
     self.assertEqual(str(e.normalize()), "2 * exp(-1) + exp(2)")
Beispiel #5
0
    def testLinearity(self):
        test_data = [
            ("INT x:[a,b]. 1 + 2 * x + x ^ 2",
             "(INT x:[a,b]. 1) + 2 * (INT x:[a,b]. x) + (INT x:[a,b]. x ^ 2)"),
            ("(INT u:[1,-1]. -1 * u ^ 2 + 1)",
             "-1 * (INT u:[1,-1]. u ^ 2) + (INT u:[1,-1]. 1)"),
            ("INT t:[-pi / 4,pi / 4]. 8 ^ (1/2)",
             "8 ^ (1/2) * (INT t:[-pi / 4,pi / 4]. 1)"),
            ("(INT t:[0,-1/2]. (-2)*exp(t))", "-2 * (INT t:[0,-1/2]. exp(t))"),
            ("INT x:[-1, 1]. u / (u^2 + 1) + 1 / (u^2 + 1)",
             "(INT x:[-1,1]. u / (u ^ 2 + 1)) + (INT x:[-1,1]. 1 / (u ^ 2 + 1))"
             ),
            ("INT x:[0,1]. 1/2 * x ^ 2 * (1 + x ^ 2) ^ -1",
             "1/2 * (INT x:[0,1]. x ^ 2 * (1 + x ^ 2) ^ -1)")
        ]

        rule = rules.Linearity()
        for s, s2 in test_data:
            s = parse_expr(s)
            self.assertEqual(str(rule.eval(s)), s2)
Beispiel #6
0
 def testIntegral1(self):
     e = parse_expr("INT x:[2,3]. 2 * x + x ^ 2")
     e = rules.Linearity().eval(e)
     e = rules.OnSubterm(rules.CommonIntegral()).eval(e)
     e = rules.Simplify().eval(e)
     self.assertEqual(e, Const(Fraction(34, 3)))