• 検索結果がありません。

フルヴィッツ数を計算するアルゴリズム

N/A
N/A
Protected

Academic year: 2021

シェア "フルヴィッツ数を計算するアルゴリズム"

Copied!
18
0
0

読み込み中.... (全文を見る)

全文

(1)

フルヴィッツ数を計算するアルゴリズム

片山 潤哉

2016

1

6

(2)

1 はじめに

フルヴィッツ数とはHurwitzが行ったベルヌーイ数の一般化についての研究の成果である. ,次の式

1

sin2x = 1 x2 +

n=2

(1)n212nBn

n

xn2 (n2)!

において,ベルヌーイ数は三角関数の展開係数であるという見方から,これをレムニスケート関数 に置き換えてもその展開係数は似たような数論的性質を持つに違いないと考え, 次の式を示した (詳細は後に述べる).

℘(z) = 1 z2 +

n=2

2nHn

n

zn2 (n2)!.

関数の展開係数となっている数列Hnがフルヴィッツ数と呼ばれるものである. 本研究はそのフル ヴィッツ数を従来のものより高速に計算するアルゴリズムについて研究した. 新しいアルゴリズム (アルゴリズム2)において,アイゼンシュタイン級数の計算と, フルヴィッツの定理を用い分母を 計算することで,次の主結果が得られた.

アルゴリズム2はフルヴィッツ数Hkをビット演算量O(M(klogk)k(logk)2)で計算する. また従来の漸化式を利用して計算するアルゴリズムはフルヴィッツ数Hk をビット演算量 O(M(klogk)k2logk)で計算する.

以上よりアルゴリズム2の方がより高速にフルヴィッツ数Hkを計算する.

また, 数値計算の速度の比較実験を行った. その結果から十分大きい自然数 kに対してフル ヴィッツ数Hkを計算するのは本研究で得られたアルゴリズムの方が高速に計算できるという結果 が得られた.

本論文の構成は次のようになる. 2節でフルヴィッツ数とベルヌーイ数の定義, 諸性質につい て述べる. 3節ではベルヌーイ数を計算するアルゴリズムを紹介し,そのアルゴリズムを基にし て構成したフルヴィッツ数を計算するアルゴリズムを第4節で述べ,その正当性を証明する. 5 節ではフルヴィッツ数を計算するアルゴリズムの計算量を評価し,従来の漸化式を用いて計算する アルゴリズムよりも計算量が減っていることを示す. 6節にて数値実験の結果を載せた. 以上が 本論文の構成である.

2 フルヴィッツ数とベルヌーイ数

この節では[1]に従って,ベルヌーイ数とフルヴィッツ数について説明する.

(3)

2.1

ベルヌーイ数

この節ではベルヌーイ数について説明する.ベルヌーイ数Bnとは次のように形式的べき級数に よる母関数表示

tet et1 =

n=0

Bn

tn n!

によって定義される有理数のことである.具体的な値は次の表のようになる.

n 0 1 2 3 4 5 6 7 8 9 10

Bn 1 12 16 0 301 0 421 0 301 0 665

またベルヌーイ数の分母は次に述べるクラウゼン・フォンシュタウトの定理によって完全に決定す ることができる.

定理 2.1 (クラウゼン・フォンシュタウトの定理). n= 1および各偶数n≥2に対し,Bn Bn=

p1|n

1

p +Cn (Cnは整数) の形に書ける.ここでは和はp−1nを割るような素数pをわたる.

この定理よりベルヌーイ数Bnの分母は

p1|n

p

とかけることがわかる. また,ζ(s) =

n=1

1

ns とすると各偶数2k(kは自然数)に対して次の等式が 成り立っていることが知られている.

定理 2.2.

ζ(2k) = (1)k1 2

B2k

(2k)!(2π)2k.

これらの定理を用いることでベルヌーイ数を計算するアルゴリズムが構成される.

2.2

フルヴィッツ数

次にこの節ではフルヴィッツ数の定義からはじめる.そのために,まず ϖ= 2

1 0

1

1−x4dx

