« イヌホオズキ | トップページ | ムラサキシキブ »

2014年10月31日 (金)

VBAによるラマヌジャンのπの式の計算

http://yamada-kuebiko.cocolog-nifty.com/blog/2014/10/post-01b2.html
2014年10月28日 (火)「建部賢弘のπの計算公式」
http://yamada-kuebiko.cocolog-nifty.com/blog/2014/10/http.html
2014年10月29日 (水)「ラマヌジャンのπの式」
http://yamada-kuebiko.cocolog-nifty.com/blog/2014/10/post-20f8.html
2014年10月30日 (木)「VBAによる建部のπの式の計算」

上の3つに続く記事です。
--------------------

★ラマヌジャンの式をVBAで計算してみました。
プログラムはこんな感じ。
(プログラムというものにはかなりの任意性がありまして、同じ考え方でもずいぶん違う書き方もできたりしますので、プログラム例です。)
表のシートに結果が出力されます。
--------------------
Sub Ramanujan()

Const PI = 3.14159265354979
Dim i As Long, n As Long
Dim p As Double, tmp As Double, tmp1 As Double, tmp2 As Double
Dim c As Double

c = 2 * Sqr(2) / 9801
For i = 0 To 5
   Let tmp = 0
   For n = 0 To i
      tmp1 = Fact(4 * n) * (26390 * n + 1103)
      tmp2 = (((4 ^ n) * Fact(n)) ^ 4) * 99 ^ (4 * n)
      tmp = tmp + (tmp1 / tmp2)
   Next n
   p = 1 / (c * tmp)
   Cells(i + 1, 1).Value = p
   Cells(i + 1, 2).Value = PI - p
Next i
End Sub

Function Fact(n As Long) As Double
    Dim i As Long, p As Double

    p = 1
    For i = 2 To n
        p = p * i
    Next i
    Fact = p
End Function
--------------------
★結果はこうなります。(A列のセル表示は小数点以下20桁にしてあります。)
3.14159273001331000000  -7.64635E-08
3.14159265358979000000  -4.00036E-11
3.14159265358979000000  -4.00027E-11
3.14159265358979000000  -4.00027E-11
3.14159265358979000000  -4.00027E-11
3.14159265358979000000  -4.00027E-11

n=1から先、もう変化なし。
エクセルの限界を超えています。
さすがにこれは少々つまらないですね。

★Javaには BigDecimal というクラスがありまして、際限なく長い多倍長計算ができます。
これでずいぶん遊んだこともありますが、なんだか面倒くさくなってしまって、今のパソコンにはJavaは入れてありません。
現在気に入っているのは「(仮想)」十進BASIC」というフリーの言語です。
この言語には1000桁モードというのがありますので、気軽に試してみることができる。グラフィクスも座標系の設定が「理系的」で扱いやすい。

次回はこの「(仮想)」十進BASIC」で遊んでみようと思っています。

« イヌホオズキ | トップページ | ムラサキシキブ »

理科おじさん」カテゴリの記事

コメント

この記事へのコメントは終了しました。

2024年5月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
サイト内検索
ココログ最強検索 by 暴想
無料ブログはココログ