Code, Notes & PaperКод, Тэмдэглэл & Өгүүлэл

All source files from the GitHub repository, with explanations. Click any file to expand.GitHub репозиторийн бүх файл тайлбарын хамт. Файл дарж задлаарай.

🐍
analyze.py
Main analysis script — computes BK amplitude law correlation across zero datasets.Гол шинжилгээний скрипт — BK амплитудын хуулийн корреляцийг тооцоолно.
PythonNumPySciPyMatplotlib
What this doesЮу хийдэг вэ
Loads Odlyzko zero data, computes spacing covariances C(h) for prime lags h=p, then tests the BK prediction A(p) ~ (log p)²/p using Pearson correlation. Outputs r value, p-value, and scatter plot. Одлызкогийн тэгийн өгөгдлийг уншиж, прайм лаг h=p дээрх зайн ковариансыг C(h) тооцоолоод, Pearson корреляц ашиглан BK таамаглал A(p) ~ (log p)²/p-г шалгана. r утга, p-value, scatter plot гаргана.
1
Load zeros from zeros4.txt (Odlyzko high-T data)zeros4.txt-аас тэгүүдийг уншина (Одлызкогийн өндөр-T өгөгдөл)
2
Compute spacings δₙ = γₙ₊₁ − γₙ and center themδₙ = γₙ₊₁ − γₙ зайнуудыг тооцоолж, төвлүүлнэ
3
For each prime p: compute covariance C(p) = mean(δₙ · δₙ₊ₚ)Прайм p бүрт: ковариансыг C(p) = mean(δₙ · δₙ₊ₚ) тооцоолно
4
Compute Pearson r between C(p) and (log p)²/pC(p) болон (log p)²/p хооронд Pearson r тооцоолно
5
Save scatter plot → scatter.pngScatter plot хадгална → scatter.png
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import pearsonr

# Load zero heights
x = np.loadtxt("zeros4.txt")

# Spacings
d = np.diff(x)
d = d - d.mean()  # center

primes = [2,3,5,7,11,13,17,19,23,29,31,37]
vals = []

for p in primes:
    a = d[:-p]
    b = d[p:]
    c = np.mean(a*b)  # covariance at lag p
    vals.append(c)

vals = np.array(vals)
target = (np.log(primes)**2) / np.array(primes)

# BK amplitude law test
r, pv = pearsonr(vals, target)
print("correlation =", r)
print("p-value =", pv)

# Scatter plot
plt.scatter(target, vals)
plt.xlabel(r'$(\log p)^2/p$')
plt.ylabel('Amplitude')
plt.title('Prime-Locked Excess')
plt.savefig("scatter.png", dpi=200)
📊
code/01_power_spectrum.py
Computes the power spectrum S(τ) of Riemann zeros and plots peaks at prime frequencies.Риман тэгүүдийн S(τ) power spectrum тооцоолж, прайм давтамж дээрх оргилуудыг зурна.
PythonNumPyFourier
What this doesЮу хийдэг вэ
Computes S(τ) = |Σ e^{iτγₙ}|²/N for a range of τ values, then marks the prime frequencies τ_p = log(p)/2π on the spectrum. This was the first analysis that showed excess signal at prime positions. τ утгуудын мужид S(τ) = |Σ e^{iτγₙ}|²/N тооцоолж, спектр дээр прайм давтамж τ_p = log(p)/2π-г тэмдэглэнэ. Энэ нь прайм позиц дээр илүүдэл дохио харуулсан анхны шинжилгээ байв.
"""Тэгүүдийн power spectrum S(tau) тооцоолох"""
import numpy as np
import matplotlib.pyplot as plt

def power_spectrum(tau, gamma):
    """S(tau) = |Σ e^{i τ γ_n}|² / N"""
    N = len(gamma)
    Z = np.sum(np.exp(1j * tau * gamma))
    return np.abs(Z)**2 / N

# Prime frequencies τ_p = log(p) / 2π
primes = np.array([2,3,5,7,11,13,17,19,23,29,31,37])
tau_p = np.log(primes) / (2*np.pi)