とおく.これはレムニスケートの周長の半分であって,レムニスケート周率とも呼ばれ, その値は 2.62205…… と無限に続く. 次に, ϖϖ√

1 を周期に持つワイエルシュトラスの楕円関数を

(4)

℘(z)と書く. これは無限級数で次のように定義される.

℘(z) = 1

z2 + ∑

λ∈Zϖ+Zϖ

1 λ̸=0

( 1

(z−λ)2 1 λ2

) .

℘(z),複素平面において,格子Zϖ+Zϖ√

1上の点でのみ2位の極をもちそれ以外では正則な 複素関数で,zz+λ(λ∈Zϖ+Zϖ√

1)に置き換えても値が変わらないという2重周期性をも .この格子が

1倍で保たれるということから,λ∈Z[

1]に対して℘(λz)℘(z)(z) の有理式で表されることがわかる. この性質から,℘(z)Z[

1]を虚数乗法にもつ楕円関数であ るといわれる.

定義からわかるように℘(z)は偶関数であり, また, z, λをともに

1倍で置き換えてみると, Zϖ+Zϖ√

1

1倍でかわらないことから,

℘(√

1z) =−℘(z) が成り立つ. また,微分方程式

(z)2= 4℘(z)34℘(z) さらにこれを微分した

′′(z) = 6℘(z)22 を満たす.

℘(z)の原点でのローラン展開を考える.定義からそれが z12 から始まることがわかるが,そのほ かの係数を

℘(z) = 1 z2+

n=2

2nHn

n

zn2 (n2)!

のように書く. すると上記℘(−z) =℘(z), ℘(√

1z) =−℘(z)より,Hnn4の倍数のとき以 外は零であることがわかる.このときのHnがフルヴィッツ数と呼ばれるものである. 微分方程式 ′′(z) = 6℘(z)22の展開係数を比較することにより,

H4= 1 10 および,n≥2に対し漸化式

(2n3)(4n1)(4n+ 1)H4n= 3

n1

i=1

(4i1)(4n4i1) (4n

4i )

H4iH4(ni)

が得られる.これから,Hnは正の有理数であることがわかる.いくつかの値を表にする.

n 4 8 12 16 20 24 28 32

Hn 1 10

3 10

567 130

43659 170

392931 10

1724574159 130

2498907956391 290

1671769422825579 170

HurwitzはこのHn に対してクラウゼン・フォンシュタウトの定理の類似を証明した.それを述

べるために次のフェルマー・オイラーの定理が必要になる.

(5)

定理 2.3 (フェルマー・オイラーの定理).

4で割って1余る素数は平方数の和として1通りに表される. p4で割ると1余る素数とし,その平方和への分解を

p=a2+b2

とする.このときa, bのいずれか一方のみが奇数でなくてはならないからそれをaとし, その符 号を

a≡b+ 1 mod 4

で定める. このように定まるa, ap と書くことにする. このときフルヴィッツの定理は次のと おり.

定理 2.4 (フルヴィッツの定理). n≥1に対してある整数Gnがあって, H4n = 1

2 + ∑

p1 mod 4 p1|4n

(2ap)p4n1

p +Gn. p4で割ると1余る素数でp−14nを割るようなものを動く. 例として,

H4= 1 10 = 1

2 2 5, H8= 3

10 = 1 2 +22

5 1, H12= 567

130 = 1 2 23

5 + 6 13 + 5, H16= 43659

170 = 1 2 +24

5 + 2

17 + 253.

この定理よりフルヴィッツ数H4nの分母は

2 ∏

p1 mod 4 p1|4n

p

とかけることがわかる.

また, ベルヌーイ数もフルヴィッツ数も関数の展開係数となる点や,ゼータ関数の特殊値になる 点などにおいて類似性があり,次の表のようになる.

(6)

Hn Bn

関数の展開係数 ℘(z) = 1 z2 +

n=2

2nHn

n

zn2 (n2)!

1

sin2x = 1 x2 +

n=2

(1)n212nBn

n

xn2 (n2)!

