10

【初めてのJuliaプログラミング】とある有限群を具体的に求めてみた。

1109
0

こちらは「 日曜数学 Advent Calendar 2020 」の記事です。
素敵な力作がたくさん集まってますので、ぜひ読んでみてください。

Introduction

以前、Mathlogさんに 3日前に群を知ったねこ という記事を書き、円周群を取り上げました。

集合Cを以下とする。
C={(x,y)|x,yR, x2+y2=1}

Cの任意の元(x1,y1),(x2,y2)に対して、ある実数θ1,θ2が存在して
(x1,y1)=(cosθ1,sinθ1)(x2,y2)=(cosθ2,sinθ2)
と表せる。
演算を以下のように定義する。
(x1,y1)(x2,y2)=(cos(θ1+θ2),sin(θ1+θ2))
このとき、Cは演算に関して可換群をなす。

こちらを実数でなくZ/pZにしてみると、以下が成り立ちます。

集合Cpを以下とする。
Cp={(x,y)|x,yZ/pZ, x2+y2=1}

演算を以下のように定義する。
(x1,y1)(x2,y2)=(x1x2y1y2, x1y2+y1x2)
このとき、Cpは演算に関して可換群をなす。

Rの場合をお手本にしながら、三角関数の加法定理をヒントにして演算を定義しています。
こちらの証明は、のちのち 3日前に群を知ったねこ の続きとして、ねこさんに証明してもらいたいので、今回は省略します。

この記事では、具体的にCpの元を求め、どんな群になっているかを見ていきます。

まずは手計算で

  • p=2

C2={(x,y)|x,yZ/2Z, x2+y2=1}

(x,y)C2の元とする。

x=0とすると、y2=1より、y=1

x=1とすると、y2=0より、y=0

よって
C2={(0,1),(1,0)}
ここで
(0,1)(0,1)=(0011, 01+10)=(1,0)
となるので
C2={(0,1),(0,1)2}

よって、C2は位数2の巡回群となる。

  • p=3

C3={(x,y)|x,yZ/3Z, x2+y2=1}

(x,y)C3の元とする。

x=0とすると、y2=1より、y=±1

x=1とすると、y2=0より、y=0

x=1とすると、y2=0より、y=0

よって
C3={(0,1),(0,1),(1,0),(1,0)}
ここで
(0,1)(0,1)=(0011, 01+10)=(1,0)

(0,1)(0,1)(0,1)=(1,0)(0,1)=(1001, 11+00)=(0,1)

(0,1)(0,1)(0,1)(0,1)=(0,1)(0,1)=(00(1)1, 01+(1)0)=(1,0)
となるので
C3={(0,1),(0,1)2,(0,1)3,(0,1)4}

よって、C3は位数4の巡回群となる。

お願い!Juliaさん!

手計算が疲れてきたので、文明の利器に頼ります。丸美屋の麻婆豆腐を作ることよりも環境構築が簡単なことで有名なプログラミング言語 Julia で書きました。
AbstractAlgebra.jl というスーパー便利そうなパッケージがありますが、初心者すぎるため、今回は Primes.jl だけ使って愚直に書いてしまいました。また今度コーディングするときは、AbstractAlgebra.jlを使ってみようと思います。

計算結果

2<p<102での計算結果です。以下の順に記載しています。

  • p
  • Cpの位数
  • Cpの元(上線はついていません)

Cpの元については、一つ目に記載したものが生成元となっており、二つ目がその2乗、三つ目がその3乗、四つ目がその4乗・・・といった具合になっています。
また、位数が大きいものについては、スクロールすることで全ての元を見ることができます。

※私なりに確認はしていますが、初心者なので書いたプログラムにミスがあるかもしれません。以下の結果を真面目に参照する場合は、ぜひご自身でもご確認頂ければと思います。

p1(mod4)

p=5
位数:4

[(0,1),(4,0),(0,4),(1,0)]


p=13
位数:12

