3
大学数学基礎解説
文献あり

Juliaで有限環の単元群を具体的に求めてみた。

728
1

Introduction

龍孫江さんの動画で紹介されている命題に関する内容を、実際にプログラミングして、具体的に求めてみようという記事です。

動画内の命題

pを奇素数とする。
R=Fp[T]/(T2+1)
とし、Rの単元群をR×とする。

このとき、以下が成り立つ。

R×の位数は
p1(mod4)のとき(p1)2
p3(mod4)のときp21

今回の目標

具体的な奇素数pに対して

  1. R×の元を全て求める
  • RR×の元を全て求める
  • p1(mod4)のとき、Fp[T]T2+1を分解する
  • p1(mod4)のとき、Rの極大イデアルに含まれるRの元を全て求める
  • p1(mod4)のとき、4で求めたもの全体がRR×に一致することを確認する

ということをしてみたいと思います。

既に証明されていることではありますが、せっかくなので実際にやってみて「本当だ~!」と喜んでみたいと思います。

※使用した言語のパッケージの関係上、T、および、動画内のt(=T+(T2+1))を、計算結果では、どちらもxとしています。また、計算結果は、プログラムを実行して出力されたものをそのまま貼り付けているため、読みにくい等あると思いますが、ご了承ください。

使うパッケージ

Julia言語の便利パッケージ「 AbstractAlgebra.jl 」を使います。有限体、多項式環、剰余環が書けるので、今回のテーマにピッタリだと思います。
パソコンの中に数学の世界が入ってきて、嬉しいです(プログラミング初心者並みの感想)。

AbstractAlgebra.jlの使い方を少しだけ

以下のように、有限体・多項式環・剰余環を書くことができます。

      using AbstractAlgebra

# FpをF_5とする
Fp = GF(5)

# SをFp[x]とする
S, x = PolynomialRing(Fp, "x")
        
# RをFp[x]/(x^2+1)とする
R = ResidueRing(S, x^2+1)
    

以下のように、S(=Fp[X])の元を書くことができます。

      julia> f = S([1,1])
x + 1

julia> g = S([3,2,1])
x^2 + 2*x + 3
    

以下のように、上記のf,gに対応するRの元(剰余類)を書くことができます。

      julia> R(f)
x + 1

julia> R(g)
2*x + 2
    

isunit関数を使うことにより、可逆元か否かを調べることができます。

      julia> R(f)
x + 1

julia> isunit(R(f))
true

julia> h = S([0])
0

julia> isunit(R(h))
false
    

可逆元の場合、inv関数を使うことにより、乗法逆元を求めることができます。

      julia> R(f)
x + 1

julia> inv(R(f))
2*x + 3

julia> R(f)*inv(R(f))
1
    

これらの道具を組み合わせて、プログラムを書いてみました。

計算結果1:R×の元

位数が大きいものを載せると大変なことになりそうなので、p=3,5,7の場合の結果のみ記載します。

  • R×の各元と各元の乗法逆元
  • 位数
  • p1(mod4)のときは(p1)2
  • p3(mod4)のときはp21

