pi

円周率

解の個数を数える

この記事は

この記事は数学とコンピュータ Advent Calendar 2017 - Qiita 21日目の記事になるはずだったものです。

いざ書こうと思ってみると色々理解してからの方がいい気がしてきて、いつの間にか締め切りを過ぎてしまいました。ご迷惑をおかけしました。

不完全ですが、言い訳とともに公開します。

書きたかったこと

y^2 = x^3 + x^2 - x

という方程式の解を各素数 p ごとにmod pで考え、その個数をa(p)とします。

Hasseの定理によると、この解の個数a(p)は、次の不等式をみたします。

|a(p) - 1 - p| < 2√p

つまり、(a(p) - 1 - p) / 2√p は -1 から 1 の間の実数になります。そこで、あるθpを用いてcos θp = (a(p) - 1 - p) / 2√p と表すことができます。

今回は以下のコードにより、20000以下の素数pについてθpを計算し、その分布をプロットしてみました。ここで、曲線はsin2θのグラフです。

gistef825ac42c21a87ade265ac7337c4ee5

f:id:unaoya:20171225211453p:plain

ちょっと真ん中がずれてるところが気になりますが、だいたい同じような形になっています。

このθpの分布がsin2θに従うであろうということは、佐藤幹雄と難波完爾により計算機による実験により予想されました。実際には上の形以外のy2 = xの3次式についても(いくつかの例外的な場合をのぞいて)同様の事実が成り立つことが予想されました。その経緯については難波本人により以下の文献に書かれていますのでごらんください。

http://www2.tsuda.ac.jp/suukeiken/math/suugakushi/sympo16/16_8nanba.pdf

その後、Tateにより上記の分布とL関数と呼ばれる関数の性質が結びつけられ、佐藤Tate予想と呼ばれます。

佐藤Tate予想は10年ぐらい前にTaylorたちによってL関数の性質が証明されたことで解決しました。解決の経緯は京都大学の伊藤さんによる以下の文献をごらんください。

https://www.math.kyoto-u.ac.jp/~tetsushi/files/msj200903_slide

言い訳

遅れた上に不完全なまま公開したのは以下の理由があります。

まず計算を高速化しようと思ってとりあえずnumpy使おうと思ったのですが、powerのmod pがnumpyでは実装されていませんでした。numpyのちょうどいい勉強になるので、自分で実装します。実際はpython以外の言語でやったほうがおそらくライブラリもあって早いと思うので、そのあたりも勉強します。

それから予想のTateによる定式化について説明を書こうと思ったのですが、これも勉強不足で時間が足りませんでした。

  • L関数の性質との関係について、Wiener-Ikeharaの定理と呼ばれる定理を用います。この証明について触れないと説明した気分にならないのでそれを勉強しています。

  • もう一つはなぜsin2が出てくるのかについて、これはSU(2)上の積分と関連するのですが、これもせっかくなので表現論を勉強してから改めて書いたほうが説明した気分になるのでそうすることにします。

というわけで数学とコンピュータというテーマから思いつきで佐藤Tate予想について書こうと思ったものの、勉強してみると意外と色々面白くて、せっかくの題材なのでもっと勉強してから書くことにしました。