6

ゼータ関数の値を精度よく求める方法と解析接続

793
0

ζ(s)=k=01ks   (Res>1)
で表されるリーマンゼータ関数に対し以下の公式が成り立ちます。

ζ(s)=k=1n1ks11sn1s12ns+j=1mB2j(2j)!(s)2j1ns2j+1+O(nRe(s)2m1)
ここで、(s)n=s(s+1)(s+2)(s+n1)(上昇階乗冪)です。

証明には以下のオイラー・マクローリンの公式を使います。

オイラー・マクローリンの和公式

k=1Nf(x)=0Nf(x)dx+f(N)2f(0)2+j=1mB2j(2j)!(f(2j1)(N)f(2j1)(0))+R2m+1

Rm=(1)(m+1)0NBn(xx)m!f(m)(x)dx
ただしBnはベルヌーイ数、Bn(x)はベルヌーイ多項式です

m1大きくとってとおいてf(x)=1(n+x)s,Nとし、Bn(xx)が有界であることに注意して積分を評価すると示すことができます。
この公式を使うことで定義通りにゼータ関数を計算するよりも速く計算することができます。

例としてζ(2)=π26=1.644934066を計算することを考えます。定義通りに計算すると1.6449に達するまで約3万項足す必要がありますが、ζ(2)k=1n1ks1n12n2+16n3(上の公式でm=1としたもの)とすると、n=10近似値が1.64493439となり少ない項である程度精度のよい値が求まります。

mが大きいと急激に精度が良くなるように見えますがnが小さすぎるとむしろ精度が悪化します。特にnを固定してmとすると収束しません。

証明は省略しますがこの公式は解析接続されたゼータ関数に対しても成り立ち、そこからゼータ関数の定義域を拡張した表示

ζ(s)=limn(k=1n1ks11sn1s12ns+j=1mB2j(2j)!(s)2j1ns2j+1)(s1,Res>2m1)

が得られます。(ここで証明は省略します)

例としてs1,Res>3で成り立つ表示
ζ(s)=limn(k=1n1ks11sn1s12ns+s12n1s)
を使っていくつかの値を計算してみると、
ζ(0)=limn(k=1n1n12)=12
ζ(1)=limn(k=1nk12n212n112)=112
ζ(0)=lims0limn(k=1nlogkks1(1s)2n1s+logn1sn1s+logn2ns+112n1sslogn12n1s)=limn(logn!n+nlogn+logn2+112n1)=limn(lognnnenn!+112n1)=log2π2
ζ(1)=lims1limn(k=1nlogkks1(1s)2n1s+logn1sn1s+logn2ns+112n1sslogn12n1s)=limn(logK(n+1)n24+n2logn2+nlogn2+112+logn12)=limn(lognn2/2+n/2+1/12en2/4K(n+1)+112)=112logA
(K(n)=k=1n1kkはK関数、A=limnK(n+1)en2/4nn2/2+n/2+1/12はグレイシャー・キンケリンの定数)
などの値を求めることができます。

投稿日:202142
OptHub AI Competition

この記事を高評価した人

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

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

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

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

投稿者

AutAg
6
793

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中