の順で記載しています。

  • p=5
    1(inverse:1)
    2(inverse:3)
    3(inverse:2)
    4(inverse:4)
    x(inverse:4x)
    x + 1(inverse:2
    x + 3)
    x + 4(inverse:2x + 2)
    2
    x(inverse:2x)
    2
    x + 2(inverse:x + 4)
    2x + 3(inverse:x + 1)
    3
    x(inverse:3x)
    3
    x + 2(inverse:4x + 4)
    3
    x + 3(inverse:4x + 1)
    4
    x(inverse:x)
    4x + 1(inverse:3x + 3)
    4x + 4(inverse:3x + 2)
    order:16
    (p-1)^2:4^2=16

  • p=3
    1(inverse:1)
    2(inverse:2)
    x(inverse:2x)
    x + 1(inverse:x + 2)
    x + 2(inverse:x + 1)
    2
    x(inverse:x)
    2x + 1(inverse:2x + 2)
    2x + 2(inverse:2x + 1)
    order:8
    p^2-1:9-1=8

  • p=7
    1(inverse:1)
    2(inverse:4)
    3(inverse:5)
    4(inverse:2)
    5(inverse:3)
    6(inverse:6)
    x(inverse:6x)
    x + 1(inverse:3
    x + 4)
    x + 2(inverse:4x + 6)
    x + 3(inverse:2
    x + 1)
    x + 4(inverse:2x + 6)
    x + 5(inverse:4
    x + 1)
    x + 6(inverse:3x + 3)
    2
    x(inverse:3x)
    2
    x + 1(inverse:x + 3)
    2x + 2(inverse:5x + 2)
    2x + 3(inverse:2x + 4)
    2x + 4(inverse:2x + 3)
    2x + 5(inverse:5x + 5)
    2x + 6(inverse:x + 4)
    3
    x(inverse:2x)
    3
    x + 1(inverse:6x + 5)
    3
    x + 2(inverse:3x + 5)
    3
    x + 3(inverse:x + 6)
    3x + 4(inverse:x + 1)
    3
    x + 5(inverse:3x + 2)
    3
    x + 6(inverse:6x + 2)
    4
    x(inverse:5x)
    4
    x + 1(inverse:x + 5)
    4x + 2(inverse:4x + 5)
    4x + 3(inverse:6x + 6)
    4x + 4(inverse:6x + 1)
    4x + 5(inverse:4x + 2)
    4x + 6(inverse:x + 2)
    5
    x(inverse:4x)
    5
    x + 1(inverse:6x + 3)
    5
    x + 2(inverse:2x + 2)
    5
    x + 3(inverse:5x + 4)
    5
    x + 4(inverse:5x + 3)
    5
    x + 5(inverse:2x + 5)
    5
    x + 6(inverse:6x + 4)
    6
    x(inverse:x)
    6x + 1(inverse:4x + 4)
    6x + 2(inverse:3x + 6)
    6x + 3(inverse:5x + 1)
    6x + 4(inverse:5x + 6)
    6x + 5(inverse:3x + 1)
    6x + 6(inverse:4x + 3)
    order:48
    p^2-1:49-1=48

計算結果2:RR×の元

次に、RR×の元を具体的に求めてみました。3p23の場合の結果のみ記載しています。

  • RR×の各元
  • 元の個数
  • p1(mod4)のときは2p1

の順で記載しています。

  • p=5
    0
    x + 2
    x + 3
    2x + 1
    2
    x + 4
    3x + 1
    3
    x + 4
    4x + 2
    4
    x + 3
    a number of elements:9
    2p-1:10-1=9

  • p=13
    0
    x + 5
    x + 8
    2x + 3
    2
    x + 10
    3x + 2
    3
    x + 11
    4x + 6
    4
    x + 7
    5x + 1
    5
    x + 12
    6x + 4
    6
    x + 9
    7x + 4
    7
    x + 9
    8x + 1
    8
    x + 12
    9x + 6
    9
    x + 7
    10x + 2
    10
    x + 11
    11x + 3
    11
    x + 10
    12x + 5
    12
    x + 8
    a number of elements:25
    2p-1:26-1=25

  • p=17
    0
    x + 4
    x + 13
    2x + 8
    2
    x + 9
    3x + 5
    3
    x + 12
    4x + 1
    4
    x + 16
    5x + 3
    5
    x + 14
    6x + 7
    6
    x + 10
    7x + 6
    7
    x + 11
    8x + 2
    8
    x + 15
    9x + 2
    9
    x + 15
    10x + 6
    10
    x + 11
    11x + 7
    11
    x + 10
    12x + 3
    12
    x + 14
    13x + 1
    13
    x + 16
    14x + 5
    14
    x + 12
    15x + 8
    15
    x + 9
    16x + 4
    16
    x + 13
    a number of elements:33
    2p-1:34-1=33

  • p=3
    0
    a number of elements:1

  • p=7
    0
    a number of elements:1

  • p=11
    0
    a number of elements:1

  • p=19
    0
    a number of elements:1

  • p=23
    0
    a number of elements:1

