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」で遊んでみようと思っています。
「理科おじさん」カテゴリの記事
- 化学の日(2022.10.26)
- 秒速→時速(2022.09.01)
- 風速75メートル(2022.08.31)
- 「ウクライナで生まれた科学者たち」(2022.05.31)
- 反射光(2022.05.09)
この記事へのコメントは終了しました。
コメント