[(2,6),(7,11),(0,12),(6,11),(11,6),(12,0),(11,7),(6,2),(0,1),(7,2),(2,7),(1,0)]


p=17
位数:16

[(4,6),(14,14),(6,4),(0,1),(11,4),(3,14),(13,6),(16,0),(13,11),(3,3),(11,13),(0,16),(6,13),(14,3),(4,11),(1,0)]


p=29
位数:28

[(5,11),(20,23),(21,16),(16,21),(23,20),(11,5),(0,1),(18,5),(6,20),(13,21),(8,16),(9,23),(24,11),(28,0),(24,18),(9,6),(8,13),(13,8),(6,9),(18,24),(0,28),(11,24),(23,9),(16,8),(21,13),(20,6),(5,18),(1,0)]


p=37
位数:36

[(2,16),(7,27),(26,18),(23,8),(29,14),(19,11),(10,30),(21,35),(0,36),(16,35),(27,30),(18,11),(8,14),(14,8),(11,18),(30,27),(35,16),(36,0),(35,21),(30,10),(11,19),(14,29),(8,23),(18,26),(27,7),(16,2),(0,1),(21,2),(10,7),(19,26),(29,23),(23,29),(26,19),(7,10),(2,21),(1,0)]


p=41
位数:40

[(13,18),(9,17),(16,14),(38,19),(29,29),(19,38),(14,16),(17,9),(18,13),(0,1),(23,13),(24,9),(27,16),(22,38),(12,29),(3,19),(25,14),(32,17),(28,18),(40,0),(28,23),(32,24),(25,27),(3,22),(12,12),(22,3),(27,25),(24,32),(23,28),(0,40),(18,28),(17,32),(14,25),(19,3),(29,12),(38,22),(16,27),(9,24),(13,23),(1,0)]


p=53
位数:52

[(5,20),(49,41),(8,19),(31,43),(37,40),(21,39),(14,32),(13,16),(10,22),(34,45),(12,4),(33,48),(0,52),(20,48),(41,4),(19,45),(43,22),(40,16),(39,32),(32,39),(16,40),(22,43),(45,19),(4,41),(48,20),(52,0),(48,33),(4,12),(45,34),(22,10),(16,13),(32,14),(39,21),(40,37),(43,31),(19,8),(41,49),(20,5),(0,1),(33,5),(12,49),(34,8),(10,31),(13,37),(14,21),(21,14),(37,13),(31,10),(8,34),(49,12),(5,33),(1,0)]


p=61
位数:60

[(2,27),(7,47),(26,39),(36,48),(57,31),(9,15),(40,29),(29,40),(15,9),(31,57),(48,36),(39,26),(47,7),(27,2),(0,1),(34,2),(14,7),(22,26),(13,36),(30,57),(46,9),(32,40),(21,29),(52,15),(4,31),(25,48),(35,39),(54,47),(59,27),(60,0),(59,34),(54,14),(35,22),(25,13),(4,30),(52,46),(21,32),(32,21),(46,52),(30,4),(13,25),(22,35),(14,54),(34,59),(0,60),(27,59),(47,54),(39,35),(48,25),(31,4),(15,52),(29,21),(40,32),(9,46),(57,30),(36,13),(26,22),(7,14),(2,34),(1,0)]


p=73
位数:72

[(6,29),(71,56),(43,59),(7,68),(41,27),(47,37),(12,52),(24,3),(57,57),(3,24),(52,12),(37,47),(27,41),(68,7),(59,43),(56,71),(29,6),(0,1),(44,6),(17,71),(14,43),(5,7),(46,41),(36,47),(21,12),(70,24),(16,57),(49,3),(61,52),(26,37),(32,27),(66,68),(30,59),(2,56),(67,29),(72,0),(67,44),(2,17),(30,14),(66,5),(32,46),(26,36),(61,21),(49,70),(16,16),(70,49),(21,61),(36,26),(46,32),(5,66),(14,30),(17,2),(44,67),(0,72),(29,67),(56,2),(59,30),(68,66),(27,32),(37,26),(52,61),(3,49),(57,16),(24,70),(12,21),(47,36),(41,46),(7,5),(43,14),(71,17),(6,44),(1,0)]


