def test_integral_expressions_against_real_hamiltonian(self): extractor = IntegralExtractor(self.hill.alg) extractor.set_complex_normal_hamiltonian(self.hill.k_dc) extractor.find_lost_simple_integrals_and_non_simple_integral() extractor.list_the_simple_integrals() extractor.express_simple_part_as_polynomial_over_all_integrals() extractor.express_both_parts_as_polynomial_over_all_integrals() extractor.express_all_integrals_in_normal_form_coords() k_dc_in_ints = extractor._total_in_integrals ints_in_coords = extractor._integrals_in_coords r_ints_in_coords = [ one_int.substitute(self.hill.sub_r_into_c) for one_int in ints_in_coords ] res = Polynomial(6) for po, co in k_dc_in_ints.powers_and_coefficients(): tmp = Polynomial.One(6) for i, po_i in enumerate(po): if po_i > 0: tmp *= (r_ints_in_coords[i]**po_i) res += co * tmp eval_at_ints = res diff = eval_at_ints - self.hill.k_dr self.assert_(diff.l_infinity_norm() < 1.0e-15, diff) eval_at_ints = k_dc_in_ints.substitute(r_ints_in_coords) diff = eval_at_ints - self.hill.k_dr self.assert_(diff.l_infinity_norm() < 1.0e-15, diff)
def one(self): return Polynomial.One(self.n_vars())