Una prueba empírica de la conjetura de Riemann
debe ser el termino correcto heurístico prueba. Esta no es una prueba formal desde un punto de vista matemático, sino argumentos sólidos basados en evidencia empírica. Lo suficientemente notable como para decidir publicarlo. En este artículo, iré directo al grano sin discutir los conceptos en detalle. El objetivo es ofrecer un breve resumen para que el lector ocupado pueda hacerse una idea bastante buena del método. También proporciona una excelente introducción a la biblioteca Python MPmath para cálculos científicos que se ocupan de funciones matemáticas avanzadas y complejas. De hecho, dudé durante mucho tiempo entre elegir el título actual e “Introducción a la biblioteca MPmath Python para programación científica”.
Hipótesis de Riemann generalizada
La Hipótesis o Hipótesis Generalizada de Riemann (GRH) establece lo siguiente. Ciertos tipos de funciones complejas L(etc., X) no tiene raíces cuando es la parte real del argumento etc. estrictamente entre 0,5 y 1. Aquí X es un parámetro llamado carácter y etc. = σ + yot es un argumento Es una parte real de él. σ. La nota puede parecer incómoda. Pero está bien construido. Lo uso para no confundir a los matemáticos. Personaje X es una función de multiplicación definida en números enteros positivos. presto atencion X4módulo de carácter básico de Dirichlet 4:
- Si pag es un número primo y pag – 1 es múltiplo de 4, entonces X4(pag) = 1
- Si p es un número primo y pag – 3 es múltiplo de 4, entonces X4(pag) = -1
- Si pag = 2, X4(pag) = 0
El producto de Euler de estas funciones es:
L(s,\chi) = \prod_p \Bigg(1 - \frac{\chi(p)}{p^{s}}\Bigg)^{-1},
donde el producto está en todos los números primos. El quid del problema es la aproximación cuando el producto es una pieza real. etc. (personaje σ) es satisfactoria σ ≤ 1. Si σ > 1, la convergencia es absoluta y, por lo tanto, es una función L No tiene una raíz basada en el producto de Euler. Si la convergencia no es absoluta, puede haber raíces invisibles “ocultas” detrás de la fórmula del producto. Ahí es cuando sucede σ = 0,5.
Donde se pone muy interesante
Empieza pag alternar algo al azar entre X4(pag) = +1 y X4(pag) = -1, todo en igual proporción (50/50). Esta es una consecuencia del teorema de Dirichlet. Pero los que son X4(pag) = -1 tiene un comienzo muy fuerte, un hecho conocido como el sesgo de Chebyshev.
La idea es reorganizar los factores en el producto de Euler de modo que si X4(pag) = +1, ahí está el siguiente factor X4(pag) = -1. Y viceversa, con la menor cantidad de cambios posible. Llamo al producto resultante un producto jugoso. Tal vez recuerdes que tu profesor de matemáticas te dijo que no puedes cambiar el orden de los términos en una serie a menos que haya una convergencia absoluta. Esto también es cierto aquí. De hecho, ese es el punto.
Suponiendo que la operación es válida, agrupa cada par de factores consecutivos, (1 – p-pag) y (1 + q-pag), a un factor. Cuándo pag muy grande, adecuado q esta muy cerca pag entonces (1 – p-pag)(1 + q-pag) está muy cerca (1 – p-2p). Por ejemplo, si pag = 4,999,961, entonces q = 4.995.923.
truco de magia
asumiendo pag y lo siguiente q = pag + Δpag cuando lo suficientemente cerca pag es muy grande, las operaciones de escalada y agrupación hacen que el producto sea completamente cohesivo σ (la parte original etc.) es significativamente mayor que 0,5. Como resultado, si no hay raíz σ > 0,5. Aunque hay un número infinito σ = 0,5, donde la aproximación del producto es incierta. En este último caso, la continuación analítica se puede utilizar para el cálculo. L. ¡Y voilá!
Todo depende de si Δ o nopag es bastante pequeño en comparación con pagcuándo pag es grande. Hasta el día de hoy, nadie lo sabe, por lo que GRH sigue sin probarse. Sin embargo, puede usar el producto de Euler para calcular L(etc., X4) sólo cuando σ > 1 por supuesto, pero también cuando σ > 0,5. Puede hacer esto con el siguiente código de Python. Esto es ineficiente, hay métodos más rápidos, ¡pero funciona! Me han dicho en círculos matemáticos que tales cálculos son “ilegítimos” porque nadie conoce el estado de convergencia. Conocer el estado de convergencia es equivalente a resolver el GRH. Pero si juegas con el código, verás que la aproximación es “obvia”. al menos cuando t no tan grande σ No demasiado cerca de 0,5, y está utilizando muchos millones de números primos en el producto.
Hay una advertencia. Puede usar el mismo enfoque para diferentes funciones de Dirichlet-L L(etc., X), no solo para X = X4. pero hay uno X el método no se aplica: cuando es constante igual a 1 y por lo tanto no es alternativa. Esto X corresponde a la función zeta clásica de Riemann ζ(etc.). Aunque el método no funciona con el caso más famoso, solo para obtener evidencia oficial de ello. X4 instantáneamente te convertiría en el matemático más famoso de todos los tiempos. Sin embargo, los intentos más recientes de probar GRH evitan el enfoque directo (factorización), sino que se centran en otras expresiones equivalentes o que implican GRH. Ver mi artículo sobre el tema, aquí. para las raices L(etc., X4), para ver aquí.
Código Python con biblioteca MPmath
calculé L(etc., X) y varias funciones relacionadas usando varias fórmulas. El objetivo es probar si el producto de Euler converge al valor correcto como se esperaba cuando 0.5 < σ < 1. El código también está en mi repositorio de GitHub, aquí.
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))
Sobre el Autor
Vincent Granville es un científico de datos pionero y experto en aprendizaje automático, fundador MLTechniques.com y co-fundador Centro de ciencia de datos (adquirido por TechTarget en 2020), ex ejecutivo financiado por VC, autor y titular de la patente. La experiencia corporativa anterior de Vincent incluye Visa, Wells Fargo, eBay, NBC, Microsoft, CNET, InfoSpace. Vincent también es ex postdoctorado en la Universidad de Cambridge y el Instituto Nacional de Ciencias Estadísticas (NISS).
Vicente publicado Revista de teoría de números, Revista de la Real Sociedad Estadística (Serie B) y Transacciones IEEE sobre análisis de patrones e inteligencia artificial. También es autor de Aprendizaje automático intuitivo y IA explicable. aquí. Vive en el estado de Washington y disfruta realizando investigaciones en procesos estocásticos, sistemas dinámicos, matemáticas experimentales y teoría de probabilidad de números.