インドの物理学者がひも理論の研究から偶然「円周率」の新しい公式を発見
いやー、こういう発見があるから数学は面白い。数学が「自然科学の言語」と言われるのも納得です。
原論文はこちら。実際の計算公式は以下のとおりです。
\begin{eqnarray*} \pi=4+\sum_{n=1}^{\infty}\frac{1}{n!}\left(\frac{1}{n+\lambda} - \frac{4}{2n+1}\right)\left(\frac{(2n+1)^{2}}{4(n+\lambda)}-n\right)_{n-1} \end{eqnarray*}
2つほど補足すると、唐突に出てくる\(\lambda\)は実部が\(-1\)より大きな任意の複素数、右下の小さな\({}_{n-1}\)はポッホハマー記号(昇冪)です。
Pythonで書くとこんな感じ。元の式をできるだけ忠実に表しているので、メモ化などの最適化はしていません。
# https://gigazine.net/news/20240619-string-theory-pi/ # 原論文: https://journals.aps.org/prl/pdf/10.1103/PhysRevLett.132.221601 import math def poch(x: float, n: int) -> float: # ポッホハマー記号(昇冪) # https://ja.wikipedia.org/wiki/%E3%83%9D%E3%83%83%E3%83%9B%E3%83%8F%E3%83%9E%E3%83%BC%E8%A8%98%E5%8F%B7 y = 1 for j in range(n): y *= x + j return y def term(lambda_: float, n: int) -> float: # 第n項を計算 a = 1/(n+lambda_) - 4/(2*n+1) b = (2*n+1)**2 / (4*(n + lambda_)) - n return a * poch(b, n-1) / math.factorial(n) def pi(lambda_: float, n: int) -> float: # 円周率を計算 p = 4 for n_ in range(1, n): p += term(lambda_, n_) return p print(pi(1000, 100))
Python Praygroundにコードを貼り付けると結果が出てきます。pi
関数に渡す値を色々いじって遊んでみてください。
0 件のコメント:
コメントを投稿