4

ゼータ関数の収束を速める

480
0

ゼータ関数

ζ(s,z) :=n=0(z+n)sΦ(w,s,z) :=n=0(z+n)swnβ(s) :=n=0(1)n(2n+1)s=2sΦ(1,s,12)
ζ(s,z) フルヴィッツのゼータ函数 Wikipedia
Φ(w,s,z) レルヒの超越関数 Wikipedia(英)
β(s) ディリクレのベータ関数 Wikipedia(英)

とし、ζ(s,z)Φ(1,s,z)を効率良く計算する方法を模索します。

(s)n上昇階乗冪f() :=limnf(n)

方法1: オイラー積

オイラー積 Wikipedia
pP
ζ(s)=p11psや、 β(s)=p311(1)p12psを用いれば、収束が速まることが期待できます。
例としてリーマンゼータ関数について考えましょう。
今、PP
S(P) :=1nPnsT(P) :=pP11ps
とした時、T(P)を展開すれば、
T(P)=n1  p>P(p | ̸n)nsnは素因数が全てP以下。
となるため、T(P)S(P)よりも遥かに多くの項を足していることになります。

誤差

例としてs=2,P=5の場合の誤差を計算すれば、
ζ(2)S(5)=π26(11+14+19+116+125)=0.181322ζ(2)T(5)=π261(114)(119)(1125)=0.082434
となり、それなりに加速されていることが確認できます。

方法2: 最後の項を2で割る

交代級数である時、最後の項を2で割ることで加速できます。
{an}は単調減少かつ常に正でその交代和が収束するものとし、
sN :=n=1N(1)n1antN :=sN+sN+12=sN+(1)NaN+12
を考えます。この時、tNsNよりも速くsに収束する場合があります。
左:加速される場合(!FORMULA[25][36766470][0]の収束がさほど速くない。)
右:加速されない場合(!FORMULA[26][36766470][0]の収束が速い。) 左:加速される場合(sNの収束がさほど速くない。)
右:加速されない場合(sNの収束が速い。)

誤差

S(N) :=n=1Nn2T(N) :=n=1Nn2+(N+1)22
Φ(1,2,1)S(5)=π212(1114+19116+125)=0.016144Φ(1,2,1)T(5)=π212(1114+19116+1251236)=0.002255

方法3: 加速法

汎用性の高い エイトケンのΔ2乗加速法(Wikipedia) を用いて加速することもできます。
また、これは重ね掛けや他の方法との併用ができます。

snnである値に収束するとき、
tn:=sn(sn+1sn)2sn+22sn+1+sn
はより速くその値に収束する場合がある。

級数に1回適用する場合、sn:=k=mnakとして、
tn :=sn(sn+1sn)2sn+22sn+1+sn=sn(sn+1sn)2(sn+2sn+1)(sn+1sn)=snan+12an+2an+1=sn+an+12an+1an+2s=t=limn(k=mnak+an+12an+1an+2)
となります。

誤差

S(N) :=n=1Nn2T(N) :=n=1Nn2+(N+1)4(N+1)2(N+2)2=n=1Nn2+(N+2)2(N+1)2[(N+2)2(N+1)2]=n=1Nn2+12N+3(N+2N+1)2
ζ(2)S(5)=π26(11+14+19+116+125)=0.181322ζ(2)T(5)=π26[11+14+19+116+125+113(76)2]=0.076622

方法4: 漸近級数

ベルヌーイ多項式やオイラー多項式 を用いるとかなり加速できます。

N0
ζ(s,z)=limM[m=0M1(z+m)s+n=0N1(1)nBn(a)(s)n1n!(za+M)sn+1]Φ(1,s,z)=limM[m=0M1(1)m(z+m)s+12n=0N1(1)M+nEn(a)(s)nn!(za+M)sn]

aは基本何でもいいですが、12を代入すると奇数番目の項が消えて、
N=N2
ζ(s,z)=limM[m=0M1(z+m)s+n=0N1B2n(12)(s)2n1(2n)!(z+M12)s2n+1]Φ(1,s,z)=limM[m=0M1(1)m(z+m)s+(1)M2n=0N1E2n(s)2n4n(2n)!(z+M12)s2n]
となります。

厳密ではない

z>0
ζ(s,z+a)=1Γ(s)0ts1e(z+a)t1etdt=1Γ(s)0ts2eztteat1etdt=1Γ(s)0ts2eztn=0Bn(a)n!(t)ndt=1Γ(s)n=0(1)nBn(a)n!0ts+n2eztdt=1Γ(s)n=0(1)nBn(a)n!zsn+1Γ(s+n1)=n=0(1)nBn(a)(s)n1n!zsn+1ζ(s,z)=limM[m=0M1(z+m)s+ζ(s,z+M)]=limM[m=0M1(z+m)s+n=0N1(1)nBn(a)(s)n1n!(za+M)sn+1]Φ(1,s,z+a)=1Γ(s)0ts1e(z+a)t1+etdt=12Γ(s)0ts1ezt2eat1+etdt=12Γ(s)0ts1eztn=0En(a)n!(t)ndt=12Γ(s)n=0(1)nEn(a)n!0ts+n1eztdt=12Γ(s)n=0(1)nEn(a)n!zsnΓ(s+n)=12n=0(1)nEn(a)(s)nn!zsnΦ(1,s,z)=limM[m=0M1(1)m(z+m)s+(1)MΦ(1,s,z+M)]=limM[m=0M1(1)m(z+m)s+(1)M2n=0N1(1)nEn(a)(s)nn!(za+M)sn]

厳密な証明には オイラー・マクローリンの和公式(Wikipedia) オイラー・ブールの和公式(Wikipedia(英)) を使うものと思われます。

誤差

S(M) :=m=1Mm2T(M,N) :=m=1Mm2+n=0N1B2n(12)(M+12)2n1B0(12)=1,B2(12)=112
ζ(2)S(5)=π26(11+14+19+116+125)=0.181322ζ(2)T(5,1)=π26(11+14+19+116+125+5.51)=0.000495ζ(2)T(5,2)=π26(11+14+19+116+125+5.515.5312)=0.000005

β(s)=limM[m=0M1(1)m(2m+1)s+(1)M2n=0N1E2n(s)2n(2n)!(2M)s2n]

式変形により別の級数の漸近級数展開を求めることもできます。

k1
m=0(1)m(ln(a+bm))k=limM[m=0M1(1)m(ln(a+bm))k+(1)M2(ln(a+b(M12)))k]

これは(左辺)=0s1skbskΦ(1,sk,ab)l=1kdslから導出します。
左辺の級数は収束が極めて遅いですが、右辺はかなり改善されます。
余りそちらの方面には詳しくありませんが、分数階積分によりkが非整数でも成り立つと思われます。

投稿日:202372
更新日:20241018
OptHub AI Competition

この記事を高評価した人

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

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

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

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

投稿者

著者の記事における命題は大半が自分で発見したものであり、 何かしらの論文などに基づいたものではありません。

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. ゼータ関数
  2. 方法1: オイラー積
  3. 誤差
  4. 方法2: 最後の項を2で割る
  5. 誤差
  6. 方法3: 加速法
  7. 誤差
  8. 方法4: 漸近級数
  9. 誤差