Пример #1
0
 def test_cash_karp(self):
     a = RKcashKarp.phi()
     b = inverse(a)
     c = composition_ssa(a, b)
     result = equal_up_to_order(c, unit, self.max_order)
     self.assertEqual(result, self.max_order)
     c = composition_ssa(b, a)
     result = equal_up_to_order(c, unit, self.max_order)
     self.assertEqual(result, self.max_order)
Пример #2
0
 def test_explicit_euler(self):
     a = RKeuler.phi()
     b = inverse(a)
     c = composition_ssa(a, b)
     result = equal_up_to_order(c, unit, self.max_order)
     self.assertEqual(result, self.max_order)
     c = composition_ssa(b, a)
     result = equal_up_to_order(c, unit, self.max_order)
     self.assertEqual(result, self.max_order)
Пример #3
0
 def test_exact(self):
     a = exponential
     b = inverse(a)
     c = composition_ssa(a, b)
     result = equal_up_to_order(c, unit, self.max_order)
     self.assertEqual(result, self.max_order)
     c = composition_ssa(b, a)
     result = equal_up_to_order(c, unit, self.max_order)
     self.assertEqual(result, self.max_order)
Пример #4
0
 def test_no_2(self):
     max_order = 5
     trapezoidal = RKimplicitTrapezoidal.phi()
     imp_midpoint = RKimplicitMidpoint.phi()
     half_imp_euler = stepsize_adjustment(RKimplicitEuler.phi(),
                                          Fraction(1, 2))
     #        half_exp_euler = stepsize_adjustment(RKeuler.phi(),\
     #                                             Fraction(1, 2))
     the_conjugate = conjugate_by_commutator(imp_midpoint, half_imp_euler)
     equal_up_to_order(trapezoidal, the_conjugate, max_order)
Пример #5
0
    def test_exp_explicit_euler(self):
        a = RKeuler.phi()
        alpha_1 = log(a)
        a_1 = exp(alpha_1)
        result = equal_up_to_order(a, a_1, self.max_order)
        self.assertEqual(self.max_order, result)

        alpha_2 = modified_equation(a)
        result = equal_up_to_order(alpha_1, alpha_2, self.max_order)
        self.assertEqual(self.max_order, result)

        a_2 = exp(alpha_2)
        result = equal_up_to_order(a, a_2, self.max_order)
        self.assertEqual(self.max_order, result)
Пример #6
0
    def test_composition(self):
        "It is known that the explicit and implicit Euler methods are adjoint.\
        Furthermore, the composition implicit o explicit = trapezoidal,\
        and explicit o implicit = implicit midpoint.\
        This verifies the coproduct."

        max_order = 5
        explicit_euler = RKeuler.phi()
        implicit_euler = RKimplicitEuler.phi()
        implicit_midpoint = RKimplicitMidpoint.phi()
        implicit_trapezoidal = RKimplicitTrapezoidal.phi()
        result1 = composition_ssa(explicit_euler, implicit_euler)
        tmp = equal_up_to_order(result1, implicit_trapezoidal, max_order)
        self.assertEqual(tmp, max_order)
        result2 = composition_ssa(implicit_euler, explicit_euler)
        tmp = equal_up_to_order(result2, implicit_midpoint, max_order)
        self.assertEqual(tmp, max_order)
Пример #7
0
 def order(self):
     # a = exponential
     b = self.phi()
     return equal_up_to_order(exponential, b)
Пример #8
0
 def test(self):
     modified = modified_equation(exponential)
     result = equal_up_to_order(modified, unit_field, 8)
     self.assertEqual(8, result)
Пример #9
0
 def test_implicit_euler(self):
     a = RKimplicitEuler.phi()
     b = adjoint(a)
     result = equal_up_to_order(b, RKeuler.phi(), self.max_order)
     self.assertEqual(result, self.max_order)
Пример #10
0
 def test_lobattoB(self):
     # symmetric
     a = RKlobattoIIIB4.phi()
     b = adjoint(a)
     result = equal_up_to_order(a, b, self.max_order)
     self.assertEqual(result, self.max_order)
Пример #11
0
 def test_implicit_midpoint(self):
     # symmetric
     a = RKimplicitMidpoint.phi()
     b = adjoint(a)
     result = equal_up_to_order(a, b, self.max_order)
     self.assertEqual(result, self.max_order)
Пример #12
0
 def test_exact(self):
     # symmetric
     a = exponential
     b = adjoint(a)
     result = equal_up_to_order(a, b, self.max_order)
     self.assertEqual(result, self.max_order)