p=89
位数:88

[(13,30),(70,68),(27,47),(9,86),(29,53),(33,46),(28,75),(72,35),(64,34),(79,48),(32,57),(41,10),(55,25),(54,17),(14,61),(43,56),(36,60),(3,80),(42,62),(21,19),(59,76),(0,88),(30,76),(68,19),(47,62),(86,80),(53,60),(46,56),(75,61),(35,17),(34,25),(48,10),(57,57),(10,48),(25,34),(17,35),(61,75),(56,46),(60,53),(80,86),(62,47),(19,68),(76,30),(88,0),(76,59),(19,21),(62,42),(80,3),(60,36),(56,43),(61,14),(17,54),(25,55),(10,41),(57,32),(48,79),(34,64),(35,72),(75,28),(46,33),(53,29),(86,9),(47,27),(68,70),(30,13),(0,1),(59,13),(21,70),(42,27),(3,9),(36,29),(43,33),(14,28),(54,72),(55,64),(41,79),(32,32),(79,41),(64,55),(72,54),(28,14),(33,43),(29,36),(9,3),(27,42),(70,21),(13,59),(1,0)]


p=97
位数:96

[(14,22),(3,34),(70,57),(17,10),(18,29),(2,26),(38,20),(92,49),(16,91),(65,74),(58,41),(7,7),(41,58),(74,65),(91,16),(49,92),(20,38),(26,2),(29,18),(10,17),(57,70),(34,3),(22,14),(0,1),(75,14),(63,3),(40,70),(87,17),(68,18),(71,2),(77,38),(48,92),(6,16),(23,65),(56,58),(90,7),(39,41),(32,74),(81,91),(5,49),(59,20),(95,26),(79,29),(80,10),(27,57),(94,34),(83,22),(96,0),(83,75),(94,63),(27,40),(80,87),(79,68),(95,71),(59,77),(5,48),(81,6),(32,23),(39,56),(90,90),(56,39),(23,32),(6,81),(48,5),(77,59),(71,95),(68,79),(87,80),(40,27),(63,94),(75,83),(0,96),(22,83),(34,94),(57,27),(10,80),(29,79),(26,95),(20,59),(49,5),(91,81),(74,32),(41,39),(7,90),(58,56),(65,23),(16,6),(92,48),(38,77),(2,71),(18,68),(17,87),(70,40),(3,63),(14,75),(1,0)]


p3(mod4)

p=3
位数:4

[(0,1),(2,0),(0,2),(1,0)]


p=7
位数:8

[(2,2),(0,1),(5,2),(6,0),(5,5),(0,6),(2,5),(1,0)]


p=11
位数:12

[(3,5),(6,8),(0,10),(5,8),(8,5),(10,0),(8,6),(5,3),(0,1),(6,3),(3,6),(1,0)]


p=19
位数:20

[(3,7),(17,4),(4,17),(7,3),(0,1),(12,3),(15,17),(2,4),(16,7),(18,0),(16,12),(2,15),(15,2),(12,16),(0,18),(7,16),(4,2),(17,15),(3,12),(1,0)]


p=23
位数:24

[(4,10),(8,11),(14,9),(12,15),(13,19),(0,22),(10,19),(11,15),(9,9),(15,11),(19,10),(22,0),(19,13),(15,12),(9,14),(11,8),(10,4),(0,1),(13,4),(12,8),(14,14),(8,12),(4,13),(1,0)]


p=31
位数:32

[(2,11),(7,13),(26,10),(4,27),(21,5),(18,24),(20,29),(0,30),(11,29),(13,24),(10,5),(27,27),(5,10),(24,13),(29,11),(30,0),(29,20),(24,18),(5,21),(27,4),(10,26),(13,7),(11,2),(0,1),(20,2),(18,7),(21,26),(4,4),(26,21),(7,18),(2,20),(1,0)]


