Я хотел бы найти эллиптические точки конгруэнц-подгрупп $ \ Gamma (N) $, $ \ Gamma_1 (N) $ и т. Д., Используя SAGE. Я знаю, что в MAGMA есть простая функция (EllipticPoints (G)), но не может найти ничего подобного в SAGE. Какие-либо предложения?Эллиптические точки в SAGE
2
A
ответ
1
Sage имеет функции Gamma
, Gamma0
, Gamma1
для определения подгрупп конгруэнции модульной группы.
Учитывая такую группу, методы nu2
и nu3
дают число эллиптических точек порядка 2 и 3-го порядка этой группы.
sage: G = Gamma0(13)
sage: G.nu2()
2
sage: G.nu3()
2
Методы ncusps
, index
, genus
дают число остриями, индекс, род конгруэнции группы.
sage: G.ncusps()
2
sage: G.index()
14
sage: G.genus()
0
документация Магма вы имеете в виду может быть это: https://magma.maths.usyd.edu.au/magma/handbook/text/1554.
В этом случае вы хотите, чтобы фактические эллиптические точки в верхней полуплоскости . Вот способ их получить.
Определите функцию elliptic_points
следующим образом.
def elliptic_points(G):
F = FareySymbol(G)
P = F.pairings()
if all(n > 0 for n in P):
return []
M = F.pairing_matrices()
ell = []
for k, n in enumerate(P):
if n < 0:
a, b, c, d = list(M[k])
R.<x> = QQbar[]
p = c*x^2 + (d-a)*x - b
for r in p.roots(multiplicities=False):
if r.imag() > 0:
ell.append(r)
return ell
Тогда следующие работы:
sage: G = Gamma0(13)
sage: ell = elliptic_points(G)
sage: ell
[0.2692307692307693? + 0.06661733875264913?*I,
0.3846153846153846? + 0.07692307692307692?*I,
0.6153846153846154? + 0.07692307692307692?*I,
0.7307692307692308? + 0.06661733875264913?*I]
sage: for p in ell:
....: print p.radical_expression()
....:
1/26*I*sqrt(3) + 7/26
1/13*I + 5/13
1/13*I + 8/13
1/26*I*sqrt(3) + 19/26
Я не мог найти эту функцию в существующем коде Sage. Возможно, стоит добавить его.