音楽室と化学室と美術室とPC室の融合部屋 所謂自由室

趣味と気分で適当に色々やります.なんかあるとたまに更新します.

プログラミング初心者でもゼータ関数をプロットしたい

前々からゼータ関数の計算に興味があったのでやってみようと思いました.

一番下にある参考文献等(思い出し次第追加します)を頼りにせっせとやってみましたのと,個人的に興味あって調べた内容をツラツラと書き連ねます.

プログラム本体は参考文献にあるものとほとんどそのままです・・・

今回は記事が長くなるのでここで折りたたみます.

 

 

ゼータ関数の基本

ディリクレ級数ゼータ関数

基本的にディリクレ級数形式のゼータ関数

\zeta{(s)} = \sum_{n=1}^{\infty}\frac{1}{n^s}

について,一般調和級数から実数xに対し

\zeta{(x)} = \sum_{n=1}^{\infty}\frac{1}{n^x}

x\gt 1のときに収束する.

 

これを引数を複素数sにした場合

\zeta{(s)} = \sum_{n=1}^{\infty}\frac{1}{n^s}

に絶対値をつけて

|\zeta{(s)}| = |\sum_{n=1}^{\infty}\frac{1}{n^s}|

|\zeta{(s)}| \lt \sum_{n=1}^{\infty}\frac{1}{|n^s|}

ここでs=\sigma + i\omegaと置換すると

|\zeta{(s)}| \lt \sum_{n=1}^{\infty}\frac{1}{|e^{\log{n}(\sigma + i\omega)}|}

|\zeta{(s)}| \lt \sum_{n=1}^{\infty}\frac{1}{e^{\log{n}\sigma}}

|\zeta{(s)}| \lt \sum_{n=1}^{\infty}n^{-\Re{(s)}}

となるため,sの実部が1超過のときに絶対収束することが示せる.

しかしこれではプロットをしようとしても複素数平面全体に関数は定義できていないので,定義域を拡張する必要がある.

そこで解析接続という函数の再定義を行い定義域を広げる必要がある.

 

解析接続ってなーに?

一致の定理

複素関数は正則な点a*1を中心としてテイラー展開*2ができる.

f(z) = \sum_{n=0}^{\infty}\alpha_n (z-a)^{n}

 もしもf(a) = 0なら定数項はゼロ\alpha_0 = 0になる.

ここで\alpha_k \neq 0となる最小のkを用いると

f(z) = (z-a)^{k}(\alpha_k + \alpha_{k+1}(z-a) + \alpha_{k+2}(z-a)^2 + \cdots)

となり(z-a)^{k}aから少しずれると0にはならないし,

(\alpha_k + \alpha_{k+1}(z-a) + \alpha_{k+2}(z-a)^2 + \cdots)

についても少しずれると0にはならないため正則関数の零点は孤立することになる.

つまり正則関数で零点がaで連続するならa周辺の小領域は零点の集積点となり,その集積点の端も零点が集積する.

これをつづけていくとf(z)は正則の範囲で恒等的に0になる.

f:id:Aryuaryuaryuryu:20200206215012p:plain

一致の定理のイメージ

そこでh(z) = f(z) - g(z)についてf(z)g(z)が正則な範囲で一部がf(z) = g(z)なら正則な範囲で恒等的にh(z) = 0になるので正則な範囲で恒等的にf(z) = g(z)となる.

 

解析接続

 ここでf(z)g(z)が共有する正則範囲で一致することはわかった.

そこで

F(z) = f(z)f(z)が正則の範囲)

F(z) = g(z)g(z)が正則の範囲)

と場合分けを行い新たに函数を定義する.これを解析接続という.

この接続は正則の範囲を共有するなら一意に決まるが,例えばg(z)f(z)を共有していない箇所で新たにh(z)f(z)に接続する場合,例えg(z)h(z)が正則の範囲を別に共有する箇所があったとしてもg(z) = h(z)とならない場合がある.

