模形式与Hecke算子¶
同余子群¶
定义¶
同余子群是群的子群 \(\mathrm{{SL}}_2(\ZZ)\) 行列式 \(\pm 1\) 包含
对于某个正整数 \(N\) . 自从 \(\Gamma(N)\) 在中具有有限索引 \(\mathrm{{SL}}_2(\ZZ)\) 所有同余子群都有有限指数。反之亦然,但在许多其他情况下,它是正确的(参见 [Serre纸] )
倒像 \(\Gamma_0(N)\) 上三角矩阵的子群 \(\mathrm{{SL}}_2(\ZZ/N\ZZ)\) 是同余子群,倒像也是同余子群 \(\Gamma_1(N)\) 矩阵的子群的形式 \(\left(\begin{{smallmatrix}}1&*\\0&1\end{{smallmatrix}}\right)\) . 此外,对于任何子组 \(H\subset (\ZZ/N\ZZ)^*\) ,倒像 \(\Gamma_H(N)\) 的子群 \(\mathrm{{SL}}_2(\ZZ/N\ZZ)\) 形式的所有元素 \(\left(\begin{{smallmatrix}}a&*\\0&d\end{{smallmatrix}}\right)\) 具有 \(d \in H\) 是同余子群。
我们可以使用Gamma0、Gamma1和GammaH命令在Sage中创建上述同余子群。
sage: Gamma0(8)
Congruence Subgroup Gamma0(8)
sage: Gamma1(13)
Congruence Subgroup Gamma1(13)
sage: GammaH(11,[3])
Congruence Subgroup Gamma_H(11) with H generated by [3]
GammaH命令的第二个参数是子组的生成器列表 \(H\) 属于 \((\ZZ/N\ZZ)^*\) .
生成器¶
Sage可以计算这些子组的生成器列表。Sage使用的算法是一个简单的泛型过程,它对同余子群(容易枚举)使用陪集代表来获得生成器列表 [[参考我的模块化表格手册] ]
不幸的是,Sage计算出的生成器列表非常多。改进这将是一个优秀的Sage开发项目,它将涉及许多漂亮的数学。
更新(2012年3月):上述项目已经实施(由几个人,特别是Hartmut Monien,基于Chris Kurth的早期工作)。Sage现在使用了一种更先进的基于Farey符号的算法来计算 极小值 发电机组。
sage: Gamma0(2).gens()
(
[1 1] [ 1 -1]
[0 1], [ 2 -1]
)
sage: Gamma0(2).gens(algorithm="todd-coxeter") # the old implementation
(
[1 1] [-1 0] [ 1 -1] [ 1 -1] [-1 1]
[0 1], [ 0 -1], [ 0 1], [ 2 -1], [-2 1]
)
sage: len(Gamma1(13).gens())
15
模块化形式¶
定义¶
同余子群上的模形式 \(\Gamma\) 整数权重 \(k\) 是一个全纯函数 \(f(z)\) 在上半平面上
对于每个矩阵 \(\left(\begin{{smallmatrix}}a&b\\c&d\end{{smallmatrix}}\right)\in\Gamma\) ,我们有
尖点形式是在所有尖点处消失的模块形式 \(\QQ \cup \{{i\infty\}}\) .
如果 \(\Gamma\) 包含 \(\Gamma_1(N)\) 对某些人来说 \(N\) 然后 \(\left(\begin{{smallmatrix}}1&1\\0&1\end{{smallmatrix}}\right)\in\Gamma\) 如此 the modular form condition 意味着 \(f(z) = f(z+1)\) . 这,再加上全态性条件,意味着 \(f(z)\) 具有傅里叶展开
具有 \(a_n\in\CC\) . 我们让 \(q = e^{{2\pi i z}}\) 和呼叫 \(f = \sum_{{n=0}}^{{\infty}} a_n q^n\) 这个 \(q\) -扩展 \(f\) .
Sage创造¶
从今以后我们假设 \(\Gamma\) 要么是 \(\Gamma_1(N)\) , \(\Gamma_0(N)\) 或 \(\Gamma_H(N)\) 对某些人来说 \(H\) 和 \(N\) . 复向量空间 \(M_k(\Gamma)\) 所有模块化的重量 \(k\) 在 \(\Gamma\) 是一个有限维向量空间。
我们创造空间 \(M_k(\Gamma)\) 在Sage中键入 ModularForms(G, k) 在哪里? \(G\) 是同余子群和 \(k\) 就是重量。
sage: ModularForms(Gamma0(25), 4)
Modular Forms space of dimension 11 for ...
sage: S = CuspForms(Gamma0(25),4, prec=15); S
Cuspidal subspace of dimension 5 of Modular Forms space ...
sage: S.basis()
[
q + q^9 - 8*q^11 - 8*q^14 + O(q^15),
q^2 - q^7 - q^8 - 7*q^12 + 7*q^13 + O(q^15),
q^3 + q^7 - 2*q^8 - 6*q^12 - 5*q^13 + O(q^15),
q^4 - q^6 - 3*q^9 + 5*q^11 - 2*q^14 + O(q^15),
q^5 - 4*q^10 + O(q^15)
]
尺寸公式¶
Sage使用简单的算术公式计算所有这些空间的维数,而不是实际计算这些空间的基数。事实上,Sage拥有任何软件中最通用的模块形式维度公式集合 help(sage.modular.dims) 查看用于实现这些维度公式的算术函数列表。
sage: ModularForms(Gamma1(949284), 456).dimension()
11156973844800
sage: a = [dimension_cusp_forms(Gamma0(N),2) for N in [1..25]]; a
[0, 0, ..., 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 2, 2, 1, 0]
sage: oeis(a) # optional - internet
0: A001617: Genus of modular group Gamma_0(n). Or, genus of modular curve X_0(n).
Sage没有简单的公式来计算重量的模型空间的维数 \(1\) ,因为这样的公式可能不存在。
菱形支架操作员¶
空间 \(M_k(\Gamma_1(N))\) 配备有一个动作 \((\ZZ/N\ZZ)^*\) 菱形支架操作员 \(\langle d \rangle\) ,这会导致分解
其中和在有限交换群的所有复特征上 \((\ZZ/N\ZZ)^*\) . 这些字符被称为Dirichlet字符,在数论中是核心。
因素 \(M_k(N,\varepsilon)\) 那么有谁的基地 \(q\) -扩展是 \(R[[q]]\) 在哪里 \(R = \ZZ[\varepsilon]\) 环生成结束了吗 \(\ZZ\) 根据图像 \(\varepsilon\) . 我们用 \(N=k=5\) 下面,后面将介绍DirichletGroup。
sage: CuspForms(DirichletGroup(5).0, 5).basis()
[
q + (-zeta4 - 1)*q^2 + (6*zeta4 - 6)*q^3 - ... + O(q^6)
]
狄利克雷特字符¶
使用DirichletGroup(N,R)命令创建模数的所有Dirichlet字符组 \(N\) 在拳击场上获得价值 \(R\) .如果 \(R\) 则默认为分圆字段。
sage: G = DirichletGroup(8); G
Group of Dirichlet characters modulo 8 with values in Cyclotomic Field of order 2 and degree 1
sage: v = G.list(); v
[Dirichlet character modulo 8 of conductor 1 mapping 7 |--> 1, 5 |--> 1,
Dirichlet character modulo 8 of conductor 4 mapping 7 |--> -1, 5 |--> 1,
Dirichlet character modulo 8 of conductor 8 mapping 7 |--> 1, 5 |--> -1,
Dirichlet character modulo 8 of conductor 8 mapping 7 |--> -1, 5 |--> -1]
sage: eps = G.0; eps
Dirichlet character modulo 8 of conductor 4 mapping 7 |--> -1, 5 |--> 1
sage: eps.values()
[0, 1, 0, -1, 0, 1, 0, -1]
Sage通过给出一个“矩阵”来表示Dirichlet字符,即 \((\ZZ/N\ZZ)^*\) ,并作为向量对整数进行模运算 \(n\) . 多年来,我一直在这两种表示法之间纠结,直到J.Quer和我意识到最好的方法是同时使用这两种方法,并使它们之间的转换变得容易。
sage: parent(eps.element())
Vector space of dimension 2 over Ring of integers modulo 2
给定Dirichlet字符,Sage还可以计算相关的Jacobi和Gauss和、广义Bernoulli数、导体、Galois轨道等。
分解 \(M_k(\Gamma_1(N))\)¶
回想一下Dirichlet字符会分解
给了一个狄利克雷特的角色 \(\varepsilon\) 我们输入ModularForms(eps,weight)以创建具有该字符和给定整数权重的模块形式空间。例如,我们创造了重量形式的空间 \(5\) 用字符模 \(8\) 上面是 \(-1\) 在 \(3\) 和 \(1\) 在 \(5\) 如下所述。
sage: ModularForms(eps,5)
Modular Forms space of dimension 6, character [-1, 1] and
weight 5 over Rational Field
sage: sum([ModularForms(eps,5).dimension() for eps in v])
11
sage: ModularForms(Gamma1(8),5)
Modular Forms space of dimension 11 ...
注解
练习:计算所有空间的尺寸 \(M_2(37,\varepsilon)\) 对于所有的狄利克雷特角色 \(\varepsilon\) .
赫克算子¶
空间 \(M_k(\Gamma)\) 配有一个换向环的作用 \(\mathbb{{T}}\) 赫克算子 \(T_n\) 对于 \(n\geq 1\) . 模形式理论中的一个标准计算问题是计算 \(q\) -扩展 \(M_k(\Gamma)\) 以及任何Hecke算子的作用矩阵 \(T_n\) ,并计算子空间 \(S_k(\Gamma)\) 尖端形状。
sage: M = ModularForms(Gamma0(11),4)
sage: M.basis()
[
q + 3*q^3 - 6*q^4 - 7*q^5 + O(q^6),
q^2 - 4*q^3 + 2*q^4 + 8*q^5 + O(q^6),
1 + O(q^6),
q + 9*q^2 + 28*q^3 + 73*q^4 + 126*q^5 + O(q^6)
]
sage: M.hecke_matrix(2)
[0 2 0 0]
[1 2 0 0]
[0 0 9 0]
[0 0 0 9]
我们还可以计算尖点子空间上的Hecke算子。
sage: S = M.cuspidal_subspace()
sage: S.hecke_matrix(2)
[0 2]
[1 2]
sage: S.hecke_matrix(3)
[ 3 -8]
[-4 -5]
Hecke操作员开启 \(M_k(\Gamma_1(N))\)¶
在这些讲座第一次撰写时,Sage还没有实现Hecke算子的计算 \(M_k(\Gamma_1(N))\) ,但随后添加了以下内容:
sage: M = ModularForms(Gamma1(5),2)
sage: M
Modular Forms space of dimension 3 for Congruence Subgroup
Gamma1(5) of weight 2 over Rational Field
sage: M.hecke_matrix(2)
[ -21 0 -240]
[ -2 0 -23]
[ 2 1 24]
这些是通过首先计算模符号上的Hecke运算符来计算的 \(\Gamma_1(N)\) ,这是一个 \(\mathbb{{T}}\) -与同构的模块 \(M_k(\Gamma_1(N))\) (见 模块化符号 )
sage: ModularSymbols(Gamma1(5),2,sign=1).hecke_matrix(2)
[ 2 1 1]
[ 1 2 -1]
[ 0 0 -1]