リーマン予想の経験的証明

正しい用語は ヒューリスティック 証拠。 数学的な観点からの正式な証明ではなく、経験的証拠に基づく強力な議論です。 公開することにしたことは十分に注目に値します。 この記事では、概念について詳しく説明することなく、単刀直入に説明します。 目標は、忙しい読者が方法のかなり良いアイデアを得ることができるように、簡単な概要を提供することです. また、高度で複雑な数学関数を扱う科学計算用の Python MPmath ライブラリの優れた入門書にもなります。 確かに、現在のタイトルを選ぶか、「科学的プログラミングのための MPmath Python ライブラリの紹介」を選ぶか、長い間迷いました。

一般化リーマン仮説

一般化リーマン仮説または予想 (GRH) は次のように述べています。 ある種の複合関数 L(sχ) 引数の実部の場合は根を持たない s 厳密には 0.5 と 1 の間です。 χ は character というパラメータで、 s = σ +私あなた が引数です。 その実部は σ. 表記がおかしくなるかもしれません。 しかし、それは十分に確立されています。 数学者を混乱させないように使用します。 キャラクター χ 正の整数で定義される乗法関数です。 私はに焦点を当てます χ4、主要なディリクレ指標モジュロ 4:

  • イチイ p は素数であり、 p – 1 は 4 の倍数なので、 χ4(p) = 1
  • p が素数で、 p – 3 は 4 の倍数なので、 χ4(p) = -1
  • イチイ p = 2、 χ4(p) = 0

これらの関数にはオイラー積があります。

L(s,chi) = prod_p Bigg(1 - frac{chi(p)}{p^{s}}Bigg)^{-1},

ここで、積はすべての素数の上にあります。 問題の核心は積の収束です。 s (象徴 σ) 満足し σ ≤ 1. σ > 1、収束は絶対的であるため、関数 L オイラー積に基づくルートはありません。 収束が絶対的でない場合、積の式の背後に「隠れた」目に見えないルーツが存在する可能性があります。 これは次の場合に発生します。 σ = 0.5。

非常に興味深いところ

保険料 p の間でややランダムに交互に χ4(p) = +1 および χ4(p) = -1、それらすべてを考慮すると等しい比率 (50/50) です。 これは、ディリクレの定理の結果です。 ただし、 χ4(p) = -1 は非常に有利なスタートを切ることができます。これはチェビシェフのバイアスとして知られています。

アイデアは、オイラー積の因子を次のように再配置することです。 χ4(p) = +1、次の要因は χ4(p) = -1。 逆に、できるだけ変化を少なくします。 その結果できた製品をスクランブル製品と呼んでいます。 絶対収束しない限り、級数の項の順序を変更することはできないと数学の先生が言ったことを覚えているかもしれません。 ここでもそうです。 まさに、これがこの問題の核心です。

操作が正当であると仮定すると、連続する要因の各ペアをグループ化します (1 – p-s) および (1 + q-s)、1 つの要因に。 いつ p は非常に大きく、対応する q に非常に近い p (1 – p-s)(1 + q-s) は (1 – p に非常に近い)-2秒)。 たとえば、 p = 4,999,961 の場合、 q = 4,995,923。

魔法のトリック

仮定すると p そしてその後 q = pp 十分に近い場合 p が非常に大きい場合、スクランブリングとグループ化の操作により、積が完全に収束する積になります。 σ (の本当の部分 s) は厳密に 0.5 より大きくなります。 その結果、次の場合はルートがありません。 σ > 0.5。 無限にあるのに σ = 0.5、積の収束は不確かです。 後者の場合、分析継続を使用して計算できます。 L. そして、そこに行きます!

結局のところ、Δp に比べて十分に小さい p、 いつ p 広いです。 今日まで誰も知らないため、GRH は証明されていません。 それでも、オイラー積を使用して計算できます L(sχ4)時だけでなく σ > 1 もちろんですが、 σ > 0.5。 以下のPythonコードでそれを行うことができます。 それは非効率的です。もっと速い方法がありますが、うまくいきます! 数学界では、誰も収束状況を知らないので、そのような計算は「合法的ではない」と言われました。 収束状況を知ることは、HRM を解くことと同じです。 しかし、コードをいじってみると、収束が「明白」であることがわかります。 少なくともいつ あなた 広すぎず、 σ は 0.5 に近すぎず、何百万もの素数を積で使用します。

注意点が 1 つあります。 さまざまな Dirichlet-L 関数に同じアプローチを使用できます L(sχ)だけでなく、 χ = χ4. しかし、1つあります χ メソッドが適用されない場合: 1 に等しい定数であり、したがって交互でない場合。 それか χ 古典的なリーマンゼータ関数に対応 ゼータ(s)。 この方法は最も有名なケースでは機能しませんが、正式な証明を取得するためだけに χ4 あなたを史上最も有名な数学者に変えるでしょう。 ただし、GRH を証明するための最新の試みは、直接的なアプローチ (因数分解を行う) を避け、代わりに GRH と同等または暗示する他のステートメントに焦点を当てています。 このトピックに関する私の記事を参照してください。 のルーツのために L(sχ4)、こちらをご覧ください。