例えばこの解析接続で新たに定義域を広げた函数F(z)について性質考えると元の函数について新たな式変形ができたり発見があるかもしれないという利点がある.

ここでリーマン予想はリーマンゼータ関数\zeta(s)について解析接続した結果について函数の零点を用い因数分解を行おうとしてリーマン予想という問題にぶち当たった.

 

ゼータ関数の解析接続

ゼータ関数の解析接続はリーマンの『与えられた数より小さい素数の個数について』という論文*3で二種類の方法が提案されている.

これはオイラーが予め求めていたガンマ関数*4を用いた別の表記を用いるもので,これはガンマ関数

\Gamma(s) = \int_{0}^{\infty}t^{s-1}e^{-t}dt

からt = nudt = nduと変数変換を行い

\Gamma(s) = \int_{0}^{\infty}(nu)^{s-1}e^{-nu}(ndu)

\Gamma(s) = n^s\int_{0}^{\infty}u^{s-1}e^{-nu}du

\frac{1}{n^s}\Gamma(s) = \int_{0}^{\infty}u^{s-1}e^{-nu}du

最後にn=1から\inftyまでを足し上げると,絶対収束*5する範囲なら

\sum_{n=1}^{\infty}\frac{1}{n^s}\Gamma(s) = \sum_{n=1}^{\infty}\int_{0}^{\infty}u^{s-1}e^{-nu}du

\left(\sum_{n=1}^{\infty}\frac{1}{n^s}\right)\Gamma(s) = \int_{0}^{\infty}u^{s-1}\left(\sum_{n=1}^{\infty}e^{-nu}\right)du

\zeta(s)\Gamma(s) = \int_{0}^{\infty}\frac{u^{s-1}}{e^u-1}du

と変形ができることを示した.

リーマンはこれから複素数平面全体に解析接続できることを示し,函数等式を導出した.

1つ目の方法

 1つ目の方法は複素積分

\int_C \frac{(-z)^{s-1}}{e^z-1}dz

を用いる方法で,積分経路Cについては3つの部分から成り,1つの部分C_1\inftyから\delta\gt 0までの実軸よりすこーしだけ上,C_2は半径\deltaの原点中心の円について0から2\piまでぐるっと回る経路,C_3は実軸のすこーしだけ下側を\delta \gt 0から\inftyと戻っていく経路をとる.

f:id:Aryuaryuaryuryu:20200206214549p:plain

積分経路C

ここで注意したいのは分母がz = 2\pi iで極をとるので\delta \lt 2\piとする.

すると

 \int_C \frac{(-z)^{s-1}}{e^z-1}dz = \int_{C_1} \frac{(-z)^{s-1}}{e^z-1}dz + \int_{C_2} \frac{(-z)^{s-1}}{e^z-1}dz + \int_{C_3} \frac{(-z)^{s-1}}{e^z-1}dz

積分を分割でき,C_1の経路の積分

 \int_{C_1} \frac{(-z)^{s-1}}{e^z-1}dz = \int_{\infty}^{\delta} \frac{(e^{\log{x}-\pi i})^{s-1}}{e^x-1}dx

 \int_{C_1} \frac{(-z)^{s-1}}{e^z-1}dz = \int_{\infty}^{\delta} \frac{e^{\log{x}(s-1)-\pi i(s-1)}}{e^x-1}dx

 \int_{C_1} \frac{(-z)^{s-1}}{e^z-1}dz = -e^{-(s-1)\pi i}\int_{\delta}^{\infty} \frac{x^{s-1}}{e^x-1}dx

と変形でき,C_3積分については一周回っているので

-z = e^{\log{z}+\pi i}とする必要があるのでそこに注意しながらC_1と同じように変形を行うと

 \int_{C_3} \frac{(-z)^{s-1}}{e^z-1}dz = e^{(s-1)\pi i}\int_{\delta}^{\infty} \frac{x^{s-1}}{e^x-1}dx

