Holograph1c Attract0r

日々の数学やプログラミングに関係する話。

ラマヌジャンの円周率公式を理解したい 第二回

この記事は、この記事の続きになります。

mikan-alpha.hatenablog.com

 

前回までと同じく、自由研究ライクな記事になります。
厳密な証明などを与えるわけではないので、ご了承ください。

もうちょっと準備編

前回はモジュラー形式j-不変量の導入まで書いたのですが、もう少し調べていたらこれだけでは足りないということが判明しました……。
ということで、もう少しだけ円周率公式にて登場する関数の紹介編が続きます。

以降登場する記号:
i : 虚数単位
\mathbb{H} : 虚部が正となる複素数の集合(上半平面)

Dedekindのイータ関数 \eta(\tau)

まず最初に紹介するのが、Dedekindのイータ関数です。
前回でも、実は注釈でちらっと登場していました。

任意の \tau \in \mathbb{H} に対し、q = e ^{2 \pi i \tau} を用いて次のように定義されます。

\begin{align} \displaystyle \eta(\tau) = e^{\frac{\pi i \tau}{12}} \prod_{n=1}^{\infty} \left(1-e^{2 n \pi i \tau}\right)=q^{\frac{1}{24}} \prod_{n=1}^{\infty} \left(1-q^{n}\right) \end{align}

これは、重さ 1/2 のモジュラー形式です。

前回登場した「j-不変量」は、この関数を使って定義することも可能です。

\begin{align} j(\tau) = \left( \left( \frac{\eta(\tau)}{\eta(2 \tau)} \right)^{8} + 2^{8} \left( \frac{\eta(2 \tau)}{\eta(\tau)} \right)^{16} \right)^{3} \end{align}

階乗冪・ガウスの超幾何関数

次に超幾何関数というものの紹介なのですが、その前に道具として階乗冪というものを知っている必要がありますので、そちらから。

階乗冪については、全く難しいものではありません。なんなら中学生でもわかります。差分を知っている人には馴染みがあるかも。

階乗冪には2種類あり、上昇階乗冪と下降階乗冪があるのですがここでは下降階乗冪を扱います。

\begin{align}
(x)_{n} = x^{\underline{n}} = x(x-1)(x-2) \cdots (x-n+1) = \prod_{k=1}^{n} (x-k+1) = \prod_{k=0}^{n-1}(x-k)
\end{align}

このように、x から1ずつ引いていって n 回繰り返したものが下降階乗冪です。べき乗の亜種のような感じですね。ただし、(x)_0 = 1 です。*1

n は非負整数ですが、x は必ずしも非負整数ではなく、複素数まで拡張することができますが、今回は有理数までしか登場しません。

下降階乗冪の定義域を拡張するのに使うのが、ガンマ関数を用いた以下の等式です。

\begin{align} (x)_{n} = \frac{\Gamma(x+1)}{\Gamma(x-n+1)} \end{align}

ガンマ関数は負の整数と原点に極をもつので、xx-n は負の整数ではない実数である必要があります。

 

それでは本題の超幾何関数です。

ガウスの)超幾何関数とは、超幾何級数によって以下のように定義される関数です。

\begin{align}
_2 F_{1}(a, b ; c ; z)=\sum_{n=0}^{\infty} \frac{(a)_{n}(b)_{n}}{(c)_{n}} \frac{z^{n}}{n !}
\end{align}

定義域は、|z| が1より小さい複素数です。また、c が非正整数の場合は定義されません。

これは今まで書いてきた関数とは異なり、モジュラー形式というわけではなく一般的な複素関数です。
なぜ _2 F_{1} という書き方なのかというと、この関数は一般化超幾何級数 _p F_q というものの特別な場合のためです。

モジュラー関数のみでなく、この関数も円周率公式の中核を担っています。

正規化されたアイゼンシュタイン級数

最後に、便宜のため正規化されたアイゼンシュタイン級数というのを導入します。
前回の記事で、正則アイゼンシュタイン級数 G_{2k} を導入しました。

\begin{align} G_{2 k}(\tau) = \sum_{(m, n) \in \mathbb{Z}^{2} \backslash (0,0)} \frac{1}{(m+n \tau)^{2 k}} \end{align}

 これの全体を、2 \zeta(2 k) で割ってやって新しい関数 E_{2k} を作り、こいつを正規化されたアイゼンシュタイン級数と呼んでやることにします*2

\begin{align} E_{2 k}(\tau) = \frac{G_{2 k}(\tau)}{2 \zeta(2 k)} \end{align}

q-展開の定数項が1になって扱いやすくなるので、その意味で正規化ということです。

 

さて、これでようやく道具が揃いました。
ここから、円周率公式の作り方の話に入っていきたいと思います。

円周率公式の基礎

ラマヌジャンは、次の形の円周率公式を多く発表しました。