# Full spectrum
tau_all = np.linspace(0, 0.8, 1000)
S_all = np.array([power_spectrum(t, gamma) for t in tau_all])
S_obs = np.array([power_spectrum(t, gamma) for t in tau_p])
📐
notes/framework_summary.md
Mellin operator framework — the mathematical foundation connecting prime operators to zeta zeros.Меллин операторын хүрээ — прайм операторуудыг зета тэгүүдтэй холбосон математик суурь.
MathematicsOperator Theory
Mathematical frameworkМатематик хүрээ
The Mellin transform framework provides an operator-theoretic explanation for why prime frequencies appear in zeta zero statistics. The key result is that the prime convolution operator acts as a multiplier via −ζ'/ζ. Меллин хувиргалтын хүрээ нь прайм давтамжууд яагаад зета тэгийн статистикт гарч ирдгийг операторын онолоор тайлбарлана. Гол үр дүн нь прайм конволюцийн оператор −ζ'/ζ-ээр үржигч болж ажиллана.
## Hilbert space
H = L²((0,∞), dx/x)

## Mellin transform
(Mf)(τ) = (1/√(2π)) ∫₀^∞ f(x) x^{-iτ} dx/x

## Prime operator
(P_σ f)(x) = Σ_{n≥1} Λ(n)/n^σ · f(x/n)

## Multiplier theorem  ← KEY RESULT
M[P_σ f](τ) = -ζ'(σ+iτ)/ζ(σ+iτ) · Mf(τ)

## Energy identity
E(σ,ε,X) = ∫_R |ζ'/ζ(σ+iτ)|² |φ̂(τ)|² dτ
🔍
notes/failure_analysis.md
Why the initial BK amplitude test failed — and how the correct normalization was discovered.Яагаад анхны BK амплитудын тест амжилтгүй болсон — зөв нормализаци хэрхэн олдсон.
AnalysisNormalizationDebugging
The key insightГол ойлголт
Initial results showed r ≈ 0.4–0.6, suggesting BK law was not confirmed. The problem was the normalization: using τ_p = log(p)/2π (low-T formula) instead of the correct high-T unfolded frequency τ_p = log(p)/log(T/2π). Using the corrected normalization produced r ≈ 0.014 in this dataset. Анхны үр дүнд r ≈ 0.4–0.6 гарч, BK хууль батлагдаагүй мэт харагдав. Асуудал нь нормализацид байсан: зөв өндөр-T задгай давтамж τ_p = log(p)/log(T/2π)-н оронд τ_p = log(p)/2π (бага-T томьёо) ашигласан байв. Зассаны дараа r = 0.014 гарсан.
## ❌ WRONG normalization (low-T)
τ_p = log(p) / (2π)
# → r ≈ 0.4–0.6, BK not confirmed

## ✅ CORRECT normalization (high-T unfolded)
τ_p = log(p) / log(T / 2π)
# → r = 0.014

## Why this matters
# At height T, zeros have mean spacing ~2π/log(T/2π)
# The "unfolded" coordinate accounts for this
# Montgomery's pair correlation uses this normalization
Lesson learned
Scientific failures are valuable. This failure led directly to the key insight that produced r = 0.014. Шинжлэх ухааны бүтэлгүйдэл үнэтэй. Энэ бүтэлгүйдэл r = 0.014 гаргасан гол ойлголтод шууд хүргэсэн.
📝
paper/main.tex
LaTeX source for the full research paper — the formal write-up of all results.Бүрэн судалгааны өгүүллийн LaTeX эх — бүх үр дүнгийн албан ёсны бичгийн хэлбэр.
LaTeXPDFPreprint
Paper structureӨгүүллийн бүтэц
The paper contains: Abstract, Introduction (BK background), Methods (spacing covariance, normalization), Results (table with r values for all 3 datasets), Discussion, Limitations, Conclusion. Өгүүлэл дараах хэсгүүдийг агуулна: Хураангуй, Танилцуулга (BK суурь), Арга (зайн ковариансыг, нормализаци), Үр дүн (3 датасетийн r утгын хүснэгт), Хэлэлцүүлэг, Хязгаарлалтууд, Дүгнэлт.