ζ 関数の特殊値

λ∈Z+Z

1 λ̸=0

1

λn = (2ϖ)n n! Hn

r∈Z−{0}

1

rn = (1)n21(2π)nBn

n!

分母が求められる 2 ∏

p1 mod 4 p1|n

p

p1|n

p

3 ベルヌーイ数を計算するアルゴリズム

まずこのセクションでは, Fillebrown[6]にて出した結果であるベルヌーイ数を計算するアル ゴリズムについて述べる.以降xxを丸め計算したものとする.また,⟨x⟩xに最も近い整数と する.G(n)=⌈2nlog2n⌉とおくことにする.

アルゴリズム 1. もしすべての計算がG(n)ビットで丸めが行われるならば以降のアルゴリズムで B2kが計算される.

1. 2n+ 1以下の素数pを列挙する. 2. rn= 2(2n)!/(2π)2nとする. 3. tn=∏

p≤⌈2n/πep2n/(p2n1)とする. 4. D2n=∏

(p1)|2npとする. 5. N2n =rntnD2nとする.

6. このときB2n= (1)n+1⟨N2n⟩/D2nとなる.

このアルゴリズムはB2nO(nlogn)ビットの乗算O(n)回で計算する.

このアルゴリズムを基にフルヴィッツ数を計算するアルゴリズムを次のようにして構成する.

4 フルヴィッツ数を計算するアルゴリズム 4.1

アルゴリズム

アルゴリズム1を基にして, 次のようなアルゴリズムによりフルヴィツ数を計算することがで きる.

アルゴリズム 2. 以下のようにしてフルヴィッツ数Hkを計算する. (k4N) 1. (準備)

k+ 1以下の素数pを列挙する.

(7)

α=(k+ 3) log2k−1.88k+ 5.27 Mk=2 log ((ϖπ)kk42k2+5

(2k2)!) C= 2Mk+ 2 log2k+ 2k+ 7

β =⌈α+ 3 + log2C

以降の計算はβビットの精度で計算する. 2. (フルヴィッツ数を小数で計算する.)

H(k) =−(π ϖ

)k(

Bk2k

Mk

n=1

nk1 e2πn1

)

3. (フルヴィッツ数の分母を計算する.) Dk= 2 ∏

p1 mod 4 p1|k

p

4. (フルヴィッツ数の分子を計算する.) Nk =H(k)Dk

5. (有理数としてフルヴィッツ数を計算する.) Hk= NDk

k

4.2

アルゴリズムの正しさの証明

まず,フルヴィッツ数を小数で表したH(k)step 2のように求められることについて述べる. まず,周期が1iであるアイゼンシュタイン級数Ek(i)には次の等式が成り立つことが知られて いる[3, p.266].

Ek(i) = ∑

(m,n)∈Z×Z−{(0,0)}

1 (m+ni)k

= (1)k21(2π)k k!

Bk2k∑

n1

nk1 e2πn1

.

さらにEk(i)には次の等式が成り立つことが知られている[1, p.196].

Ek(i) = Hk

k! (2ϖ)k. これらの式をあわせるとk∈4Nのとき,

Hk =(π ϖ

)k

Bk2k∑

n1

nk1 e2πn1

.

次にフルヴィッツ数の分母Dkだがこれは第2節で述べたとおりフルヴィッツの定理を用いると, Dk = 2 ∏

p1 mod 4 p1|k

p

(8)

と表される. また, ∏

px

p≤4xという事実[9, p.183]を用いると,

Dk(k+ 1)(k

2 + 1)(k

3 + 1) ∏

pk4+1

p

(k+ 1)(k

2 + 1)(k

3 + 1)4k4+1 (1)

となる. さらに,

(m,n)∈Z×Z−{(0,0)}

1 (m+ni)k

8ζ(3)

= 9.61645 という事実[5, p.112]を用いると,フルヴィッツ数の分子Nk

Nk=DkHk

= k!

(2ϖ)kDk

(m,n)∈Z×Z−{(0,0)}

1 (m+ni)k

