The absorption and emission of energy from objects on Earth and in space is at the heart of remote sensing. One helpful concept in assessing energy absorption and emission is a blackbody - an idealized object that absorbs light at all frequencies. While no object is a perfect blackbody, many objects including our sun and the Earth can be approximated well by the theoretical laws derived for them. On this page, we will look at Planck’s Law, describing the electromagnetic radiation emitted by a blackbody as well as two additional laws derived from Planck’s Law.
To begin, let’s import two Python packages that will allow us to make simple calculations and create figures:
import numpy as np
import matplotlib.pyplot as pltPlanck’s Law¶
At a constant temperature, the emission of energy from a blackbody follows a spectrum that is determined by its temperature. This spectrum is given by Planck’s Law, which describes the spectral density of electromagnetic radiation as
where
is the wavelength (m)
is the temperature (K)
is the speed of light ( m/s)
is the Planck constant ( Js)
is the Boltzmann constant ( J/K)
This distribution can be visualized as across the UV, visible, and infrared spectrum for different temperatures as follows:
# make a Planck's law function
def plancks_law(lamb,T):
c = 2.9979e8 # speed of light (m/s)
h = 6.626e-34 # Planck constant (J s)
kB = 1.380e-23 # Boltzmann constant (J/K)
Fp = (2*h*c**2/lamb**5)*(1/(np.exp(h*c/(lamb*kB*T))-1))
return(Fp)
# compute Planck's law for a given temperature
lamb = np.arange(100,3000)*1e-9 # wavelengths from 100–3000 nm converted to meters
Fp_hot = plancks_law(lamb, T=5525)
Fp_cold = plancks_law(lamb, T=3500)
# make a plot
fig = plt.figure(figsize=(8,4))
plt.xlabel('Wavelength (nm)')
plt.ylabel('Spectral radiance (W/m$^2$/nm)')
y_min = -0.1*np.max(Fp_hot*1e-9)
y_max = 1.1*np.max(Fp_hot*1e-9)
plt.plot(400*np.ones((50,)), np.linspace(y_min,y_max), 'k--', linewidth=1)
plt.plot(700*np.ones((50,)), np.linspace(y_min,y_max), 'k--', linewidth=1)
plt.text(550,0.5*y_min, 'Visible',ha='center')
plt.text(390,0.5*y_min, '$\leftarrow$UV',ha='right')
plt.text(710,0.5*y_min, 'Infrared$\\rightarrow$')
plt.grid(linestyle='--', linewidth=0.5, alpha=0.5)
plt.plot(lamb*1e9, Fp_cold*1e-9, label='T = 3500 K')
plt.plot(lamb*1e9, Fp_hot*1e-9, label='T = 5525 K')
plt.title('Blackbody Radiance at Different Temperatures')
plt.gca().set_ylim([y_min, y_max])
plt.gca().set_xlim([np.min(lamb*1e9), np.max(lamb*1e9)])
plt.legend()
plt.show()
In the above plot, we can make two key observations. First, the hotter an object, the more energy is being emitted. This is observed by the magnitude of the spectral radiance at each wavelength, measured on the -axis. Second, hotter objects emit their peak energy at lower wavelengths than colder objects. For the example given above, the object at K has a peak emission in the visible part of the electromagnetic spectrum while the cold object reaches a peak in the infrared part of the spectrum. Both of these observations, discussed below, can be quantified from Planck’s Law.
Stefan-Boltzmann Law¶
Another facet of a blackbody is that it emits energy equally in all directions. Planck’s Law describes the spectral radiance of a blackbody, meaning the amount of energy emitted at each individual wavelength. By integrating Planck’s Law across all wavelengths, we can obtain the total emitted energy flux per unit area, described by the Stefan–Boltzmann Law, which takes a fairly simple form:
where W m K. This law tells us that the energy emitted by a blackbody increases as temperature increases.
We can visualize this energy flux per unit area in a plot, similar to that above:
# make a quick computation
sigma = 5.67e-8
T = np.arange(250,6000)
F = sigma*T**4
# make a plot
from matplotlib.ticker import ScalarFormatter
plt.figure(figsize=(8,4))
plt.grid(linestyle='--', linewidth=0.5, alpha=0.5)
plt.plot(T,F, 'k-')
plt.plot(3500, sigma*3500**4, 'ko', markersize=9)
plt.plot(5525, sigma*5525**4, 'ko', markersize=9)
plt.plot(3500, sigma*3500**4, 'o', label='T = 3500 K')
plt.plot(5525, sigma*5525**4, 'o', label='T = 5525 K')
plt.xlabel('Temperature (K)')
plt.ylabel('Energy Flux per Unit Area (W/m$^2$)')
plt.gca().set_xlim([np.min(T), np.max(T)])
plt.title('Energy Flux per Unit Area as a Function of Temperature')
plt.legend()
plt.gca().yaxis.set_major_formatter(ScalarFormatter(useMathText=True))
plt.show()
As we can see from Wien’s Law, the object with a temperature of 5525 K plotted above emits about 5 times more energy than the object at 3500 K. This can be seen visually by comparing the areas under the curve in the plot demonstrating Planck’s Law above.
Next, we compare the wavelengths emitted by these objects.
Wien’s Law¶
As we can see in the curves of spectral radiance in the plot for Planck’s function above, objects of different temperatures reach peak radiance at different parts of the electromagnetic spectrum. A function for the wavelength at which an object of given temperature reaches peak radiance can be found by finding the maximum of Planck’s Law. From calculus, this can be accomplished by taking a derivative of Planck’s Law relative to wavelength and finding where the derivative is 0. Again, the derivation is quite involved and is omitted here, but it leads to a relatively simple relationship, known as Wien’s Law:
where mK. From this relationship, we can see that the peak wavelength of light decreases as temperature increases. Similar to the plots above, we can visualize this relationship across a range of different temperatures:
b = 2.898e-3
T = np.arange(250,6000)
lamb_peak = b/T
# make a plot
plt.figure(figsize=(8,4))
plt.plot(T, 400*np.ones_like(T), 'k--', linewidth=1)
plt.plot(T, 700*np.ones_like(T), 'k--', linewidth=1)
plt.text(np.min(T)+50, 800, 'Visible Range')
plt.grid(linestyle='--', linewidth=0.5, alpha=0.5)
plt.plot(T,lamb_peak*1e9, 'k-')
plt.xlabel('Temperature (K)')
plt.ylabel('Peak Wavelength (nm)')
plt.gca().set_xlim([np.min(T), np.max(T)])
plt.title('Peak Radiance Wavelength as a Function of Temperature')
plt.show()
🤔 Check Your Understanding¶
To test your understanding of the above concepts, consider the following calculations:
What is the peak wavelength emitted by the Earth (T = 288 K)? Where in the EM spectrum is this wavelength?
What is the peak wavelength emitted by the Sun (T = 5525 K)? Where in the EM spectrum is this wavelength? What color is the sun (i.e. what is the color corresponding to the peak wavelength)?