How to calculate and plot Planck's law with python ?

Published: March 30, 2023

Tags: Python; Matplotlib;

DMCA.com Protection Status

Planck's law describes the spectral energy distribution of electromagnetic radiation emitted by a black body in thermal equilibrium. Calculating and plotting Planck's law can be done with python using various methods and libraries.

Get fundamental physical constants

To calculate the radiance emitted from temperature using Planck's principle, we need to incorporate fundamental physical constants such as the speed of light, Boltzmann Constant and Plank Constant. To easily access physical constants in your Python code, a great solution is to use Scipy and its import constants feature.

from scipy import constants

c = constants.speed_of_light
h = constants.h
k = constants.k

Create a Planck function

Now, let's craft a python Planck function which will take in both wavelength and temperature as inputs and return the radiance:

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 and k2 are constants that remain unchanged, so there is no need to compute them each time the function runs.

Plot Planck function

The last task is to utilize Matplotlib for visually representing Planck's function across a range of temperatures and wavelengths.

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()

Ouput

How to calculate and plot Planck's law with python ?
How to calculate and plot Planck's law with python ?

Aggregated code

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()

References

Links Site
constants docs.scipy.org
Planck's law en.wikipedia.org
Image

of