def test_rays(self): # test that analytic continuation to places at infinity work gammax = ComplexRay(-9) y0 = [-3.j, 3.j] gamma = RiemannSurfacePathPuiseux(self.X1, gammax, y0) y = gamma.get_y(0) self.assertAlmostEqual(y[0], -3.j) self.assertAlmostEqual(y[1], 3.j) # note: the infinity behavior may change in the future y = gamma.get_y(1) self.assertTrue(numpy.isnan(y[0])) self.assertTrue(numpy.isnan(y[1]))
def test_rays(self): # test that analytic continuation to places at infinity work gammax = ComplexRay(-9) y0 = [-3.j,3.j] gamma = RiemannSurfacePathPuiseux(self.X1, gammax, y0) y = gamma.get_y(0) self.assertAlmostEqual(y[0], -3.j) self.assertAlmostEqual(y[1], 3.j) # note: the infinity behavior may change in the future y = gamma.get_y(1) self.assertTrue(numpy.isnan(y[0])) self.assertTrue(numpy.isnan(y[1]))
def test_analytic_continuation_X1(self): gammax = ComplexLine(1, 0) y0 = [-1, 1] gamma = RiemannSurfacePathPuiseux(self.X1, gammax, y0) y = gamma.get_y(0) self.assertAlmostEqual(y[0], -1) self.assertAlmostEqual(y[1], 1) y = gamma.get_y(0.5) self.assertAlmostEqual(y[0], -sqrt(complex(0.5))) self.assertAlmostEqual(y[1], sqrt(complex(0.5))) y = gamma.get_y(0.75) self.assertAlmostEqual(y[0], -sqrt(complex(0.25))) self.assertAlmostEqual(y[1], sqrt(complex(0.25))) y = gamma.get_y(1) self.assertAlmostEqual(y[0], 0) self.assertAlmostEqual(y[1], 0) gammax = ComplexArc(2, 2, 0, pi) y0 = [-2, 2] gamma = RiemannSurfacePathPuiseux(self.X1, gammax, y0) y = gamma.get_y(0) self.assertAlmostEqual(y[0], -2) self.assertAlmostEqual(y[1], 2) y = gamma.get_y(1) self.assertAlmostEqual(y[0], 0) self.assertAlmostEqual(y[1], 0)
def test_analytic_continuation_X1(self): gammax = ComplexLine(1,0) y0 = [-1,1] gamma = RiemannSurfacePathPuiseux(self.X1, gammax, y0) y = gamma.get_y(0) self.assertAlmostEqual(y[0], -1) self.assertAlmostEqual(y[1], 1) y = gamma.get_y(0.5) self.assertAlmostEqual(y[0], -sqrt(complex(0.5))) self.assertAlmostEqual(y[1], sqrt(complex(0.5))) y = gamma.get_y(0.75) self.assertAlmostEqual(y[0], -sqrt(complex(0.25))) self.assertAlmostEqual(y[1], sqrt(complex(0.25))) y = gamma.get_y(1) self.assertAlmostEqual(y[0], 0) self.assertAlmostEqual(y[1], 0) gammax = ComplexArc(2,2,0,pi) y0 = [-2,2] gamma = RiemannSurfacePathPuiseux(self.X1, gammax, y0) y = gamma.get_y(0) self.assertAlmostEqual(y[0], -2) self.assertAlmostEqual(y[1], 2) y = gamma.get_y(1) self.assertAlmostEqual(y[0], 0) self.assertAlmostEqual(y[1], 0)
def test_analytic_continuation_X2(self): S = QQ['t']; t = S.gen() a,b,c = (t**3 - 1).roots(ring=QQbar, multiplicities=False) gammax = ComplexLine(1,0) y0 = [a,b,c] gamma = RiemannSurfacePathPuiseux(self.X2, gammax, y0) y = gamma.get_y(0) self.assertAlmostEqual(y[0], a) self.assertAlmostEqual(y[1], b) self.assertAlmostEqual(y[2], c) scale = (0.5)**(1/3.) y = gamma.get_y(0.5) self.assertAlmostEqual(y[0], scale*a) self.assertAlmostEqual(y[1], scale*b) self.assertAlmostEqual(y[2], scale*c) y = gamma.get_y(1) self.assertAlmostEqual(y[0], 0) self.assertAlmostEqual(y[1], 0) self.assertAlmostEqual(y[2], 0)
def test_analytic_continuation_X2(self): S = QQ['t'] t = S.gen() a, b, c = (t**3 - 1).roots(ring=QQbar, multiplicities=False) gammax = ComplexLine(1, 0) y0 = [a, b, c] gamma = RiemannSurfacePathPuiseux(self.X2, gammax, y0) y = gamma.get_y(0) self.assertAlmostEqual(y[0], a) self.assertAlmostEqual(y[1], b) self.assertAlmostEqual(y[2], c) scale = (0.5)**(1 / 3.) y = gamma.get_y(0.5) self.assertAlmostEqual(y[0], scale * a) self.assertAlmostEqual(y[1], scale * b) self.assertAlmostEqual(y[2], scale * c) y = gamma.get_y(1) self.assertAlmostEqual(y[0], 0) self.assertAlmostEqual(y[1], 0) self.assertAlmostEqual(y[2], 0)