が得られる.

C_2についてはz = \delta e^{i\theta}dz = i\delta e^{i\theta}d\thetaと置換しe^{x} = 1 + \frac{x}{1!} + \frac{x^2}{2!} + \frac{x^3}{3!} + \cdotsテイラー展開を用いると

 \int_{C_2} \frac{(-z)^{s-1}}{e^z-1}dz = \int_{0}^{2\pi} \frac{(-\delta e^{i\theta})^{s-1}}{\delta e^{i\theta}(1+O(\delta e^{i\theta}))}i\delta e^{i\theta}d\theta

 \int_{C_2} \frac{(-z)^{s-1}}{e^z-1}dz = i\delta^{s-1}\int_{0}^{2\pi} \frac{(- e^{i\theta})^{s-1}}{1+O(\delta e^{i\theta})}d\theta

になる.積分内は有限なので\delta \to 0のときC_2積分は0になる.

こうして\delta \to 0のとき

 \int_C \frac{(-z)^{s-1}}{e^z-1}dz = -e^{-(s-1)\pi i}\int_{0}^{\infty} \frac{x^{s-1}}{e^x-1}dx + e^{(s-1)\pi i}\int_{0}^{\infty} \frac{x^{s-1}}{e^x-1}dx

より

 \int_C \frac{(-z)^{s-1}}{e^z-1}dz = (e^{(s-1)\pi i}-e^{-(s-1)\pi i})\int_{0}^{\infty} \frac{x^{s-1}}{e^x-1}dx

が得られ,ここで

\zeta(s)\Gamma(s) = \int_{0}^{\infty}\frac{u^{s-1}}{e^u-1}du

なので

 \int_C \frac{(-z)^{s-1}}{e^z-1}dz = (e^{(s-1)\pi i}-e^{-(s-1)\pi i})\zeta(s)\Gamma(s)

ここでe^{i\theta} - e^{-i\theta} = 2i\sin{\theta}より

e^{(s-1)\pi i}-e^{-(s-1)\pi i} = 2i\sin{( (s-1)\pi)}

e^{(s-1)\pi i}-e^{-(s-1)\pi i} = 2i\sin{( s\pi-\pi)} = -2i\sin{(s\pi)}

と変形できるので

 \int_C \frac{(-z)^{s-1}}{e^z-1}dz = -2i\sin{(s\pi)}\zeta(s)\Gamma(s)

になる.

 

次に

