一般大学生が色々やるブログ

いろいろなことを書いています

円周率を導出する式を複素数平面から思いついたので作ってみた


スポンサードリンク

つくってみた、と言いましたが1年ほど前につくった式です。

1年ほど前に複素数平面を習った時、1のn乗根が正n角形を表すことを知ってピンときました。

「もしかしたら正多角形の周の長さを座標から計算したら円周に近似させられるのでは?」と。

ちょうど座標の中にnも入るのでnを無限大に飛ばせば極限値も取れますし、何かと都合が良さそうだなと思いました。

そう思って紙に書いてみたのがこちら。
f:id:coronene:20210129012629p:plain


人に見せるつもりはなかったので説明が割と雑です。

まず左図ですが、複素数平面に半径1の円に内接する正n角形を簡略化して書いています。

正n角形の頂点の部分は極形式を用いてcos(2πk/n)+isin(2πk/n) (k=0,1,2,…)と表せるので、図に書いてある座標はcos(2π/n)+isin(2π/n)となります。

すると正n角形の一辺の長さsは、三平方の定理を用いて右の計算の通りになります。

あとは右下の説明通りです。

n→∞でπになるはずです。


この式が成り立つのかをpythonで確かめてみました。
まずは試しに小さい数字を代入します。
下のコードはx=8、つまり正八角形のときの値を出します。

import math
x=8
pi=math.pi
cos=math.cos
print((x/2)*(2-2*cos(2*pi/x))**0.5)

すると値はこのようになりました。

3.061467458920718

値が小さいので微妙な数字ですね。
ちなみにこの時点で東大の有名な入試問題「円周率が3.05より大きいことを証明せよ」の証明が完了しています。

次はもっと大きな数字を代入します。
大きすぎるとなぜか値が0.0になってしまうので、x=1000000を代入します。

import math
x=1000000
pi=math.pi
cos=math.cos
print((x/2)*(2-2*cos(2*pi/x))**0.5)

すると値は

3.141592770102689

となり、3.141592までは一致しました。
かなり収束速度が遅いことがわかりますね。

最後に極限値を計算してみます。
f:id:coronene:20210129163317j:plain
ちゃんとπに収束することがわかりました。

最後まで読んでいただきありがとうございました。