LoginSignup
16
11

More than 5 years have passed since last update.

Googleの計算資源を使って、無料で円周率の計算をしてみよう

Posted at

Google BigQueryの課金体系はスキャンしたテーブルのサイズに対して課金されるシステムです。
そのため、無からテーブルを生成し、それに対して計算を行えば、理論上は無料で計算を行うことができるはずです。

というわけで、その1つの実例として、円周率の計算をしてみます。

計算には以下のライプニッツの公式を使います。

$$
\sum _{n=0}^{\infty }\,{\frac {(-1)^{n}}{2n+1}}\;=\;{\frac {\pi }{4}}
$$

[出典] https://en.wikipedia.org/wiki/Leibniz_formula_for_%CF%80

円周率を計算する公式の中では収束が遅い方ですが、式の形が簡単なので、計算のサンプルには良さそうです。

SELECT
  SUM(4 * POW(-1, n) / (2 * n + 1)) as pi
FROM
  (
    SELECT  GENERATE_ARRAY(1000 * l - 1000, 1000 * l - 1) AS m
    FROM UNNEST(GENERATE_ARRAY(1, 1000000)) AS l
  ),
  UNNEST(m) AS n

このSQLでライプニッツの公式の第10億項までの和を求めます。
試しに実行してみると、 3.1415926525880504 という結果が得られました。
計算時間は410秒でした。
この結果と数表を比較してみると、小数点以下第8位までは正確な値になっていることがわかりました。

もちろん、計算にかかった費用はゼロ円です。

スクリーンショット_2016-11-05_12_39_34.png

誤差の評価を全然していないので、本気で数値計算をしている方々からは怒られそうですが、ネタ記事なのでこのくらいのテキトー加減で許してください。

16
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
11