\int_{C'} \frac{(-z)^{s-1}}{e^z-1}dz

という積分を考えるが,積分経路C'\inftyから(2m+1)\piまで(mは正の整数)の実軸の少し上側の経路を通り,原点中心で半径(2m+1)\piの円をぐるっと周り,(2m+1)\piから\inftyまでの実軸の少し下側の経路を通る経路をとる.

f:id:Aryuaryuaryuryu:20200206214626p:plain

積分経路C'

 

すると積分経路C'-Cについては閉路をとり,\pm 2\pi nで極をとる.

f:id:Aryuaryuaryuryu:20200206214711p:plain

C'-C

その極の留数は\lim_{x\to 0} \frac{x}{e^x - 1} = 1を利用すると\lim_{x\to 2n\pi i}(z-2n\pi i)\frac{(-z)^{s-1}}{e^{z-2n\pi i}-1}からRes_{2n\pi i} = (-2n\pi i)^{s-1}が得られる.

 

一方

 \int_{C'} \frac{(-z)^{s-1}}{e^z-1}dz

について一周回る箇所の経路は半径をRとおくと,z = Re^{i\theta}dz = iRe^{i\theta}d\thetaなので

 \left|\int_{C'} \frac{(-z)^{s-1}}{e^z-1}dz\right| \leq \int_{0}^{2\pi} \left|\frac{(-Re^{i\theta})^{s-1}}{e^{Re^{i\theta}}-1}iRe^{i\theta}\right|d\theta

 \left|\int_{C'} \frac{(-z)^{s-1}}{e^z-1}dz\right| \leq \int_{0}^{2\pi} \frac{R^{\Re{(s)}}}{|e^{Re^{i\theta}}-1|}d\theta

となり,e^{Re^{i\theta}}\neq 0なので分母は0になる心配はない.

もしも\Re{(s)}\lt 0ならR\to \inftyのとき分母は指数関数的に大きくなり,分子は小さくなるのでこの積分は0に収束する.

つまり留数定理から

 \frac{1}{2\pi i}\int_{C'} \frac{(-z)^{s-1}}{e^z-1}dz - \int_{C} \frac{(-z)^{s-1}}{e^z-1}dz =  \sum_{n=1}^{\infty}( (-2n\pi i)^{s-1} + (2n\pi i)^{s-1})

が得られ,\int_{C'} \frac{(-z)^{s-1}}{e^z-1}dz = 0となってしまったので

 \frac{1}{2\pi i}\int_{C} \frac{(-z)^{s-1}}{e^z-1}dz = - \sum_{n=1}^{\infty}( (2n\pi i)^{s-1} - (-2n\pi i)^{s-1})

オイラーの公式から

 \frac{1}{2\pi i}\int_{C} \frac{(-z)^{s-1}}{e^z-1}dz = - \sum_{n=1}^{\infty}( (2n\pi e^{\frac{\pi}{2}i})^{s-1} + (2n\pi e^{-\frac{\pi}{2}i})^{s-1})

と変形でき

 \frac{1}{2\pi i}\int_{C} \frac{(-z)^{s-1}}{e^z-1}dz = - \sum_{n=1}^{\infty}(2n\pi)^{s-1}(e^{\frac{\pi}{2}i(s-1)} + e^{-\frac{\pi}{2}i(s-1)})

 \frac{1}{2\pi i}\int_{C} \frac{(-z)^{s-1}}{e^z-1}dz = - \sum_{n=1}^{\infty}(2n\pi)^{s-1}2\cos{\left(\frac{\pi}{2}(s-1)\right)}

と変形ができる.

変形を続けると

 \frac{1}{2\pi i}\int_{C} \frac{(-z)^{s-1}}{e^z-1}dz = -2(2\pi)^{s-1}\sum_{n=1}^{\infty}\frac{1}{n^{1-s}}\sin{\left(\frac{\pi}{2}s\right)}

 \frac{1}{2\pi i}\int_{C} \frac{(-z)^{s-1}}{e^z-1}dz = -2(2\pi)^{s-1}\zeta(1-s)\sin{\left(\frac{\pi}{2}s\right)}

と面白い形ができる.

これまでの積分

 \int_C \frac{(-z)^{s-1}}{e^z-1}dz = -2i\sin{(s\pi)}\zeta(s)\Gamma(s)

 \frac{1}{2\pi i}\int_{C} \frac{(-z)^{s-1}}{e^z-1}dz = -2(2\pi)^{s-1}\zeta(1-s)\sin{\left(\frac{\pi}{2}s\right)}

であり,共通する積分

\int_{C} \frac{(-z)^{s-1}}{e^z-1}dz

は全平面で定義ができるから解析接続され,それぞれを代入して相反公式

\Gamma(s)\Gamma(1-s) = \frac{\pi}{\sin{(\pi s)}}

を利用して整理すると 

\zeta(s) = 2(2\pi)^{-(1-s)}\Gamma(1-s)\zeta(1-s)\sin{\left(\frac{\pi}{2}s\right)}

という函数等式が得られる.

 

2つ目の方法

関数f(x)とそのフーリエ変換\mathcal{F}(x)の関係式,ポアソンの和公式

\sum_{n=-\infty}^{\infty}f(n) = \sum_{n=-\infty}^{\infty}\mathcal{F}(n)を用いて得られるテータ変換公式

\vartheta(x) = \sum_{n=-\infty}^{\infty}e^{-\pi n^2 x}

\vartheta(x) = \frac{1}{\sqrt{x}}\vartheta\left(\frac{1}{x}\right)

を用いて函数等式を得る.

aryuaryuaryuryu.hatenablog.com

これもガンマ関数

\Gamma(s) = \int_0^\infty t^{s-1}e^{-t}dt

からt = \pi n^2 udt = \pi n^2 duと置換すると

\Gamma(s) = \int_0^\infty (\pi n^2 u)^{s-1}e^{-\pi n^2 u}\pi n^2du

\Gamma(s) = \pi^s n^{2s}\int_0^\infty u^{s-1}e^{-\pi n^2 u} du

\Gamma \left(\frac{s}{2}\right) = \pi^{\frac{s}{2}} n^{s}\int_0^\infty u^{\frac{s}{2}-1}e^{-\pi n^2 u} du

\pi^{-\frac{s}{2}}\frac{1}{n^s}\Gamma \left(\frac{s}{2}\right) = \int_0^\infty u^{\frac{s}{2}-1}e^{-\pi n^2 u} du

ここからn=1から\inftyまで足し上げると

\pi^{-\frac{s}{2}}\left(\sum_{n=1}^{\infty} \frac{1}{n^s}\right)\Gamma \left(\frac{s}{2}\right) = \int_0^\infty u^{\frac{s}{2}-1}\left(\sum_{n=1}^{\infty} e^{-\pi n^2 u}\right) du

ここで\overline{\vartheta}(u) = \sum_{n=1}^{\infty}e^{-\pi n^2 u}と関数定義すると

\vartheta(u) = \sum_{n=-\infty}^{\infty}e^{-\pi n^2 u} = 1 + 2\sum_{n=1}^{\infty}e^{-\pi n^2 u}

つまり

\vartheta(u) = 1 + 2\overline{\vartheta}(u)

及び

\overline{\vartheta}(u) = \frac{\vartheta(u)-1}{2}

が得られるので

\pi^{-\frac{s}{2}}\zeta(s)\Gamma \left(\frac{s}{2}\right) = \int_0^\infty u^{\frac{s}{2}-1}\overline{\vartheta}(u) du

\pi^{-\frac{s}{2}}\zeta(s)\Gamma \left(\frac{s}{2}\right) = \int_0^1 u^{\frac{s}{2}-1}\overline{\vartheta}(u) du + \int_1^\infty u^{\frac{s}{2}-1}\overline{\vartheta}(u) du

積分を分割する.

0\to 1積分をメインに考えると,u = \frac{1}{v}du = -\frac{1}{v^2}dvと置換すると

\int_0^1 u^{\frac{s}{2}-1}\overline{\vartheta}(u) du = \frac{1}{2}\int_0^1 u^{\frac{s}{2}-1}(\vartheta(u)-1) du

\int_0^1 u^{\frac{s}{2}-1}\overline{\vartheta}(u) du = -\frac{1}{2}\int_{1}^{\infty}\left(\frac{1}{v}\right)^{\frac{s}{2} - 1}(\vartheta\left(\frac{1}{v}\right) - 1)\left(-\frac{1}{v^2}\right)dv

テータ変換公式より

\int_0^1 u^{\frac{s}{2}-1}\overline{\vartheta}(u) du = \frac{1}{2}\int_{1}^{\infty}v^{1-\frac{s}{2}}(\sqrt{v}\vartheta(v) - 1)v^{-2}dv

\int_0^1 u^{\frac{s}{2}-1}\overline{\vartheta}(u) du = \frac{1}{2}\int_{1}^{\infty}(v^{-1-\frac{s-1}{2}}(1+2\overline{\vartheta}(v)) - v^{-1-\frac{s}{2}})dv

こうして全体の積分\Re(s)\lt 1のとき

\int_0^1 u^{\frac{s}{2}-1}\overline{\vartheta}(u) du = \frac{1}{2}\int_{1}^{\infty}(v^{-1-\frac{s-1}{2}}(1+2\overline{\vartheta}(v)) - v^{-1-\frac{s}{2}})dv + \int_1^\infty u^{\frac{s}{2}-1}\overline{\vartheta}(u) du

になるのでvuに変数変換して整理すると

\pi^{-\frac{s}{2}}\zeta(s)\Gamma \left(\frac{s}{2}\right) = \int_1^\infty \frac{\overline{\vartheta}(u)}{u}(u^{\frac{s}{2}}+u^{\frac{1-s}{2}})du - \frac{1}{s(1-s)}

という結果が得られる.

\overline{\vartheta}(u)uが多くなれば非常に小さくなるため右辺の積分は収束し,s=0s=1を除く複素平面全体に定義ができる.

この式はs1-sをそれぞれ代入した結果は同じになるので

\pi^{-\frac{s}{2}}\zeta(s)\Gamma \left(\frac{s}{2}\right) = \pi^{-\frac{1-s}{2}}\zeta(1-s)\Gamma \left(\frac{1-s}{2}\right)

という美しい関係が得られる.

 

3つ目の方法

ここではリーマンの論文にない解析接続について述べる.

ディリクレ級数形式のゼータ関数

\zeta{(s)} = \sum_{n=1}^{\infty}\frac{1}{n^s}

について,絶対収束する\Re(s)\lt 1の範囲について

\zeta{(s)} = \frac{1}{1^s} + \frac{1}{2^s} + \frac{1}{3^s} + \frac{1}{4^s} + \frac{1}{5^s} + \frac{1}{6^s} + \cdots

と記し,

\frac{2}{2^s}\zeta{(s)} = \frac{2}{2^s} + \frac{2}{4^s} + \frac{2}{6^s} + \frac{2}{8^s} + \frac{2}{10^s} + \frac{2}{12^s} + \cdots

と変形を行う.2つの差を取ると

(1-2^{1-s})\zeta{(s)} = \frac{1}{1^s} - \frac{1}{2^s} + \frac{1}{3^s} - \frac{1}{4^s} + \frac{1}{5^s} - \frac{1}{6^s} + \cdots

になる.

これをイータ関数と呼び

\eta(s) = \frac{1}{1^s} - \frac{1}{2^s} + \frac{1}{3^s} - \frac{1}{4^s} + \frac{1}{5^s} - \frac{1}{6^s} + \cdots

と定義する.

このイータ関数は交代級数なのでオイラー変換を行う.

交代級数a_0 - a_1 + a_2 - a_3 + a_4 - a_5 + \cdotsについて

a_{n+1} = Ta_{n}

を満たすバイアスTを定義し

\sum_{n=0}^{\infty}(-1)^n a_n = \sum_{n=0}^{\infty}(-T)^n a_0

\sum_{n=0}^{\infty}(-1)^n a_n = a_0\frac{1}{1+T}

\sum_{n=0}^{\infty}(-1)^n a_n = a_0\frac{1}{2-(1-T)}

\sum_{n=0}^{\infty}(-1)^n a_n = \frac{a_0}{2}\frac{1}{1-\frac{1-T}{2}}

\sum_{n=0}^{\infty}(-1)^n a_n = \frac{a_0}{2}\sum_{n=0}^{\infty}\left(\frac{1-T}{2}\right)^n

\sum_{n=0}^{\infty}(-1)^n a_n = a_0\sum_{n=0}^{\infty}2^{-1-n}\left(1-T\right)^n

\sum_{n=0}^{\infty}(-1)^n a_n = a_0\sum_{n=0}^{\infty}2^{-1-n}\sum_{k=0}^{n}\tbinom{n}{k}(-T)^k

\sum_{n=0}^{\infty}(-1)^n a_n = \sum_{n=0}^{\infty}2^{-1-n}\sum_{k=0}^{n}\tbinom{n}{k}(-1)^ka_0(T)^k

\sum_{n=0}^{\infty}(-1)^n a_n = \sum_{n=0}^{\infty}2^{-1-n}\sum_{k=0}^{n}\tbinom{n}{k}(-1)^ka_{k}

これをイータ関数に適用すると,a_n = (n+1)^sになるので

\eta(s) = \sum_{n=0}^{\infty}(-1)^n (n+1)^{-s} = \sum_{n=0}^{\infty}2^{-1-n}\sum_{k=0}^{n}\tbinom{n}{k}(-1)^k(k+1)^{-s}

となる.

\zeta{(s)} = \frac{1}{1-2^{1-s}}\eta(s)

なので

\zeta(s) = \frac{1}{1-2^{1-s}}\sum_{n=0}^{\infty}2^{-1-n}\sum_{k=0}^{n}\tbinom{n}{k}(-1)^k(k+1)^{-s}

と全複素平面に対して有効な表示が得られる.

正直この説明ではTが未知の数値であることと,定数であるということで納得いってないからもうちょっとリサーチしていきたい.

ちなみに\eta(1) = \log{2}\log{(1+x)}テイラー展開から得られる.

 

ゼータ関数の特殊値

零点について

 リーマン予想で有名な『ゼータ関数の非自明な零点』は有名だけど実際『非自明』というからには『自明な零点』というものも存在するか?というのも考える人もいると思う.

結論から言うと自明な零点は存在して,『引数が負の偶数』の点が零点になる.

函数等式

\zeta(s) = 2(2\pi)^{-(1-s)}\Gamma(1-s)\zeta(1-s)\sin{\left(\frac{\pi}{2}s\right)}

についてs = -2nとおくと

\zeta(-2n) = 2(2\pi)^{-(1+2n)}\Gamma(1+2n)\zeta(1+2n)\sin{\left(n\pi\right)}

より\Gamma(1+2n) = 2n!及び\zeta(1+2n)\lt \inftyなので

\zeta(-2n) = 0

が得られる.

非自明な零点は言わずもがな\Re(s) = \frac{1}{2}の直線上に存在すると予想されている.

今回のプロットで色々見ていけたらいいなーって思う.

 

引数が負の整数の値

自明な零点は負の偶数なのに対して,負の奇数は?というと,函数等式

\zeta(s) = 2(2\pi)^{-(1-s)}\Gamma(1-s)\zeta(1-s)\sin{\left(\frac{\pi}{2}s\right)}

s = 1-2n\ (n\gt 0)を代入した

\zeta(1-2n) = 2(2\pi)^{-(2n)}\Gamma(2n)\zeta(2n)(-1)^{n}

について,先日導出したゼータ関数の特殊値

aryuaryuaryuryu.hatenablog.com

\zeta(2n) = (-1)^{n+1} \frac{B_{2n}\cdot (2π)^{2n}}{2\cdot(2n)!}

を代入すると

\zeta(1-2n) = -\frac{B_{2n}}{2n}

が得られる.

ちなみにB_2 = \frac{1}{6}なので

\zeta(-1) = -\frac{1}{12}

が得られ,B_4 = -\frac{1}{30}なので

\zeta(-3) = \frac{1}{120}

 と特殊値を得ることができる.

 

ゼータ関数の極

 ゼータ関数 s = 1を中心にローラン展開しようとすると

\zeta(s) = \frac{1}{1-s} + \gamma + \cdots

といった感じになる.極は1位の極で留数は

\lim_{s\to 1}(1-s)\zeta(s) = 1

になる.

ところで\zeta(0)\zeta(1)函数等式の対の存在になるけどこちらはちゃんと数値をとり

\zeta(0) = -\frac{1}{2}

をとる.

 

プログラム

今回はゼータ関数の解析接続3つ目の方法をメインに計算した.

double Combination(int a, int b) {

int tmpa = a, tmpb = b;

double result = 1;

for (int i = b; i > 0; i--) {

result *= (double)tmpa / (double)tmpb; tmpa--; tmpb--; }

return result;

}
//η(a+bi)

std::complex<double> EtaFunc(std::complex<double> s) {

std::complex<double> result(0, 0), tmp(1, 0);

for (int n = 0; n <= CALCMAX; n++) {

tmp *= 0.5;

std::complex<double> sum(0, 0);

for (int k = 0; k <= n; k++) {

if (k % 2 == 0)sum += Combination(n, k) * pow(k + 1, -s);

else sum -= Combination(n, k) * pow(k + 1, -s);

}

result += sum * tmp;

if (abs(sum * tmp) <= EPSIL)break;

if (abs(result) >= INFTY)break;

}

return result;

}
std::complex <double> ZetaFunc(std::complex<double> s) {

if (s.real() >= 1. - EPSIL && s.real() <= 1. + EPSIL && s.imag() >= - EPSIL && s.imag() <= EPSIL)return INFTY;

if (s.real() < -10) {

std::complex<double> tsum(INFTY, INFTY);

int a = (int)s.real(); if( (int)s.real()) return tsum;

}

std::complex<double> Eta = EtaFunc(s);

std::complex<double> bias = 1. / (1. - pow(2., 1. - s));

std::complex<double> result = Eta * bias;

return result;

}

実行結果

\Re(s)\lt -10のときに多分オーバーフローするので\Re(s)\lt -10のときは表示しないようにした.

(0,0)から0.1ごとに計算を行い0~8までをカラースケール表示を行った.8超過は白で表示している.

また実軸と虚軸,\Re(s) = 1の直線を表示している.

Dxlibで|\zeta(s)|をプロットした結果は

f:id:Aryuaryuaryuryu:20200206185001p:plain

ゼータ関数の絶対値

となった.

 

次に左から|\zeta(s)|の0~2までの値,\Re(\zeta(s))の-2~2まで,\Im(\zeta(s))の-2~2までをプロットしてその値を飛び出ると2超過を白,0もしくは-2未満を黒で表示した.

数値が大きくなる箇所の計算が少し怪しいから白と黒についてはあまりアテにはできない.

f:id:Aryuaryuaryuryu:20200206230105p:plain
 

実部が\frac{1}{2}の直線上に青い丸が存在して

\frac{1}{2} + 14.3i

\frac{1}{2} + 21.0i

\frac{1}{2} + 25.0i

とか付近が青くなっているから多分コレが零点になると思う.

一方自明な零点は周辺がすごく小さいから非常に見にくいからちょっと見れそうにないのが残念.

 

以下はリーマン予想の問題となっているy = \left|\zeta \left(\frac{1}{2} + ix\right)\right|のグラフ.零点が結構あるのがわかる.

f:id:Aryuaryuaryuryu:20200208212852p:plain

y = |ζ(0.5 + ix)|のグラフ

f:id:Aryuaryuaryuryu:20200209153818p:plain

y = |ζ(0.5 + ix)|のグラフ2

そのうちまた何か追記するかも.

参考文献

素数とゼータ関数

複素解析

リーマンのゼータ関数

リーマンのゼータ関数の数値計算コード(複素平面) | シキノート

Jupyter Note

リーマンのゼータ関数で遊び倒そう (Ruby編) - tsujimotterのノートブック

*1:その点と点の周辺で微分可能でコーシー・リーマン関係式を満たす.複素関数は1回でも微分ができれば何回でも微分ができる.

*2:関数を整関数f(x) = \sum_{n=0}^{\infty}\alpha_n(x-a)^nで表すこと

*3:ちなみにこの論文で有名な『リーマン予想』が誕生した

*4:階乗の一般化.0以下の整数以外の全ての複素数に対し階乗を定義できる

*5:級数の各項に対し絶対値をつけた級数が収束すること