La loi de Planck décrit la distribution spectrale de l'énergie du rayonnement électromagnétique émis par un corps noir en équilibre thermique. Calculer et tracer la loi de Planck peut être fait en utilisant différents méthodes et bibliothèques en python.
Obtenir les constantes physiques fondamentales
Pour calculer la luminance émise à partir de la température en utilisant le principe de Planck, nous devons incorporer des constantes physiques fondamentales telles que la vitesse de la lumière, la constante de Boltzmann et la constante de Planck. Pour accéder facilement aux constantes physiques dans votre code Python, une excellente solution est d'utiliser Scipy et sa fonction d'importation de constantes.
from scipy import constants
c = constants.speed_of_light
h = constants.h
k = constants.k
Créer une fonction de Planck
Maintenant, créons une fonction Planck en python qui prendra à la fois la longueur d'onde et la température en tant qu'entrées et renverra la luminance :
k1 = 2.0*h*c**2
k2 = h*c/k
def planck_function(wl, T, k1, k2):
radiance = k1 / ( (wl**5) * (np.exp(k2/(wl*T)) - 1.0) )
return radiance
k1 et k2 sont des constantes qui restent inchangées, il n'est donc pas nécessaire de les recalculer à chaque exécution de la fonction.
Tracer la fonction de Planck
La dernière tâche consiste à utiliser Matplotlib pour représenter visuellement la fonction de Planck sur une plage de températures et de longueurs d'onde.
import matplotlib.pyplot as plt
import numpy as np
wls = np.linspace(1e-9, 3e-6, 1000)
temps = [3000,4000,5000,6000]
for temp in temps:
plt.plot(wls, planck_function(wls, temp, k1, k2))
plt.grid('..')
plt.title("How to calculate and plot Planck's law with python ?")
plt.savefig('plank_law_01.png', dpi=100, facecolor='white')
plt.show()
donne
Code agrégé
from scipy import constants
import matplotlib.pyplot as plt
import numpy as np
c = constants.speed_of_light
h = constants.h
k = constants.k
k1 = 2.0*h*c**2
k2 = h*c/k
def planck_function(wl, T, k1, k2):
radiance = k1 / ( (wl**5) * (np.exp(k2/(wl*T)) - 1.0) )
return radiance
wls = np.linspace(1e-9, 3e-6, 1000)
temps = [3000,4000,5000,6000]
for temp in temps:
plt.plot(wls, planck_function(wls, temp, k1, k2))
plt.grid('..')
plt.title("How to calculate and plot Planck's law with python ?")
plt.savefig('plank_law_01.png', dpi=100, facecolor='white')
plt.show()
Références
Liens | Site |
---|---|
constants | docs.scipy.org |
Planck's law | en.wikipedia.org |