[¯|¯] I primi otto numeri primi mediante gli zeri della funzione zeta di Riemann

Aprile 30th, 2017 | by Marcello Colozzo |

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

Per scrivere un programma con Mathematica che sia in grado di riprodurre le discontinuità di prima specie della distribuzione π0(x), utilizziamo innanzitutto un'approssimazione del termine G(x) proposta da Riesel-Göhl.

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

dopodiché definiamo la "componte continua" della π0(x)
distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

dove R(x) è l'approssimazione di Riemann espressa attraverso la serie di Gram troncata a un ordine N (un valore tipico è N=100)
distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

In figura riportiamo i grafici delle restrizioni delle funzioni π0(x) e R0(x) all'intervallo [12,100].

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

Riprendiamo ora il termine correttivo H(x) iniziando la somma da n=1 giacchè Mathematica enumera con questa modalità gli zeri della zeta di Riemann che sono built-in, onde definiamo dapprima la seguente funzione che restituisce l'n-esimo zero:
distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann
H(x) si presenta nella forma:
distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

che è mostruosamente complicata pur troncando le serie alle somme parziali
distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

I parametri liberi della routine sono (N,N0). Per quanto detto, l'intero naturale non nullo N è il numero di zeri della zeta, mentre N0 è già stato esaminato nei numeri precedenti dove avevamo posto N0=154, mentre [SW] utilizza per l'altro parametro il valore N=50 . In parole povere dobbiamo calcolare il contributo proveniente dai primi 50 zeri non banali della zeta di Riemann.







L'esecuzione della sommatoria per il calcolo di Tn(x) ha un elevato costo computazionale a causa delle funzioni non elementarmente esprimibili.

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

per cui applichiamo il procedimento elaborato in questo handbook. Quindi trasformiamo i vari termini in vettori riga e vettori colonna, dopodiché eseguiamo un prodotto righe per colonne (prodotto scalare). Scriviamo:
distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

dove C è il vettore riga dei coefficienti di Möbius:

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

mentre
distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

definisce il vettore colonna. Calcoliamo dapprima la lista dei coefficienti di Möbius:

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann
Utilizzando l'istruzione Select ridefiniamo gli indici dei coefficienti in modo da scartare quelli nulli (aumenterebbero solo il carico computazionale):
distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann
Di seguito la lista dei coefficienti di Möbius non nulli:
distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann
Il vettore colonna Ψn è generato dalla riga di codice:

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann
Quindi
distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann
A questo punto, sulla falsariga dell'approccio citato in precedenza, eseguiamo una decomposizione dell'intervallo X0=[2,b] con b>2 espresso come parametro libero, assegnando b+550 punti:

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

che compongono il seguente sottoinsieme di X0
distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann
I valori assunti da Tn in X'0 genera la lista di b+551 elementi:
distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

Dobbiamo adesso comunicare a Mathematica come calcolare questa lista. La decomposizione dell'intervallo X0 si ottiene con l'istruzione Range:
distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann
Dal momento che in Mathematica le funzioni definite dall'utente hanno l'attributo Listable (cioè agiscono sulle liste), definiamo una funzione dell'indice n, ove quest'ultimo individua lo zero della zeta di Riemann:
distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

Per un assegnato b>2 tale istruzione restituisce la lista {Tn(xk)}. L'argomento di ListLinePlot è l'insieme delle coppie ordinate (xk,Tn(x)) giacché tale istruzione esegue un tracciamento per punti per poi unirli con una linea continua. Dobbiamo allora trasformare la lista generata da Tlist in una lista di coppie ordinate. Per Mathematica una lista altro non è che un vettore (i.e. matrice riga), per cui definiamo:

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann
Cioè la matrice 2×(b+551):

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

Passando alla matrice trasposta:
distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

si ottiene la giusta sequenza di coppie ordinate. Nel notebook di Mathematica scriviamo:

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann
Per n=1 otteniamo il grafico riportato nella figura seguente:

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann


Aumentando progressivamente n, otteniamo i grafici:

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

Tali funzioni hanno in comune l'andamento oscillatorio a causa della presenza di cos(a*ln(x)), dove a>0 è una costante (cfr. post precedenti) nel proprio sviluppo in serie. Si noti l'ampiezza progressivamente decrescente quando si passa da Tnx a Tn'>n(x). Questo comportamento conferma l'analisi fatta in un numero precedente, e cioè che il contributo dominante proviene dai primi zeri della funzione zeta.
Per poter sommare HN(x) (nel procedimento appena visto) a R0(x), dobbiamo dapprima trasformare quest'ultima funzione in una lista in modo da ricostruire in software l'espressione:

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

Sul notebook di Mathematica battiamo il seguente codice:

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann
ove la seconda riga di codice restituisce la funzione built-in PrimePi applicata all'insieme X0'. Rammentiamo che PrimePi[x] ci dice quanti primi ci sono tra 0 e x. La funzione HN(x) è definita dall'istruzione:
distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann
Qui l'intero naturale p svolge il ruolo di N o meglio, è un parametro libero che ci permette di aggiungere progressivamente i vari zeri. Ad esempio, per p=1 otteniamo il grafico di fig. in cui è b=20. Tale valore di b implica che stiamo considerando i primi 8 numeri primi: 2,3,5,7,11,13,17,19.

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

Confrontando lo stesso valore di b, plottiamo R2(x)=R0(x)+T1(x)+T2(x), da cui vediamo la comparsa di oscillazioni come mostrato in fig.
distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

Nelle rimanenti figure i grafici sono stati ottenuti aggiungendo progressivamente i vari termini correttivi (la correzione contenete il contributo del 50-esimo zero è riportata al top di questa pagina).

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann

distribuzione dei numeri primi,congettura di Riemann,funzione zeta di Riemann



Sostienici

Puoi contribuire all’uscita di nuovi articoli ed e-books gratuiti che il nostro staff potrà mettere a disposizione per te e migliaia di altri lettori.



No TweetBacks yet. (Be the first to Tweet this post)

Tags: , ,

Articoli correlati

Commenta l'esercizio