MPmath ライブラリを使用した Python コード

計算した L(sχ) およびさまざまな式を使用したさまざまな関連関数。 目標は、0.5 < σ < 1. コードは、こちらの GitHub リポジトリにもあります。

import matplotlib.pyplot as plt
import mpmath
import numpy as np
from primePy import primes

m =  150000
p1 = []
p3 = []
p  = []
cnt1 = 0
cnt3 = 0
cnt  = 0
for k in range(m):
    if primes.check(k) and k>1:
        if k % 4 == 1:
            p1.append(k)
            p.append(k)
            cnt1 += 1
            cnt += 1
        elif k % 4 ==3:
            p3.append(k)
            p.append(k)
            cnt3 += 1
            cnt += 1

cnt1 = len(p1)
cnt3 = len(p3)
n = min(cnt1, cnt3)
max = min(p1[n-1],p3[n-1])

print(n,p1[n-1],p3[n-1])
print()

sigma = 0.95
t_0 = 6.0209489046975965 # 0.5 + t_0*i is a root of DL4

DL4 = []
imag = []
print("------ MPmath library")
for t in np.arange(0,1,0.25):
    f = mpmath.dirichlet(complex(sigma,t), [0, 1, 0, -1]) 
    DL4.append(f)
    imag.append
    r = np.sqrt(f.real**2 + f.imag**2)
    print("%8.5f %8.5f %8.5f" % (t,f.real,f.imag))

print("------ scrambled product")  
for t in np.arange(0,1,0.25):
    prod = 1.0
    for k in range(n):
        num1 = 1 - mpmath.power(1/p1[k],complex(sigma,t))
        num3 = 1 + mpmath.power(1/p3[k],complex(sigma,t))
        prod *= (num1 * num3)
    prod = 1/prod
    print("%8.5f %8.5f %8.5f" % (t,prod.real,prod.imag))

DL4_bis = []
print("------ scrambled swapped") 
for t in np.arange(0,1,0.25):
    prod = 1.0
    for k in range(n):
        num1 = 1 + mpmath.power(1/p1[k],complex(sigma,t))
        num3 = 1 - mpmath.power(1/p3[k],complex(sigma,t))
        prod *= (num1 * num3)
    prod = 1/prod
    DL4_bis.append(prod)
    print("%8.5f %8.5f %8.5f" % (t,prod.real,prod.imag))

print("------ compare zeta with DL4 * DL4_bis")
for i in range(len(DL4)):
    t = imag[i]
    if t == 0 and sigma == 0.5:
        print("%8.5f" % 
    else:
        zeta = mpmath.zeta(complex(2*sigma,2*t))
        prod = DL4[i] * DL4_bis[i] / (1 - 2**(-complex(2*sigma,2*t))) 
        print("%8.5f %8.5f %8.5f %8.5f %8.5f" % (t,zeta.real,zeta.imag,prod.real,prod.imag))

print("------ correct product")
for t in np.arange(0,1,0.25):
    prod = 1.0
    chi = 0
    k = 0
    while p[k] <= max:
        pp = p[k]
        if pp % 4 == 1:
            chi = 1
        elif pp % 4 == 3:
            chi = -1
        num = 1 - chi * mpmath.power(1/pp,complex(sigma,t))
        prod *= num
        k = k+1
    prod = 1/prod
    print("%8.5f %8.5f %8.5f" % (t,prod.real,prod.imag))

print("------ series")
for t in np.arange(0,1,0.25):
    sum = 0.0
    flag = 1
    k = 0
    while 2*k + 1 <= 10000:
        num = flag * mpmath.power(1/(2*k+1),complex(sigma,t))
        sum = sum + num
        flag = -flag
        k = k + 1
    print("%8.5f %8.5f %8.5f" % (t,sum.real,sum.imag))

著者について

Vincent Granville は、先駆的なデータ サイエンティストであり、機械学習の専門家であり、MLTechniques.com の創設者であり、Data Science Central (2020 年に TechTarget によって買収された) の共同創設者であり、元 VC 資金提供のエグゼクティブ、著者、および特許所有者です。 Vincent の過去の企業経験には、Visa、Wells Fargo、eBay、NBC、Microsoft、CNET、InfoSpace が含まれます。 Vincent は、ケンブリッジ大学および国立統計科学研究所 (NISS) の元ポスドクでもあります。

ヴィンセントに掲載された 数論ジャーナル王立統計学会誌 (シリーズ B)、および パターン分析とマシン インテリジェンスに関する IEEE トランザクション. 彼は「Intuitive Machine Learning and Explainable AI」の著者でもあり、こちらから入手できます。 彼はワシントン州に住んでおり、確率過程、動的システム、実験数学、確率的数論に関する研究を楽しんでいます。

Leave a Comment

Your email address will not be published. Required fields are marked *