( k

5.24)k(k+ 1)(k

2 + 1)(k

3 + 1)( ∏

pk4+1

p)8ζ(3)

( k

5.24)k(9.62)k34k4+1 と書けるので,

log2Nk ≤k(log2k−log25.24) + log29.62 + 3 log2k+ k 2 + 2

(k+ 3) log2k−1.88k+ 5.27 が成り立つ.よって

α=(k+ 3) log2k−1.88k+ 5.27 とすると

Nk 2α

となる.このようにして分子のサイズを決定することが可能である.次に, N˜k=(π

ϖ )k

Dk

(

Bk2k

Mk

n=1

nk1 e2πn1

)

とおくことにする.このアルゴリズムにおいてN˜kβビットの精度で計算したものをNkとする. ここで, Nk =⟨Nkであることを示す. そのために0< Nk−N˜k < 14 |N˜k−Nk|< 14 を示す. この二つが成立するならば,|Nk−Nk|< 12 となり,Nk=⟨Nkであることが示される.

(9)

定理 4.1. 上記のようにしてN˜kを定めると, 0< Nk−N˜k < 14となる. 上記の定理の証明のために次の補題を示す.

補題 4.2.

n=Mk+1

nk1

e2πn1 < keMk2

(2k2)!.

(証明) まず, (

xk1 ex

)

= xk2(k1−x) ex

これの正負を考える. Mk+ 1≤xとなるようにxを取ると,k−1≤Mkだから (xk1

ex )

<0 そのため, xk1

ex は単調減少となる.

n=Mk+1

nk1 e2πn1 <

n=Mk+1

nk1 en

<

Mk

xk1 ex dx

=eMk(Mkk1+ (k1)Mkk2+……+ (k1)!Mk+ (k1)!)

< eMkkMkk1 となる.さらに,

√eMk = vu ut∑

l=0

Mkl l!

>

Mk2(k1) (2k2)!

= Mkk1

√(2k2)!

であるため,

n=Mk+1

nk1

e2πn1 < eMkkMkk1

< keMk2

(2k2)!

となり,補題の証明が完了する. (証明終)

(10)

続いて,定理の証明を行う.

(証明)(1)および, (k+ 1)(k2+ 1)(k3+ 1)≤k3より Nk−N˜k=

(π ϖ

)k

Dk

( 2k

Mk+1

nk1 e2πn1

)

<

(π ϖ

)k

(2keMk2

(2k2)!)k34k4+1 である. またMkの取り方から,

2 log ((π

ϖ )k

k42k2+5

(2k2)!

)

< Mk

(π ϖ

)k

k42k2+5

(2k2)!< eMk2 よって, 0< Nk−N˜k < 14 となり証明が完了する. (証明終)

続いて次の補題が成り立つことが[7]より分かる.

補題 4.3. [7, Lemma 3.1]i= 1からnに対してi| ≤u, ρi=±1,nu <1とすると,

n i=1

(1 +δi)ρi = 1 +θn, (n| ≤ nu

1−nu =γn) を満たすθnが存在する.

これを用いると次の定理が示せる.

定理 4.4. 上記のようにしてN¯kを定めると,|Nk−N˜k|< 14となる.

(証明) xは実数xβビットで丸めたものとする. [7]によるとx¯=x(1 +δ), (|δ| ≤u= 2β) かける. この性質を用いてNkを計算する. 以降λ, ϵ, µに対してもδと同様の仮定をする. まず,

e=e(1 +δ),|δ| ≤u とする. また,eのべき乗は

e2πn=ee2π(n1) で計算される. そのため帰納法を用いると次のことが分かる.

e2πn =e2πn(1 +δ)n

n1 i=1

(1 +δi)

=e2πn(1 +θ2n1).

このようにしてθ2n1を定めると,2n1| ≤γ2n1となる.

e2πn1 = (e2πn1)(1 +θ2n1)(1 +δ2n)

(11)

δ2nを定める. このとき

2n|= 2n1|

(e2πn1)(1 +θ2n1)

(2n1)u

