Esempio n. 1
0
    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]))
Esempio n. 3
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_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)
Esempio n. 6
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)