p=43
位数:44

[(3,11),(17,23),(13,41),(18,8),(9,7),(36,34),(35,25),(2,30),(20,26),(32,40),(0,42),(11,40),(23,26),(41,30),(8,25),(7,34),(34,7),(25,8),(30,41),(26,23),(40,11),(42,0),(40,32),(26,20),(30,2),(25,35),(34,36),(7,9),(8,18),(41,13),(23,17),(11,3),(0,1),(32,3),(20,17),(2,13),(35,18),(36,9),(9,36),(18,35),(13,2),(17,20),(3,32),(1,0)]


p=47
位数:48

[(4,19),(31,11),(9,22),(41,24),(37,29),(20,20),(29,37),(24,41),(22,9),(11,31),(19,4),(0,1),(28,4),(36,31),(25,9),(23,41),(18,37),(27,20),(10,29),(6,24),(38,22),(16,11),(43,19),(46,0),(43,28),(16,36),(38,25),(6,23),(10,18),(27,27),(18,10),(23,6),(25,38),(36,16),(28,43),(0,46),(19,43),(11,16),(22,38),(24,6),(29,10),(20,27),(37,18),(41,23),(9,25),(31,36),(4,28),(1,0)]


p=59
位数:60

[(11,23),(5,34),(40,17),(49,45),(35,29),(13,3),(15,37),(22,44),(56,46),(30,24),(14,10),(42,19),(25,54),(36,48),(0,58),(23,48),(34,54),(17,19),(45,10),(29,24),(3,46),(37,44),(44,37),(46,3),(24,29),(10,45),(19,17),(54,34),(48,23),(58,0),(48,36),(54,25),(19,42),(10,14),(24,30),(46,56),(44,22),(37,15),(3,13),(29,35),(45,49),(17,40),(34,5),(23,11),(0,1),(36,11),(25,5),(42,40),(14,49),(30,35),(56,13),(22,15),(15,22),(13,56),(35,30),(49,14),(40,42),(5,25),(11,36),(1,0)]


p=67
位数:68

[(3,27),(17,28),(32,7),(41,14),(13,10),(37,46),(8,65),(11,9),(58,56),(2,59),(21,30),(57,54),(53,26),(60,35),(39,50),(40,64),(0,66),(27,64),(28,50),(7,35),(14,26),(10,54),(46,30),(65,59),(9,56),(56,9),(59,65),(30,46),(54,10),(26,14),(35,7),(50,28),(64,27),(66,0),(64,40),(50,39),(35,60),(26,53),(54,57),(30,21),(59,2),(56,58),(9,11),(65,8),(46,37),(10,13),(14,41),(7,32),(28,17),(27,3),(0,1),(40,3),(39,17),(60,32),(53,41),(57,13),(21,37),(2,8),(58,11),(11,58),(8,2),(37,21),(13,57),(41,53),(32,60),(17,39),(3,40),(1,0)]


p=71
位数:72

[(13,20),(53,23),(16,10),(8,24),(50,46),(14,36),(30,38),(56,29),(6,6),(29,56),(38,30),(36,14),(46,50),(24,8),(10,16),(23,53),(20,13),(0,1),(51,13),(48,53),(61,16),(47,8),(25,50),(35,14),(33,30),(42,56),(65,6),(15,29),(41,38),(57,36),(21,46),(63,24),(55,10),(18,23),(58,20),(70,0),(58,51),(18,48),(55,61),(63,47),(21,25),(57,35),(41,33),(15,42),(65,65),(42,15),(33,41),(35,57),(25,21),(47,63),(61,55),(48,18),(51,58),(0,70),(20,58),(23,18),(10,55),(24,63),(46,21),(36,57),(38,41),(29,15),(6,65),(56,42),(30,33),(14,35),(50,25),(8,47),(16,61),(53,48),(13,51),(1,0)]