計算結果3:T2+1の分解

p3(mod4)のとき、T2+1は既約なので、p1(mod4)の場合のみ計算しました。5p41の場合の結果のみ記載しています。

  • p=5
    x^2+1=(x + 2)*(x + 3)

  • p=13
    x^2+1=(x + 5)*(x + 8)

  • p=17
    x^2+1=(x + 4)*(x + 13)

  • p=29
    x^2+1=(x + 12)*(x + 17)

  • p=37
    x^2+1=(x + 6)*(x + 31)

  • p=41
    x^2+1=(x + 9)*(x + 32)

計算結果4:極大イデアルの元

p1(mod4)の場合のみ計算しました。5p17の場合の結果のみ記載しています。

  • 極大イデアルの各元
  • 元の個数

の順で記載しています。

  • p=5
    • (x + 3)
      0
      x + 3
      2x + 1
      3
      x + 4
      4*x + 2
      a number of elements:5
      - (x + 2)
    

0
x + 2
2x + 4
3
x + 1
4*x + 3
a number of elements:5

  • p=13
    • (x + 8)
      0
      x + 8
      2x + 3
      3
      x + 11
      4x + 6
      5
      x + 1
      6x + 9
      7
      x + 4
      8x + 12
      9
      x + 7
      10x + 2
      11
      x + 10
      12*x + 5
      a number of elements:13
      - (x + 5)
    

0
x + 5
2x + 10
3
x + 2
4x + 7
5
x + 12
6x + 4
7
x + 9
8x + 1
9
x + 6
10x + 11
11
x + 3
12*x + 8
a number of elements:13

  • p=17
    • (x + 13)
      0
      x + 13
      2x + 9
      3
      x + 5
      4x + 1
      5
      x + 14
      6x + 10
      7
      x + 6
      8x + 2
      9
      x + 15
      10x + 11
      11
      x + 7
      12x + 3
      13
      x + 16
      14x + 12
      15
      x + 8
      16*x + 4
      a number of elements:17
      - (x + 4)
    

0
x + 4
2x + 8
3
x + 12
4x + 16
5
x + 3
6x + 7
7
x + 11
8x + 15
9
x + 2
10x + 6
11
x + 10
12x + 14
13
x + 1
14x + 5
15
x + 9
16*x + 13
a number of elements:17

計算結果5:極大イデアルとRR×

p1(mod4)の場合のみ計算しました。5p17の場合の結果のみ記載しています。

  • 2つの極大イデアルを合併したものの各元(計算結果4で求めたものを活用)
  • 各元が可逆元か否か?(isunit関数を使用)
  • 元の個数