(e2πn1)(1(4n2)u). このときMk, αの定め方より

4Mku≤2α2

1 4 であるので

1(4n2)u 3 4 より

(2n1)u

(e2πn1)(1(4n2)u) 4 3

2n1 e2πn1u が成り立つ. またn≥1のとき

2n1 e2πn1 3

4

であるので,2n| ≤uとなる. 以上のことよりe2πn1 = (e2πn1)(1 +δ2n+1)のようにδ2n+1

を定めると,次の式が成り立つ. ( nk1

e2πn1 )

= nk1 e2πn1

1 +δ2n+2

(1 +θ2n1)(1 +δ2n)(1 +δ2n+1)

= nk1

e2πn1(1 +θ2n+2).

このようなθ2n+2(2n+2| ≤γ2n+2)が存在することが補題4.3より分かる. そのため

an= nk1 e2πn1 とおくと

an =an(1 +θ(n)2n+2) がわかった((n)2n+2| ≤γ2n+2).

Sm=

m n=1

an

とすると

Sm=Sm(1 +η2m+3),2m+3| ≤γ2m+3

(12)

となるη2m+3が存在する. これは帰納法により次のように示される. m = 1のときは明らかであ . 一般のmに対してm−1までは成り立っているとすると

Sm=Sm1+am

=Sm1(1 +η2m+1) +am(1 +θ2m+2(m) )

= (Sm1(1 +η2m+1) +am(1 +θ(m)2m+2))(1 +δ).

ここで

|Sm1(1 +η2m+1) +am(1 +θ(m)2m+2)(Sm1+am)|=|Sm1η2m+1+amθ2m+2(m) |

=Sm12m+1|+am2m+2(m) |

≤Sm1γ2m+1+amγ2m+2

