今日のアニソン、「ひそねとまそたん」から『少女はあの空を渡る』 [今日のアニソン]
ネイピア数e=「ふなひとはちふたはち」の100桁計算に挑む [数値解析]
ネイピア数e=「ふなひとはちふたはち」の100桁計算に挑む
§1 ネイピア数eの100桁の近似値を求める
ネイピア数eの近似値は、つぎのマクローリン展開を利用することによって、簡単に計算できる。
したがって、n項で打ち切った場合の誤差は、
である。
0<θ<1なので、であるが、これをと考えると、n項で計算を打ち切った誤差は、
と見積もることができる。
したがって、小数点以下10桁まで正しく計算しようとすると、少なくともn=13項まで計算しなければならない。
理論上は、nを大きくすればするほどネイピア数eの真実の値に近づくはずだが、コンピュータは有限桁でしか計算をすることができないので、前回、表計算ソフトによる計算値を示したように、n≧16で計算してもこれ以上、精度の高いネイピア数eの近似値を求めることができない。
ということで、十進数1000桁の計算が可能な十進BASICを用いて、ネイピア数eの100桁までの近似値を求めてみることにした。
そして、これがその計算結果だにゃ。
e=2.71828 18284 59045 23536 02874 71352 66249 77572 47093 69995
95749 66967 62772 40766 30353 54759 45713 82178 52516 64274
ウィキペディアにあるネイピア数eの1000桁表示の近似値と比較すればわかるけれど、100桁、正しく計算できているにゃ。
そして、この計算に使用したプログラムは、次の通り。
REM ネイピア数eを100桁まで計算
OPTION ARITHMETIC DECIMAL_HIGH
LET N=80
LET A=1
LET S=1
FOR K=1 TO N
LET A=A/K
LET S = S+A
NEXT K
LET FMT$="#."&REPEAT$("#",100)
PRINT USING FMT$: s
END
こんな簡単なプログラムでこれほどの高精度計算ができてしまうのだから驚き。
十進BASICというソフトは、本当に、凄いよね~。
§2 ライプニッツの級数(グレゴリーの公式)を用いて円周率πの近似値を求める
関数は次のようにマクローリン展開できる。
また、
だから、
になる。
そして、(1)はtan xの逆関数tan⁻¹のマクローリン展開になる。
さらに、x=1のとき、(1)の級数
は収束するので、
となる。
この級数をライプニッツ級数(グレゴリーの公式)という。
このライプニッツ級数を使って、円周率πの近似値を求めようじゃないか。
表計算ソフトを使って求めようと一瞬考えたけれど、この級数の収束はとんでもなく遅いので、考え直し、十進BASICを使って、πの近似値を求めることにする。
計算回数と誤差を見ると、nを10倍にすると誤差が1/10になっていることがわかる。。つまり、この級数は1次収束なので収束がとんでもなく遅い。
このことは、円周率の次の桁の数字の正確な値を求めるための計算量は、およそ、その10倍の計算量になるということを意味する。さらに、1桁下の値を求めようとすると、さらにその10倍の計算量が必要で、2桁下の正確な値を求めるためには約100倍の計算量になってしまう。
そのくせ、n=10万にとっても小数点5桁目の値を正しく計算できない。
アルキメデスが紀元前3世紀に導いた
程度の精度を得るためには、nを1000以上にする必要があるのだから、この計算法は、とてもじゃないけれど、採用できない。
なお、この計算に使用したプログラムは次の通り。
REM ライプニッツの級数を用いて円周率πの近似値を求める
INPUT n
LET t=1
LET s=0
FOR k=1 TO n
LET a=t/(2*k-1)
LET s=s+a
LET t=-1*t
NEXT k
PRINT "π(の近似値):",4*S
END