p=79
位数:80

[(2,32),(7,49),(26,6),(18,54),(46,52),(8,75),(65,11),(15,48),(74,23),(44,44),(23,74),(48,15),(11,65),(75,8),(52,46),(54,18),(6,26),(49,7),(32,2),(0,1),(47,2),(30,7),(73,26),(25,18),(27,46),(4,8),(68,65),(31,15),(56,74),(35,44),(5,23),(64,48),(14,11),(71,75),(33,52),(61,54),(53,6),(72,49),(77,32),(78,0),(77,47),(72,30),(53,73),(61,25),(33,27),(71,4),(14,68),(64,31),(5,56),(35,35),(56,5),(31,64),(68,14),(4,71),(27,33),(25,61),(73,53),(30,72),(47,77),(0,78),(32,77),(49,72),(6,53),(54,61),(52,33),(75,71),(11,14),(48,64),(23,5),(44,35),(74,56),(15,31),(65,68),(8,4),(46,27),(18,25),(26,73),(7,30),(2,47),(1,0)]


p=83
位数:84

[(3,18),(17,25),(16,49),(79,20),(43,71),(13,74),(35,41),(31,6),(68,78),(45,47),(36,38),(5,15),(77,52),(42,48),(9,70),(12,40),(63,4),(34,67),(58,66),(65,80),(0,82),(18,80),(25,66),(49,67),(20,4),(71,40),(74,70),(41,48),(6,52),(78,15),(47,38),(38,47),(15,78),(52,6),(48,41),(70,74),(40,71),(4,20),(67,49),(66,25),(80,18),(82,0),(80,65),(66,58),(67,34),(4,63),(40,12),(70,9),(48,42),(52,77),(15,5),(38,36),(47,45),(78,68),(6,31),(41,35),(74,13),(71,43),(20,79),(49,16),(25,17),(18,3),(0,1),(65,3),(58,17),(34,16),(63,79),(12,43),(9,13),(42,35),(77,31),(5,68),(36,45),(45,36),(68,5),(31,77),(35,42),(13,9),(43,12),(79,63),(16,34),(17,58),(3,65),(1,0)]


感想など

日曜数学 Advent Calendar 2020 」に、以下のような素晴らしい言葉がありました。

レベルは問いませんが、面白さを読者が共感できるように「自分はなぜそのトピックを面白いと思ったのか」を熱く書いてもらえると嬉しいです。

こちらのお言葉に甘えて、少し語ろうと思います。

「なんで数学に興味を持ったんだろう?」と思い返してみると、「数って何だろう?」と思ったのが一つのきっかけだったように思います。
「毎日、微分や積分をしています!」とまではいかないまでも、お金の計算をしたり、物を数えたりというのは、多くの人が当たり前に日々やっていることです。

数は当たり前にあるもので、すごく便利だけれど、どうやら実態はなさそうだし、何だか不思議なものだなあ…と感じていました。「大学に行けば、何かわかるかもしれない」と思ったのは、数学を専攻する大きなモチベーションだったような気がします。

そのためなのか、代数学の講義を初めて受けたときは「知りたかったことをいっぱい教えてもらえた!!」と、とても嬉しくなりました。今まで自分が認識していた「数の世界」に奥行きが出て、まだ見たことのない世界へ誘われていくのを感じました。

3日前に群を知ったねこ や今回の記事は、初歩的なものかもしれませんが、あのときの「嬉しい!!」という気持ちを思い出せる題材なので、書いてみました。

初めて群や環や体と出会ったときのワクワク感は、何年経っても忘れられません!

2021年も、この記事を読んだみなさんが楽しく数学を学べますように。

投稿日:20201214
OptHub AI Competition

この記事を高評価した人

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

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

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

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

投稿者

みぽ
みぽ
161
31919
今日もねこがかわいい。

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. Introduction
  2. まずは手計算で
  3. お願い!Juliaさん!
  4. 計算結果
  5. 感想など