見出し画像

2023年1月15日(日)

今日は、前日からの疲れのせいか、一日中ぼーっと過ごしてしまいました。今日の空模様のように、まるで曇り空のような一日でした。

円周率の話はこれで4回目になります。円周率100兆桁の計算に要した時間は157日23時間31分7.651秒。5か月もかかる長大なプロジェクトを支えたのは、Googleが誇る堅固で信頼性の高いハードウェア環境によるもの。円周率の計算は、近年では、効率性の高いアルゴリズムというよりは、ハードウェアの耐久テストの様相を呈しているようです。チュドノフスキー兄弟が活躍した頃のように、個人で何とかできるものではなくなりつつあります。

試しに、個人でやってみます。今回は、Rubyのsampleディレクトリに入っている、円周率を延々と計算し続けて標準出力するという、実に酔狂なスクリプトを用います。まず、GitHubからpi.rbだけをwgetしました。

% wget -q https://raw.githubusercontent.com/ruby/ruby/master/sample/pi.rb
% wc pi.rb
      18      66     323 pi.rb

たったの323バイト、18行(実質13行でした)のスクリプトです。実行すると、標準出力にどんどん円周率の数字が出てきます。

% ruby --version
ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c5) [amd64-freebsd13]
% ruby pi.rb
3141592653589793238462643383279502884197169399375...(延々と続く)

飽きるまで眺めたところで、Ctrl-Cを押して終了します。計算速度を測るために、timeコマンドに渡してみます。一呼吸おいてからCtrl-Cで強制終了。

% time ruby pi.rb > out
^Cpi.rb:10:in `/': Interrupt
        from pi.rb:10:in `block in <main>'
        from pi.rb:5:in `loop'
        from pi.rb:5:in `<main>'

ruby pi.rb > out  2.90s user 0.16s system 99% cpu 3.059 total
% ls -l out
-rw-r--r---  1 akyswd  users  18467 Jan 15 19:35 out

結果、3.059秒で1万8467桁。このペースが持続すると仮定し、100兆(10の14乗)桁の算出に必要な計算時間を見積もってみます。(ここでは、検算に必要な時間は省きます。)

$$
\frac{3.059}{18467}=\frac{x}{10^{14}}
$$

これを解くと、$${x\approx1.6565\times10^{10}}$$、つまり165億6500万秒になります。$${1.6565\times10^{10}/(60\times60\times24\times365)\approx525.3}$$なので、結果、100兆桁の円周率の計算には525年かかることがわかりました。

19世紀のアマチュア数学者William Shanksは、人生をかけて、マチンの公式により手計算で円周率を707桁まで求めた人です(後年、528桁目から間違っていることが判明)。現代は計算機によって楽ができますが、それでも人生を複数回もかけないと世界記録には届かないくらいの高みに行ってしまっているのです。

今日覚えたこと

  1. note.comのインライン数式の書き方

  2. note.comのコードの使い方

明日やること

  1. 旅行会社に電話する

  2. 掃除する(正月以降のほこりがやばいことに…)


この記事が気に入ったらサポートをしてみませんか?