Esempio n. 1
0
 def test_f2(self):
     x, y = self.f2.parent().gens()
     dfdy = self.f2.derivative(y)
     X = DummyRS(self.f2)
     a = map(lambda omega: omega.as_expression(), differentials(X))
     b = [x * y / dfdy, x**3 / dfdy]
     self.assertEqual(a, b)
Esempio n. 2
0
    def test_hyperelliptic_regular_places(self):
        R = QQ['x,y']
        x, y = R.gens()
        X = RiemannSurface(y**2 - (x + 1) * (x - 1) * (x - 2) * (x + 2))
        omegas = differentials(X)

        # the places above x=0 are regular
        places = X(0)
        for P in places:
            a, b = P.x, P.y
            for omega in omegas:
                omega_P = omega.centered_at_place(P)
                val1 = omega(a, b)
                val2 = omega_P(CC(0))
                self.assertLess(abs(val1 - val2), 1e-8)

        # the places above x=oo are regular: P = (1/t, \pm 1/t**2 + O(1))
        # (however, all places at infinity are treated as discriminant)
        #
        # in this particular example, omega[0] = 1/(2*y). At the places at
        # infinity, these are equal to \mp 0.5, respectively. (the switch in
        # sign comes from the derivative dxdt = -1/t**2)
        places = X('oo')
        for P in places:
            sign = P.puiseux_series.ypart[-2]
            for omega in omegas:
                omega_P = omega.centered_at_place(P)
                val1 = -sign * 0.5
                val2 = omega_P(CC(0))
                self.assertLess(abs(val1 - val2), 1e-8)
Esempio n. 3
0
 def test_f1(self):
     x, y = self.f1.parent().gens()
     dfdy = self.f1.derivative(y)
     X = DummyRS(self.f1)
     a = map(lambda omega: omega.as_expression(), differentials(X))
     b = []
     self.assertEqual(a, b)
 def test_f1(self):
     x,y = self.f1.parent().gens()
     dfdy = self.f1.derivative(y)
     X = DummyRS(self.f1)
     a = map(lambda omega: omega.as_expression(), differentials(X))
     b = []
     self.assertEqual(a,b)
 def test_f2(self):
     x,y = self.f2.parent().gens()
     dfdy = self.f2.derivative(y)
     X = DummyRS(self.f2)
     a = map(lambda omega: omega.as_expression(), differentials(X))
     b = [x*y/dfdy, x**3/dfdy]
     self.assertEqual(a,b)
    def test_hyperelliptic_regular_places(self):
        R = QQ['x,y']
        x,y = R.gens()
        X = RiemannSurface(y**2 - (x+1)*(x-1)*(x-2)*(x+2))
        omegas = differentials(X)

        # the places above x=0 are regular
        places = X(0)
        for P in places:
            a,b = P.x,P.y
            for omega in omegas:
                omega_P = omega.centered_at_place(P)
                val1 = omega(a,b)
                val2 = omega_P(CC(0))
                self.assertLess(abs(val1-val2), 1e-8)

        # the places above x=oo are regular: P = (1/t, \pm 1/t**2 + O(1))
        # (however, all places at infinity are treated as discriminant)
        #
        # in this particular example, omega[0] = 1/(2*y). At the places at
        # infinity, these are equal to \mp 0.5, respectively. (the switch in
        # sign comes from the derivative dxdt = -1/t**2)
        places = X('oo')
        for P in places:
            sign = P.puiseux_series.ypart[-2]
            for omega in omegas:
                omega_P = omega.centered_at_place(P)
                val1 = -sign*0.5
                val2 = omega_P(CC(0))
                self.assertLess(abs(val1-val2), 1e-8)
 def test_f2(self):
     x, y = self.f2.parent().gens()
     dfdy = self.f2.derivative(y)
     X = DummyRS(self.f2)
     a = [omega.as_expression() for omega in differentials(X)]
     b = [x * y / dfdy, x**3 / dfdy]
     self.assertEqual(a, b)
 def test_f1(self):
     x, y = self.f1.parent().gens()
     dfdy = self.f1.derivative(y)
     X = DummyRS(self.f1)
     a = [omega.as_expression() for omega in differentials(X)]
     b = []
     self.assertEqual(a, b)
    def test_differentials(self):
        self.assertItemsEqual(
            differentials(f1,x,y),
            [],
            )

        self.assertItemsEqual(
            differentials(f2,x,y),
            [x**3/(2*x**3 + 3*y**2), x*y/(2*x**3 + 3*y**2)],
            )

        self.assertItemsEqual(
            differentials(f3,x,y),
            [],
            )

        self.assertItemsEqual(
            differentials(f4,x,y),
            [],
            )
Esempio n. 10
0
    def test_f2_regular_places(self):
        X = self.X2
        omegas = differentials(X)

        # the places above x=1 are regular
        places = X(1)
        for P in places:
            a, b = P.x, P.y
            for omega in omegas:
                omega_P = omega.centered_at_place(P)
                val1 = omega(a, b)
                val2 = omega_P(CC(0))
                self.assertLess(abs(val1 - val2), 1e-8)
Esempio n. 11
0
    def test_f2_regular_places(self):
        X = self.X2
        omegas = differentials(X)

        # the places above x=1 are regular
        places = X(1)
        for P in places:
            a,b = P.x,P.y
            for omega in omegas:
                omega_P = omega.centered_at_place(P)
                val1 = omega(a,b)
                val2 = omega_P(CC(0))
                self.assertLess(abs(val1-val2), 1e-8)
Esempio n. 12
0
    def holomorphic_differentials(self):
        r"""Returns a basis of holomorphic differentials on the surface.

        Parameters
        ----------
        None

        Returns
        -------
        differentials : list
            A list of holomorphic differentials forming a basis.

        """
        value = differentials(self)
        return value