2016-12-11 27 views
2

Я хотел бы найти эллиптические точки конгруэнц-подгрупп $ \ Gamma (N) $, $ \ Gamma_1 (N) $ и т. Д., Используя SAGE. Я знаю, что в MAGMA есть простая функция (EllipticPoints (G)), но не может найти ничего подобного в SAGE. Какие-либо предложения?Эллиптические точки в SAGE

ответ

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. Возможно, стоит добавить его.

 Смежные вопросы

  • Нет связанных вопросов^_^