πの定義は、円の面積=πr^2 もしくは、円周=2πrです。このいずれかを用いて証明することになります。

下図は正六角形と正十二角形の図です。多角形になる程、円に近づく様子がわかります。

下図は、その一辺を計算する方法です。円周=2πrを証明することにします。半径rを1とするとa=sinθ、b=1-cosθで表すことができ、それらよりピタゴラスの定理でcの式を得ることが出来ます。

正N角形の場合、θ=360÷Nと表せます。辺がN個あるため、c×N≒2πr=2π
よって、π= c×N/2 >3.05を証明すれば良いです。
手計算では手間ですが、本コードを実行すると、下図のように円周率π>3.05であることがわかります。例えば、3.141592…を示す場合は、正4096角形くらいが必要になります。

■本プログラム
import numpy as np
import math
import japanize_matplotlib
def main():
rates = np.ones(N) * 2
print(rates)
geometric_progression_list = (rates ** np.arange(N)).tolist()
print(geometric_progression_list)
geometric_progression_int_list = [int(n) for n in geometric_progression_list]
print(geometric_progression_int_list)
for i in geometric_progression_int_list:
if i >=4:
shita = 360 / i
a = math.sin(math.radians(shita))
b = 1 - math.cos(math.radians(shita))
c = math.sqrt(pow(a,2) + pow(b,2))
pi = c * i / 2
print('正'+ str(i) + '角形で近似計算すると、', '円周率' + str(pi))
if __name__ == '__main__':
N = 20
main()
以上
<広告>
リンク