の順で記載しています。

  • p=5
    x + 3
    isunit(x + 3)?:false
    2x + 1
    isunit(2
    x + 1)?:false
    3x + 4
    isunit(3
    x + 4)?:false
    4x + 2
    isunit(4
    x + 2)?:false
    0
    isunit(0)?:false
    x + 2
    isunit(x + 2)?:false
    2x + 4
    isunit(2
    x + 4)?:false
    3x + 1
    isunit(3
    x + 1)?:false
    4x + 3
    isunit(4
    x + 3)?:false
    a number of elements:9
  • p=13
    x + 8
    isunit(x + 8)?:false
    2x + 3
    isunit(2
    x + 3)?:false
    3x + 11
    isunit(3
    x + 11)?:false
    4x + 6
    isunit(4
    x + 6)?:false
    5x + 1
    isunit(5
    x + 1)?:false
    6x + 9
    isunit(6
    x + 9)?:false
    7x + 4
    isunit(7
    x + 4)?:false
    8x + 12
    isunit(8
    x + 12)?:false
    9x + 7
    isunit(9
    x + 7)?:false
    10x + 2
    isunit(10
    x + 2)?:false
    11x + 10
    isunit(11
    x + 10)?:false
    12x + 5
    isunit(12
    x + 5)?:false
    0
    isunit(0)?:false
    x + 5
    isunit(x + 5)?:false
    2x + 10
    isunit(2
    x + 10)?:false
    3x + 2
    isunit(3
    x + 2)?:false
    4x + 7
    isunit(4
    x + 7)?:false
    5x + 12
    isunit(5
    x + 12)?:false
    6x + 4
    isunit(6
    x + 4)?:false
    7x + 9
    isunit(7
    x + 9)?:false
    8x + 1
    isunit(8
    x + 1)?:false
    9x + 6
    isunit(9
    x + 6)?:false
    10x + 11
    isunit(10
    x + 11)?:false
    11x + 3
    isunit(11
    x + 3)?:false
    12x + 8
    isunit(12
    x + 8)?:false
    a number of elements:25
  • p=17
    x + 13
    isunit(x + 13)?:false
    2x + 9
    isunit(2
    x + 9)?:false
    3x + 5
    isunit(3
    x + 5)?:false
    4x + 1
    isunit(4
    x + 1)?:false
    5x + 14
    isunit(5
    x + 14)?:false
    6x + 10
    isunit(6
    x + 10)?:false
    7x + 6
    isunit(7
    x + 6)?:false
    8x + 2
    isunit(8
    x + 2)?:false
    9x + 15
    isunit(9
    x + 15)?:false
    10x + 11
    isunit(10
    x + 11)?:false
    11x + 7
    isunit(11
    x + 7)?:false
    12x + 3
    isunit(12
    x + 3)?:false
    13x + 16
    isunit(13
    x + 16)?:false
    14x + 12
    isunit(14
    x + 12)?:false
    15x + 8
    isunit(15
    x + 8)?:false
    16x + 4
    isunit(16
    x + 4)?:false
    0
    isunit(0)?:false
    x + 4
    isunit(x + 4)?:false
    2x + 8
    isunit(2
    x + 8)?:false
    3x + 12
    isunit(3
    x + 12)?:false
    4x + 16
    isunit(4
    x + 16)?:false
    5x + 3
    isunit(5
    x + 3)?:false
    6x + 7
    isunit(6
    x + 7)?:false
    7x + 11
    isunit(7
    x + 11)?:false
    8x + 15
    isunit(8
    x + 15)?:false
    9x + 2
    isunit(9
    x + 2)?:false
    10x + 6
    isunit(10
    x + 6)?:false
    11x + 10
    isunit(11
    x + 10)?:false
    12x + 14
    isunit(12
    x + 14)?:false
    13x + 1
    isunit(13
    x + 1)?:false
    14x + 5
    isunit(14
    x + 5)?:false
    15x + 9
    isunit(15
    x + 9)?:false
    16x + 13
    isunit(16
    x + 13)?:false
    a number of elements:33

感想など

プログラムを書いたり、具体例を実際に眺めたりするのは、学習する上で効果的っぽいな…と思いました。そして、具体例を眺めたからこそ、「すべての奇素数p」を対象としている数学の良さを再認識できました。

Julia言語の代数学関連のパッケージは、他にもあるようなので(下記)、色々使って慣れていきたいと思います。

★最後に、また改めて龍孫江さんの動画URLを貼っておきます!必見ですよ~!
環論:有限環の単元群4

参考文献

投稿日:202119
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

みぽ
みぽ
163
32344
今日もねこがかわいい。

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. Introduction
  2. 動画内の命題
  3. 今回の目標
  4. 使うパッケージ
  5. AbstractAlgebra.jlの使い方を少しだけ
  6. 計算結果1:R×の元
  7. 計算結果2:RR×の元
  8. 計算結果3:T2+1の分解
  9. 計算結果4:極大イデアルの元
  10. 計算結果5:極大イデアルとRR×
  11. 感想など
  12. 参考文献