円周率を算出する基本的な考え方
2025/04/19

この記事のベンチマークアプリケーションで使用した、円周率算出の式について、 本記事では\(\tan\)(タンジェント)や\(\arctan\)(アークタンジェント)、およびマクローリン展開など、基本的な考え方を解説します。
プログラミングブログ記事一覧
45度の直角三角形

円周率を算出するための、まず最初のステップとして、45度の直角三角形を考えます。 この図の通り、右下に直角、左下に45°が来るように配置します。
この直角三角形は二等辺三角形でもあり、横線と縦線の比率が 1:1 になります。
tan(タンジェント)

ここで、tan(タンジェント)を求めます。 タンジェントは直角三角形をこのように配置した時に、以下になります。
\(\tan{左下角度} = \frac{縦辺の長さ}{横辺の長さ}\)
数学的に書くと、左下角度を\(\theta\)(しーた)、右上の頂点の座標を\((x,y)\)としたときに、以下になります。
\(\tan\theta = \frac{y}{x}\)
この図では、\(\theta\)は45°です。 また\(\frac{y}{x}\) は \(\frac{1}{1} = 1\) です。 ですので以下になります。
\(\tan45°= 1\)
arctan(アークタンジェント)

arctan(アークタンジェント)は、tanの入力と出力を逆にしたものです。
\(\tan\theta = \frac{y}{x}\)
に対して
\(\arctan\frac{y}{x} = \theta\)
今回の例では、1 の arctan で 45°が求まります。
\(\arctan 1 = 45°\)
radian(ラジアン/rad)

角度について、私達は普段、一周を360°としていますが、数学やプログラムでは、円周率\(\pi\)を用いて、 一周を \(2\pi\) で表します。 45°は一周の \(\frac{1}{8}\) ですので、\(\frac{\pi}{4}\) です。
\(\arctan 1 = 45° = \frac{\pi}{4}\)
この角度の表現方法を、radian(ラジアン/rad)と呼びます。 一方360°の方はdegree(ディグリー/deg)と呼びます。
degreeは「°」あるいは「度」と単位がつきますが、radianでは付きません。
\(\arctan\)を式にできれば円周率が求まる
以上でつまり、\(\arctan\)を求める式が別途あれば、円周率\(\pi\)が求まることになります。
[PR]
マクローリン展開
数学には、マクローリン展開というものが存在します。
マクローリン展開は、できない場合もありますが、 \(\arctan{x}\)は\(|x|\le{1}\)のときにマクローリン展開が可能で、以下になります。
\(\arctan x = x - \frac{1}{3}x^{3} + \frac{1}{5}x^{5} - \frac{1}{7}x^{7} \cdots\)
これは、「…」以降も無限に続く式です。
\(\arctan 1\)
ここで、前記式の \(x = 1\) の場合は、以下になります。結構単純になります。
\(\arctan 1 = 1 - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} \cdots\)
2つの式を合わせる!
ここまでで、以下の2つの式が得られています。再掲します。
\(\arctan 1 = \frac{\pi}{4}\)
\(\arctan 1 = 1 - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} \cdots\)
\(\arctan 1 = 1 - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} \cdots\)
つまり、以下が導けます。ライプニッツの公式と呼ばれるものです。
\(\frac{\pi}{4} = 1 - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} \cdots\)
もう少し変形します。\(\pi\)を算出する式になりました!
\(\pi = 4 - \frac{4}{3} + \frac{4}{5} - \frac{4}{7} \cdots\)
有限回数の計算量にする
この式は、無限に続きます。 いくらコンピューターでも、無限には計算できません。
ただし、項が進むにつれて、加減算する数値はどんどん小さくなりますので、影響も徐々に少なくなります。
そこで、求める円周率の桁数をあらかじめ決めておき、その桁数の数値より充分に小さくなったら、計算を終えるようにします。 そうすることで、有限回数の計算量で円周率を算出できます。
高速化余地がある
この式は、確かに有限回数の計算量で収まるのですが、分母の値がゆっくり大きくなる、つまり加減算する数が小さくなる速度がゆっくりで、なかなか収束しません。 求める円周率の桁数を1桁増やすごとに、10倍の計算量が必要になります。
結論から書きますと、円周率の算出では、ライプニッツの公式を用いるよりも高速化する余地があります。
より高速な、より早く収束する式は、複数発見されていますが、 ベンチマークで使用した円周率の算出では、その中のマチンの公式と呼ばれるものを用いました。 マチンの公式も、今回解説した \(arctan\)のマクローリン展開を利用しています。 そちらについては高速円周率算出の記事で解説していますので、併せてご覧ください。
まとめ
本記事では、円周率を算出する式の基本的な考え方を解説しました。 ライプニッツの公式を用いて \(\arctan 1\)のマクローリン展開で円周率を算出することができます。
ただし「円周率算出の高速化手法」では、 本記事で解説した手法より高速な方式を用いて解説していますので、そちらもご覧ください。
なお、本記事の実現に必要な「計算精度を確保する」記事もご確認ください。
補足
- \(|x|\)は「\(x\)の絶対値」です。\(|x|\le{1}\)は\({-1}\le{x}\le{1}\)です。
- 画像内のラスタライズ文字フォントにOpen Font LicenseのZen Antiqueを使用しております。
- 数式表現にMathJaxを使用しております。
- ※各社の登録商標または商標について「®」「™」等の表記はしておりません。
- (本記事公開後)本記事公開後に公開された記事へのリンクを追加しております。
カテゴリー:プログラミング解説,円周率計算
[PR]