この記事では、VBA で逆二乗和の収束値を計算し、バーゼル問題に迫ってみます。
【VBA】バーゼル問題に迫ります
次のような形の数列の和(級数)を計算する VBA マクロを作ります。
このように
'[VBA] 級数を計算するユーザー定義関数 Function SIGMA(s As Double, n As Integer) As Double Dim z As Double, k As Integer For k = 1 To n z = z + k ^ s Next k SIGMA = z End Function
級数関数SIGMAを使って、
を計算させてみましょう。セルに
=SIGMA(1,100)
と入力してください。5050 が返るはずです。
さて、
の収束値を求める問題をバーゼル問題と呼びますが、大数学者のオイラーによって
であることが証明されています。SIGMA関数でどこまでこの値に迫れるか試してみましょう。エクセルのシート上で SIGMA(-2,n) の値を計算させると、
SIGMA(-2,10000) = 1.64483 SIGMA(-2,20000) = 1.64488 SIGMA(-2,30000) = 1.64490
のようになります。真値は 1.64493… ですから、まずまずの精度ですね。
【おすすめ記事】≫ ライプニッツの公式
エクセルや数学に関するコメントをお寄せください