2024年6月23日日曜日

ひも理論から円周率の公式を発見

 インドの物理学者がひも理論の研究から偶然「円周率」の新しい公式を発見

いやー、こういう発見があるから数学は面白い。数学が「自然科学の言語」と言われるのも納得です。

原論文はこちら。実際の計算公式は以下のとおりです。

\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 件のコメント:

コメントを投稿