Pebble Coding

ソフトウェアエンジニアによるIT関連技術の備忘録

素体上の楕円曲線の等分点をpythonで計算してみる

楕円曲線において n P = Oとなる点Pの集まりを等分点と呼びます。
左辺は点をn倍することを表し、右辺は無限遠点を表します。

python で有限体Fpでの楕円曲線上の有理点の群構造を調べる - Pebble Coding

以前使ったpythonスクリプトをちょっといじって計算してみました。
まずは、 y^{2} = x^{3} + x^{2} + 1 で 素体を F_5とします。

f:id:pebble8888:20170909165102p:plain

1 torsion Point:
2 torsion Point:
3 torsion Point:
 P3
 P4
4 torsion Point:
5 torsion Point:
6 torsion Point:
 P3
 P4
7 torsion Point:
8 torsion Point:

3等分点がP3, P4の2つ、6等分点がP3, P4の2つ見つかりましたが、無限遠点はn等分でもあるので、 3等分点がP3, P4, Oの3つ、6等分点がP3, P4, O の3つとなります。
ちなみに、この群の位数は9なので、全ての点は9倍すると無限遠点になります。

別の曲線でも試してみます。

 y^{2} = x^{3} + 2 + 4
 F_{13} 群位数17

1 torsion Point:
2 torsion Point:
3 torsion Point:
4 torsion Point:
5 torsion Point:
6 torsion Point:
7 torsion Point:
8 torsion Point:
9 torsion Point:
10 torsion Point:
11 torsion Point:
12 torsion Point:
13 torsion Point:
14 torsion Point:
15 torsion Point:
16 torsion Point:

等分点がひとつも見つかりませんでした。

最期です  y^{2} = x^{3} + 7
 F_{17} 群位数は18です。

f:id:pebble8888:20180706004659p:plain

1 torsion Point:
2 torsion Point:
 P5
3 torsion Point:
 P6
 P7
4 torsion Point:
 P5
5 torsion Point:
6 torsion Point:
 P5
 P6
 P7
 P10
 P11
7 torsion Point:
8 torsion Point:
 P5
9 torsion Point:
 P1
 P2
 P3
 P4
 P6
 P7
 P14
 P15
10 torsion Point:
 P5
11 torsion Point:
12 torsion Point:
 P5
 P6
 P7
 P10
 P11
13 torsion Point:
14 torsion Point:
 P5
15 torsion Point:
 P6
 P7
16 torsion Point:
 P5
17 torsion Point:

なんとなくイメージはつかめたでしょうか。
無限遠点はn等分点全てに含まれるので、n等分点の個数を数えてみると、
2->2
3->3
4->2
6->6
8->2
9->9
10->2
12->6
14->2
15->3
16->2
のようになっており、n等分点の点の個数はnの約数になっていることが分かります。

実は、n等分点だけからなる集合を考えると、有理点の群の部分群になっていることが知られています。
このn等分点だけからなる集合を E[n] と書きます。