« イワレンゲ | トップページ | キノコ »

2014年11月 4日 (火)

1000桁モードで

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による建部のπの式の計算」
http://yamada-kuebiko.cocolog-nifty.com/blog/2014/10/post-5d66.html
2014年10月31日 (金)「VBAによるラマヌジャンのπの式の計算」

↑この続きです。一応このシリーズの最終回になる予定です。
--------------------

★「(仮称)十進BASIC」というものを簡単にご紹介します。
ヘルプから引用します。

概要
 (仮称)十進BASICは,コンピュータを計算の道具として使うためのプログラミング言語です。 JIS Full BASIC 図形機能単位のほぼすべての機能を実現しています。また,JIS Full BASIC 附属書にあるモジュール及び単文字入力の機能も概ね実現しています。
・・・
1000桁モード
有効数字1000桁以下の10進数は正確な値を持ちます。
計算結果は,1000桁~1008桁のいずれかの10進数に丸められます。
丸めは切り捨てです。
三角関数,指数関数,対数関数などの超越関数は使えません。

ちょっと注意しておきたいのは

使用規定および著作権
 (仮称)十進BASICは教育研究を目的として作成されたプログラムです。
 本BASICを利用して得られた研究結果は必ず公開してください。
 バグ(あるいは不具合)を見つけた方は必ずご連絡ください。
 再配布は制限しません。解説書・参考書等の出版も制限しません。
 品質は無保証です。実行結果については責任を負いません。

こういうことです。
私のは「研究結果」とはいえませんが、自分のやったことですので、丸ごと公開します。
結果については自分で評価します。
そのつもりで使うなら、非常に利用価値の高い言語です。

↓参考
http://hp.vector.co.jp/authors/VA008683/index.htm
十進BASICのホームページ
http://www.koshigaya.bunkyo.ac.jp/shiraish/basic/tutorial/contents.htm
(仮称)十進BASICによる JIS Full BASIC入門
http://www.tmd.ac.jp/artsci/math/nakaguti/basic/basicnote.html
十進BASICまとめ

★では建部のπの式を十進BASICで。
プログラムはこれだけです。
{「!」は「リマーク」といって、実行には何の影響も与えない「覚え書き」のことです。}
階乗・平方根はこのBASICが装備している関数を使いました。
--------------------
!Tatebe Pi

FOR i = 1 TO 20
   LET t = 1
   FOR j = 1 TO i
      LET t = t + (FACT(j)^2 / (FACT(2*j+2)/2))
   NEXT j
   LET p = 3 * SQR(t)
   PRINT p;
   PRINT PI-p
NEXT i
END
--------------------
↓実行結果です。
--------------------
3.12249899919919  1.90936543906032E-2
3.13847096529504  3.12168829475324E-3
3.1410303132207   5.62340369093238E-4
3.14148509011717  1.07563472623238E-4
3.14157121469014  2.1438899653238E-5
3.14158825004026  4.403549533238E-6
3.14159172807956  9.25510233238E-7
3.14159245551213  1.98077663238E-7
3.1415926105701   4.3019693238E-8
3.14159264413244  9.457353238E-9
3.1415926514894   2.100393238E-9
3.14159265311925  4.70543238E-10
3.14159265348359  1.06203238E-10
3.14159265356567  2.4123238E-11
3.14159265358429  5.503238E-12
3.14159265358855  1.243238E-12
3.14159265358952  2.73238E-13
3.14159265358975  4.3238E-14
3.14159265358981 -1.6762E-14
3.14159265358982 -2.6762E-14
--------------------
↓1000桁モードで i を50まで回すと{手動で5桁区切りにしてあります}
3.14159 26535 89793 23846 26433 83279 50200 013178・・・
0.00000 00000 00000 00000 00000 00000 00088 4065382・・・
このくらいです。30桁ちょいまで正しい。
私が暗記しているのは小数点以下30桁ですので、その辺まで到達したようです。

★ラマヌジャンの式をやってみましょう。
--------------------
!Pi Ramanujan

LET C = 2*SQR(2)/9801

FOR i = 0 TO 10
   LET quotient = 0
   FOR n = 0 TO i
      LET numerator = FACT(4*n) * (26390*n + 1103)
      LET denominator = (((4^n)*FACT(n))^4) * 99^(4*n)
      LET quotient =quotient + (numerator/denominator)
   NEXT n
   LET p = 1 / (C*quotient)
   PRINT i;   
   PRINT p;
   PRINT PI - p
NEXT i

END
--------------------
↓通常のモードで実行すると
0  3.1415927300133 -7.6423506762E-8
1  3.1415926535898 -6.762E-15
2  3.1415926535898 -6.762E-15
3  3.1415926535898 -6.762E-15
4  3.1415926535898 -6.762E-15
5  3.1415926535898 -6.762E-15
すぐ変化しなくなります。エクセルでやった時と同じ。
--------------------

↓1000桁モードで実行した出力画面のコピーです。{1000桁出す必要はないのでこういう提示方法にしてみました。}
Ramresult
1000桁のπと計算値の差が出ていますが、0の増えていくようすがわかると思います。
収束のスピードは建部の式よりかなり速いですね。
i を10まで回すと
3.
14159 26535 89793 23846 26433 83279 50288 41971 69399 37984 68327 ・・・
00000 00000 00000 00000 00000 00000 00000 00000 00000 00474 10117 ・・・
こんな感じ。
45桁ちょいまで合ってます。

★私のプログラミングづくりは、「アプリ」を作るのと違って、ようするに純粋な「遊び」なんです。
何かの役に立つということは全くないでしょう。
役に立たないからこそ楽しいのです。
自分の考えたことを、コンピューター向けに表現してやって、それが思い通りに動いたときが嬉しいのです。
それが楽しくってこの歳になっても遊んでいるというわけです。
よかったらそんな遊びをしてみませんか。
遊びなんて役に立たないから遊び。純粋な喜びに浸れます。

« イワレンゲ | トップページ | キノコ »

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

コメント

コメントを書く

(ウェブ上には掲載しません)

« イワレンゲ | トップページ | キノコ »

2021年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 暴想
無料ブログはココログ