円周率の計算(円に内接する多角形と外接する多角形の周囲の長さを使う)
下記のページを参考にしました
https://w3e.kanazawa-it.ac.jp/e-scimath/contents/t16/textbook_t16_all.pdf
円に内接する正n角形の周の長さと、
円に外接する正n角形の周の長さとから、
円に内接する正2n角形の周の長さと、
円に外接する正2n角形の周の長さが計算できるそうです。
円に内接する正n角形の周の長さを、
円に外接する正n角形の周の長さをとすると、
となるそうです。
これをPythonで実装しました。
import math # 半径0.5の円に内接する正六角形の周の長さ a = 3.0 # 半径0.5の円に外接する正六角形の周の長さ b = 2.0 * math.sqrt(3) print((a + b) / 2.0) for _ in range(10): b = 2.0 * a * b / (a + b) a = math.sqrt(a * b) print((a + b) / 2.0)
結果
3.232050807568877 3.1606094252018613 3.1461442776893693 3.142718209089151 3.1418732752679386 3.1416627611326433 3.141610177484353 3.141597034376504 3.1415937487747883 3.1415929273853114 3.141592722038627