\begin{align}
\frac{1}{\pi} = \sum_{n=0}^{\infty} h_p(n) \frac{A n + B}{C^{n}}
\end{align}

ここで、h_p(n) \, (p=1,2,3,4)多項式A,B,C はそれぞれ複素数の定数です。

\begin{align}
h_1(n) &= \frac{(6 n) !}{(3 n) ! n !^{3}} = 1728^{n} \frac{\left(\frac{1}{2}\right)_{n}\left(\frac{1}{6}\right)_{n}\left(\frac{5}{6}\right)_{n}}{n !^{3}} \\
h_2(n) &= \frac{(4 n) !}{n !^{4}} = 256^{n} \frac{\left(\frac{1}{2}\right)_{n}\left(\frac{1}{4}\right)_{n}\left(\frac{3}{4}\right)_{n}}{n !^{3}} \\
h_3(n) &= \frac{(2 n) !(3 n) !}{n !^{5}} = 108^{n} \frac{\left(\frac{1}{2}\right)_{n}\left(\frac{1}{3}\right)_{n}\left(\frac{2}{3}\right)_{n}}{n !^{3}} \\
h_4(n) &= \frac{(2 n) !^{3}}{n !^{6}} = 64^{n} \frac{\left(\frac{1}{2}\right)_{n}\left(\frac{1}{2}\right)_{n}\left(\frac{1}{2}\right)_{n}}{n !^{3}}
\end{align}

「定数を3つも決定しなくてはならないのか」と思われるかと思いますが、実は核となるのは C のみで、A,BC から計算可能です。
したがって、この円周率公式は実質一つのパラメーターから成り立っています。

 

まず初めに p=1 の場合から取り扱っていきたいと思います。
(それ以外は別の記事に分けます)

p=1 の場合

p=1 の場合、先ほど解説した E_{2k} とj-不変量のみで完結する、少し簡単な生成の仕方が存在します。

\begin{align}
\frac{\sqrt{-C}}{\pi} = \sum_{n=0}^{\infty} h_1(n) \frac{A n + B}{C^{n}}
\end{align}

このとき円周率公式は上のように書けて、またそれぞれの定数は以下のように計算されます。

\begin{align} A = \sqrt{d \left( 1728 - j(\tau) \right)} \\ B = \frac{A}{6} \left(1-\frac{E_{4}(\tau)}{E_{6}(\tau)}\left(E_{2}(\tau)-\frac{6}{\pi \sqrt{d}}\right)\right) \\ C = j(\tau) \\ E_2(\tau) = 1-24 \sum_{n=1}^{\infty} \frac{n q^{n}}{1-q^{n}} \end{align}

(諸事情でイコールの場所が揃えられなくて申し訳ありません)

ここで、q はいつものやつです。(q = e ^{2 \pi i \tau}

問題なのがAとBの計算で出てくる d という文字ですが、少し説明が難しいです……。
まず円周率公式を生成したいと思ったときに複素数 \tau を自分で決めるわけですが、なんでもいいわけではなく \tau は虚二次体の元です。
従って、有理数 a,b を使って \tau = a + b \sqrt{-d} と書けるわけです。上の式の d は、この平方根の中のやつのことです。
後ろの方に例を付けておきますので、参考にしてください。

 

ところで、ここまで読んできた方の多くは「上の関数たちはどうやって計算するんだよ」みたいになってるのではないかと思いますが、安心してください。
なんとWolframAlphaで計算できちゃいます。すごい!

Wolfram|Alpha: Computational Intelligence

j(\tau) は「1728KleinInvariantJ[ \tau ]」、\eta(\tau) は「DedekindEta[ \tau ]」で計算可能です。ぜひお試しください。(ただアイゼンシュタイン級数はちょっとめんどくさいです)

f:id:mikan_alpha:20190308165005p:plain

こんな感じでできます

 

あとは、2つほど p=1 のときの例を載せておきます。

\tau = (1 + \sqrt{-7})/2 としたとき(d=7)、j(\tau) = - 15^3 なので C=-15^3
また、A = \sqrt{7 \times (1728 + 15^3)} = 189B = 24

\tau = (\sqrt{-28})/2 としたとき(d=28)、j(\tau) = 255^3 なので C = 255^3,A = 21546i, B = 1296i

 

さて、p=1 の場合は割と簡潔に済みましたが、アイゼンシュタイン級数を使う方法ではこれ以上の一般化ができません。ここで出てくるのが超幾何関数で、こいつを用いることによりさらにバリエーション豊富な円周率公式を生成することができるようになります。(前回の記事の先頭に載せたラマヌジャンの円周率公式は、p=2 です。)
次回、ついに円周率公式の全貌が見える……?

それでは、お疲れ様でした。

参考文献など

*1:空積

*2:私が勝手に言っているだけで正式な名前ではないと思います。