In memoria di Stephen Hawking propongo un modesto esercizio in Python per calcolare il tempo di evaporazione di un buco nero, secondo la radiazione di Hawking.
In questo caso utilizzeremo le librerie scipy e numpy di Python.
Il mio esempio sarà fatto sotto Windows. Anzitutto installiamo quindi le librerie necessarie utilizzando pip, nella PowerShell digitiamo:
1 |
python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose |
Una volta fatto avviamo un nuovo progetto in python e andiamo anzitutto a calcolare la suddetta formula. L’equazione di evaporazione di un buco nero, che si trovasse in una condizione ideale (ovvero nessuna aggiunta di energia, quindi ipoteticamente in un universo completamente vuoto e senza radiazione di fondo) è la seguente:
Per scriverla in Python digitiamo:
1 2 3 4 5 6 |
from scipy import constants M0 = 1.98892 * 10**30 Tev = (5120 * constants.pi * constants.G ** 2 * M0 ** 3 )/( constants.hbar * constants.c ** 4 ) print( Tev ) |
Faccio notare che da scipy importiamo le costanti fisiche e matematiche che possiamo utilizzare secondo la seguente tabella.
M0 è l’ipotetica massa iniziale di un buco nero di massa solare, nello specifico di .
Il risultato dovrebbe essere:
1 |
6.617525584671073e+74 |
Il risultato è in secondi, possiamo convertirlo in miliardi di anni digitando:
1 |
print( Tev / (3600*24*365 * 10**9) ) |
Il risultato è qualcosa come miliardi di anni, molto più dell’attuale vita dell’universo stimata attorno ai 13 miliardi di anni.
Adesso proviamo ad inserire l’equazione in un grafico, dove vogliamo confrontare vari tipi di buco nero in base alla massa ed il tempo di evaporazione.
Per farlo anzitutto convertiamo la nostra precedente equazione in una funzione digitando:
1 2 3 |
def HawkingTev(Mass): Tev = (5120 * constants.pi * constants.G ** 2 * Mass ** 3 )/( constants.hbar * constants.c ** 4 ) return Tev |
Ricordiamoci che il risultato della funzione è in secondi. A questo punto prepariamo i valori del nostro asse x, che saranno le masse di diversi buchi neri. Prendiamo 100 valori tra 0 e 1030.
1 |
X = np.linspace(0, 10**30,100, endpoint=True) |
Sull’asse Y calcoliamo i corrispondenti valori:
1 |
Y = HawkingTev(X) |
Adesso impacchettiamo tutto in un grafico generato con matplotlib.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
from scipy import constants import numpy as np import matplotlib.pyplot as plt def HawkingTev(Mass): Tev = (5120 * constants.pi * constants.G ** 2 * Mass ** 3 )/( constants.hbar * constants.c ** 4 ) return Tev X = np.linspace(0, 10**30,100, endpoint=True) Y = HawkingTev(X) plt.plot(X, Y) plt.title('Tempo evaporazione buco nero') plt.ylabel('s') plt.xlabel('kg') plt.show() |
Il risultato sarà qualcosa di simile a questo:
One thought on “[python] Radiazione di Hawking e tempo che impiega un buco nero ad evaporare”