AOYAMA KOJI's PROGRAMMING BLOG

円周率を算出する基本的な考え方

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

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



45度の直角三角形


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

tan(タンジェント)


円周率を算出する基本的な考え方 fig.3
 ここで、tan(タンジェント)を求めます。 タンジェントは直角三角形をこのように配置した時に、以下になります。
\(\tan{左下角度} = \frac{縦辺の長さ}{横辺の長さ}\)

 数学的に書くと、左下角度を\(\theta\)(しーた)、右上の頂点の座標を\((x,y)\)としたときに、以下になります。
\(\tan\theta = \frac{y}{x}\)

 この図では、\(\theta\)は45°です。 また\(\frac{y}{x}\) は \(\frac{1}{1} = 1\) です。 ですので以下になります。
\(\tan45°= 1\)

arctan(アークタンジェント)


円周率を算出する基本的な考え方 fig.4
 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\)

 つまり、以下が導けます。ライプニッツの公式と呼ばれるものです。
\(\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 LicenseZen Antiqueを使用しております。
・数式表現にMathJaxを使用しております。助かります!
・(本記事公開後)本記事公開後に公開された記事へのリンクを追加しております。

カテゴリー:プログラミング解説,円周率計算
[PR]