(Sm1+am2m+2

であるため,Sm1(1 +η2m+1) +am(1 +θ(m)2m+2) = (Sm1+am)(1 +η2m+2) η2m+2を定める 2m+2| ≤γ2m+2が成り立つ. よって,

Sm=Sm(1 +η2m+2)(1 +δ)

=Sm(1 +η2m+3) η2m+3を定めると,

2m+3|=|(1 +η2m+2)(1 +δ)−1|

=2m+2+δ+η2m+2δ|

≤ |η2m+2|+|δ|+2m+2||δ|

≤γ2m+2+u+γ2m+2u

= (2m+ 2)u

1(2m+ 2)u +u+ (2m+ 2)u2 1(2m+ 2)u

= (2m+ 3)u 1(2m+ 2)u

(2m+ 3)u 1(2m+ 3)u

=γ2m+3.

よって全ての自然数mに対して成り立つことが分かる. 続いて Bk =Bk(1 +λk) とする. さらに,

π=π(1 +µ), ϖ=ϖ(1 +µ), (π

ϖ )k

= (π

ϖ

)k(1 +µ)k (1 +µ)k

rk

i=1

(1 +ϵi)

(13)

とかける.rk k乗を計算するのに必要な乗算の回数であり,rk2 log2kである.以上より, H(k) =−

(π ϖ

)k

(Bk2kSMk)

=(π ϖ

)k

(Bk2kSMk)(1 +µ)k (1 +µ)k

rk

i=1

(1 +ϵi)

(1 +η2Mk+3)(1 +δ2Mk+4)(1 +δ2Mk+5)(1 +δ2Mk+6).

これより,

C =k+k+rk+ 2Mk+ 6

= 2Mk+rk+ 2k+ 6

とする. これは,Cu <1を満たす.

H(k) =H(k)(1 +θC) θC を定めると

C| ≤γC = Cu 1−Cu を満たす.このことから,

Nk=H(k)Dk

=H(k)Dk(1 +δ)(1 +θC)

=H(k)Dk(1 +θC+1)

= ˜Nk(1 +θC+1)

が成り立つようなθC+1をとるとC+1| ≤γC+1を満たす. また, C= 2Mk+ 2 log2k+ 2k+ 7 とおくと

C+1| ≤γC+1

≤γC

= Cu

1−Cu (また, u= 2β).

以上よりβの取り方より,Cu <1/2となり次が成り立つ.

|Nk−N˜k|= ˜NkC+1|

≤N˜kγC

= ˜Nk

Cu 1−Cu

<2 ˜NkCu

<2(2α)C2β.

(14)

また,β=⌈α+ 3 + log2Cであるため,

2β 2α3C′−1 を満たすので,

|Nk−N˜k|<2(2α)C2β

1 4 となるので証明が完了する. (証明終)

5 アルゴリズムの計算量

このセクションで前節で与えられたアルゴリズムがどれほどの計算量でHn を計算するか について述べる. また, このセクションでは n ビットの 2 つの数の乗算の計算量 M(n) , M(n) =O(nlognlog logn)で与えられ,さらにnビットの数とmビットの数(n > m)の乗算の 計算量M(n, m),M(n, m) =O(nlogmlog logm)と書くことができる. これはSch¨onhage

Strassenのアルゴリズムを使うことで分かる[8]. 次に下記の定理を示す.

定理 5.1. アルゴリズム2Hkをビット演算量O(M(klogk)k(logk)2)で計算する.

(証明) まず,β=O(klogk), Mk =O(klogk)であることがβ, Mkのとり方から分かる. step 2 以降はβビットの精度で計算するときの計算量について考える. また, [2, Chapter 7]を参照する , πは ビット演算量O(M(klogk) logk)で計算され, e はビット演算量O(M(klogk) logk) で計算され, ϖはビット演算量O(M(klogk) logk)で計算されることが分かる. 続いてアルゴリ ズムの各ステップにおける計算量を見ていく.

step 1(準備)

k+ 1以下の素数の列挙のビット演算量は[4, Algorithm 3.2.2]によるとO(klogk/log logk)であ . α, β, Mk, Cの計算量は小さいので無視する.

step 2(フルヴィッツ数を小数で計算する. ) (π

ϖ )k

についてみていく. これはβビットの数の乗算を高々2 log2k,除算を1回行う. そのた ,ビット演算量はO(logkM(klogk))となる.

次に, Bk の計算量だが[6]によると, O(klogk)ビット数の乗算をO(k)回繰り返す. そのため, ビット演算量はO(M(klogk)k)である.

nk1の計算は一回で O(M(klogk) logk)で計算でき, それをMk1回繰り返すので, ビット 演算量はO(MkM(klogk) logk) となる. また, e2πn = ee2π(n1) と計算される. そのた , e2πn は一回で O(M(klogk))で計算でき, それをMk 1回繰り返すので, ビット演算量は O(MkM(klogk))となる. (en2πnk11) における除算Mk回分の計算量はO(MkM(klogk))になる. それ以外の計算量は無視できる. よってstep 2全体のビット演算量は, O(MkM(klogk) logk) ある.

(15)

step 3(分母の計算) Dk = 2 ∏

p1 mod 4 p1|k

pの計算量を考える. 素数定理よりk以下の素数の個数はO(logkk)である. 乗算 一回につきビット演算量はO(M(k,logk))であり,これを logkk 回繰り返すので求めるビット演算 量はO(logkkM(k,logk))となる.

step 4

Nk =H(k)D(k)の計算量を考える. H(k)O(klogk)ビットで,D(k)O(k)ビットであるの ,ビット演算量O(M(klogk, k))で計算する.

step 5

最も近い整数を計算するビット演算量はO(klogk)である.

以上より最も計算量が多いのはstep 2であることが分かる. よってアルゴリズム2Hkをビッ ト演算量O(M(klogk)Mklogk) =O(M(klogk)k(logk)2)で計算する. (証明終)

続いてフルヴィッツ数を漸化式で計算するときの計算量について述べる. 定理 5.2. フルヴィッツ数を漸化式

(2k3)(4k1)(4k+ 1)H4k = 3

k1

i=1

(4i1)(4k4i1) (4k

4i )

H4iH4(ki)

を用いて計算するときビット演算量はO(M(klogk)k2logk)かかる. (証明) 漸化式を変形すると次のように書ける.

H4k= 3

(2k3)(4k1)(4k+ 1)

k1

i=1

(4i1)(4k4i1) (4k

4i )

H4iH4(ki)

この計算量を考えるために次の補題を用いる.

補題 5.3. 分子,分母が高々kビットの有理数の四則演算のビット演算量はO(M(k) logk)である. (証明)まず,有理数の加算にかかるビット演算量を考える. a, b, c, dを高々kビット とする.

b a +d

c = bc+ad ac

これは乗算3,加算1,最大公約数の計算が1,除算2回行う. そのなかでは最大公約数の計 算がもっとも計算量が多く,ビット演算量O(M(k) logk)で有理数の加算を一度行える. 続いて有 理数の乗算について考えると,乗算2,最大公約数の計算を1,除算2回行う. よって乗算にか かるビット演算量はO(M(k) logk)である. (証明終)

定理の証明に戻る. 2項係数 (k

l

) の計算量について見る. (k

l

) 2k より(k

l

) のサイズはO(k) ビットである. パスカルの三角形を用い, 2項係数(a

b

)(0≤b≤a≤4k)を全て計算する. よって漸 化式O(k)回全部の分のビット演算量はO(k3)である.

H4iH4(ki) は サ イ ズ が O(klogk) ビ ッ ト の 有 理 数 の 乗 算 で あ る た め ビ ッ ト 演 算 量 は

(16)

O(M(klogk) logk)である. これをO(k)回繰り返すのでビット演算量はO(M(klogk)klogk) なる.

漸化式の和の部分は分子分母のサイズがO(klogk)ビット となっている有理数の和である. 1回につきビット演算量はO(M(klogk) logk)であり加算をO(k)回繰り返すので漸化式1 のビット演算量は, O(M(klogk)klogk)となる. よって全体では漸化式をO(k)回繰り返すので 全体のビット演算量はO(M(klogk)k2logk)となる. これはO(k3)よりも大きい.

以上よりフルヴィッツ数を漸化式

(2k3)(4k1)(4k+ 1)H4k = 3

k1

i=1

(4i1)(4k4i1) (4k

4i )

H4iH4(ki)

を用いて計算するときビット演算量はO(M(klogk)k2logk)かかる. (証明終)

6 数値実験

アルゴリズム2と定理5.2の漸化式それぞれを用いて計算速度の比較を行った. 利用した計算機 Intel Core i5-4210M 2.60GHz のプロセッサ,メモリ8.00GB を実装したWindows7, 64bit のシステム,ソフトウェアはPARI/GP 2.7.3 [10]である.

6.1

数値実験結果

数値実験の結果は次のようになった. (単位:msec)

H80 H400 H1000 H2000 H4000 H6000 H8000

アルゴリズム2 31 31 438 2714 16349 48001 1min43418

漸化式 16 93 1467 6505 1min23960 6min30828 18min21502

7 まとめ

本論文ではフルヴィッツの定理などを用いてフルヴィッツ数を計算するアルゴリズムを構成し . 実験結果から十分大きい自然数kに対してHkを計算するスピードはアルゴリズム2の方が速 いことが分かった. より計算量の少ないアルゴリズムを構成すること,またZ+Z

−1以外の格子 に対応するフルヴィッツ数への拡張などが今後の課題である.

8 謝辞

本研究は,著者が首都大学東京大学院理工学研究科数理情報科学専攻博士前期課程在学中に, 大学院理工学研究科数理情報科学専攻の内田幸寛准教授の指導のもとに行ったものである. 適切な 助言を賜り,熱心に指導して下さった内田幸寛准教授に深く感謝致します. またご多忙の中,本論文 の副査を快諾していただきました内山成憲教授と津村博文教授に感謝致します.

(17)

参考文献

[1] 荒川恒男・伊吹山知義・金子昌信 『ベルヌーイ数とゼータ関数』(牧野書店, 2001)

[2] J. M. Borwein, P. B. Borwein.Pi and the AGM: A Study in Analytic Number Theory and Computational Complexity (John Wiley, New York, 1987)

[3] H. Cohen. Number Theory Volume II: Analytic and Modern Tools (Springer, New York, 2007)

[4] R. Crandall, C. Pomerance. Prime Numbers: A Computional Perspective (2nd ed., Springer, New York, 2005)

[5] 土井公二・三宅敏恒 『保型形式と整数論』(紀伊国屋書店, 1976)

[6] S. Fillebrown. Faster Computation of Bernoulli Numbers. J. Algorithms13, (1992), 431–

445.

[7] N. J. Higham.Accuracy and Stability of Numerical AlgorithmsJohn Wiley, New York, 1987

[8] D. E. Knuth.The Art of Computer Programming. Vol.2: Seminumerical Algorithms (3rd ed., Reading, MA, Mass Addison-Wesley, 1997)

[9] L. Niven, H. S. Zuckerman.An Introduction to the Theory of Numbers (John Wiley, New York, 1960)

[10] The PARI Group, PARI/GP version 2.7.3, Bordeaux, 2015, http://pari.math.

u-bordeaux.fr/.

[11] W. Stein.Modular Forms, a Computational Approach (American Mathematical Society, Providence, RI, 2007)

付録 A PARI/GP のプログラム

以下にフルヴィッツ数を計算するPARI/GP [10]のプログラムを載せる. el(k)=

{my(w);

w = ellperiods([1,I]);

elleisnum(w, k);

}

h(k)=

{my(b,e,l,E);

b=bernreal(k);

(18)

e=el(k);

E=ellinit([-1,0]);

l=E.omega[1];

(-e)*b/((2*l)^k);

};

d(k)=

{my(r,p);

r=1;forprime(p=2,k+1,if((p-1)%4==0,if(k%(p-1)==0,r*=p)));

2*r;

};

f(k)=

{my(oldprec,r,s,t,a,m,c,b);

s=d(k);

oldprec=default(realprecision);

a=ceil((k+3)*log(k)/log(2)-(1.88)*k+5.27);

m=ceil(2*(log(((Pi)/(2.62))^k*k^4*sqrt(2^(k+10))*sqrt((2*k-2)!))));

c=2*m+2*log(k)/log(2)+2*k+7;

b=ceil(a+3+log(c)/log(2));

default(realprecision,max(28, ceil(

b*log(2)/log(10)) ));

t=round(s*h(k));

r=t/s;

default(realprecision,oldprec);

r;

};

続いて漸化式を用いてフルヴィッツ数を計算するプログラムのソースを載せる. hur(m)=

{my(h,n,i);h=vector(m);

h[1]=1/10;

for(n=2,m,h[n]=(3/((2*n-3)*(4*n-1)*(4*n+1)))*

(sum(i=1,n-1,(4*i-1)*(4*(n-i)-1)*binomial(4*n,4*i)*h[i]*h[n-i])));

h[m];}

参照

関連したドキュメント

2 Similarity between number theory and knot theory 4 3 Iwasawa invariants of cyclic covers of link exteriors 4.. 4 Profinite

Erd˝ os, Some problems and results on combinatorial number theory, Graph theory and its applications, Ann.. New

SOFO, Computational Techniques for the Summation of Series, Kluwer Publishing Co., New York, 2003.

If in addition V is crystalline, we describe these classes explicitly using Bloch and Kato’s exponential maps and generalize Perrin-Riou’s period map to the Lubin-Tate setting.. We

The algebra of noncommutative symmetric functions Sym, introduced in [2], is the free associative algebra (over some field of characteristic zero) generated by an infinite sequence (

Burton, “Stability and Periodic Solutions of Ordinary and Func- tional Differential Equations,” Academic Press, New York, 1985.

[Mag3] , Painlev´ e-type differential equations for the recurrence coefficients of semi- classical orthogonal polynomials, J. Zaslavsky , Asymptotic expansions of ratios of

Zhang, Oscillation Theory of Differential Equations with Deviating Arguments, Marcel Dekker, New York, 1987..