プランクの放射則(Planck's radiation law)

プランクの放射則(Planck's radiation law)

プランクの放射則(Planck’s radiation law)は、物体の放射スペクトルを記述するための物理学の法則です。

この法則は、黒体放射の強度波長温度にどのように依存するかを示しています。

以下では、プランクの放射則をPythonで計算し、グラフ化する方法を示します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import numpy as np
import matplotlib.pyplot as plt
from scipy.constants import h, c, k

# プランクの放射則を計算する関数
def planck_radiation(wavelength, temperature):
numerator = 2 * h * c**2 / wavelength**5
denominator = np.exp(h * c / (wavelength * k * temperature)) - 1
return numerator / denominator

# 波長の範囲を定義 (単位: メートル)
wavelengths = np.linspace(1e-9, 3e-6, 1000) # 1 nm から 3 μm の範囲

# 温度のリストを定義 (単位: ケルビン)
temperatures = [300, 600, 1200] # 300 K, 600 K, 1200 K の場合を考える

# プランクの放射則を各温度で計算してグラフ化
plt.figure(figsize=(10, 6))
for temp in temperatures:
intensity = planck_radiation(wavelengths, temp)
plt.plot(wavelengths * 1e9, intensity, label=f'T = {temp} K')

plt.xlabel('Wavelength (nm)', fontsize=12)
plt.ylabel('Spectral Intensity (W / m^2 / nm / sr)', fontsize=12)
plt.title('Planck\'s Radiation Law', fontsize=14)
plt.legend()
plt.grid(True)
plt.show()

このPythonコードでは、プランクの放射則を計算するための関数 planck_radiation を定義しました。

この関数は、指定された波長温度に対する放射強度を計算します。

次に、計算した放射強度を異なる温度についてグラフ化します。

wavelengths波長の範囲を定義し、temperatures は考慮する温度のリストです。
planck_radiation 関数を使用して各温度における放射スペクトルを計算し、結果をグラフにプロットしています。

[実行結果]

グラフは波長に対する放射強度を示しており、異なる温度に対する放射スペクトルの変化を視覚化しています。
この例は、プランクの放射則をPythonで計算してグラフ化する基本的な方法を示しています。

ソースコード解説

以下は、ソースコードの説明をします。

インポートとライブラリの準備

1
2
3
import numpy as np
import matplotlib.pyplot as plt
from scipy.constants import h, c, k
  • numpy パッケージは数値計算に使用されます。
  • matplotlib.pyplot パッケージはグラフの作成や可視化に使用されます。
  • scipy.constants からはプランク定数 (h)、光速度 (c)、ボルツマン定数 (k) を使用します。

プランクの放射則の関数定義

1
2
3
4
def planck_radiation(wavelength, temperature):
numerator = 2 * h * c**2 / wavelength**5
denominator = np.exp(h * c / (wavelength * k * temperature)) - 1
return numerator / denominator
  • planck_radiation 関数は、プランクの放射則に基づいて放射強度を計算します。
  • wavelength波長の配列temperature温度です。
  • numerator放射則の分子部分を計算し、denominator分母部分を計算します。
  • 関数は計算結果を返します。

波長の範囲の定義

1
wavelengths = np.linspace(1e-9, 3e-6, 1000)
  • np.linspace を使用して、$1 nm $から$ 3 μm $の範囲を$ 1000 $等分した波長の配列を作成します。

温度のリストの定義

1
temperatures = [300, 600, 1200]
  • グラフ化する各温度のリストを定義します。
    ここでは$ 300 K$、$600 K$、$1200 K $を考慮します。

グラフの作成とプロット

1
2
3
4
5
6
7
8
9
10
11
plt.figure(figsize=(10, 6))
for temp in temperatures:
intensity = planck_radiation(wavelengths, temp)
plt.plot(wavelengths * 1e9, intensity, label=f'T = {temp} K')

plt.xlabel('Wavelength (nm)', fontsize=12)
plt.ylabel('Spectral Intensity (W / m^2 / nm / sr)', fontsize=12)
plt.title('Planck\'s Radiation Law', fontsize=14)
plt.legend()
plt.grid(True)
plt.show()
  • plt.figure で新しい図を作成し、温度ごとにプランクの放射則を計算してプロットします。
  • plot 関数を使用して波長に対する放射強度をプロットします。波長は$ nm $単位で表示されます。
  • 軸ラベルやタイトルを設定し、凡例を表示します。
  • 最後に show 関数でグラフを表示します。

このプログラムは、プランクの放射則に基づいて異なる温度での放射スペクトルを視覚化し、温度が高いほど短い波長での放射強度が増加することを示しています。

結果解説

[実行結果]

プランクの放射則を計算し、グラフ化することで表示される内容を詳しく説明します。

1. 横軸 (Wavelength - 波長):

  • グラフの横軸は波長を表します。
  • 単位はナノメートル ($nm$) で、範囲は$1 nm $から$ 3000 nm$ ($3 μm$) までです。
  • 波長が短いほど青紫色に近く、長いほど赤色に近い光を示します。

2. 縦軸 (Spectral Intensity - スペクトル強度):

  • グラフの縦軸は放射強度を表します。
  • 単位はワット毎平方メートル毎ナノメートル毎立体ラジアン ($W/m^2/nm/sr$) です。
  • 各波長における単位立体ラジアンあたりの放射強度が示されます。

3. 曲線 (Intensity vs. Wavelength - 強度対波長):

  • 各曲線は異なる温度に対する放射スペクトルを示します。
  • 温度が高いほど波長による放射強度のピークが高くなり、波長の変化に対する分布が異なります。
  • 低温 ($300 K$) の場合はピークが波長の長い側にあり、高温 ($1200 K$) の場合はピークが波長の短い側にあります。

4. タイトルと凡例:

  • グラフのタイトルは “Planck’s Radiation Law” で、プランクの放射則を示しています。
  • 各曲線に対する凡例は、対応する温度 ($T$) を示しています。

このグラフは、温度が異なる条件下で物体が放射する光の波長ごとの強度分布を示しています。

温度が上昇すると、光のピークの位置が短い波長側に移動し、放射強度が増加することが観察されます。

これにより、物体の温度光の放射特性にどのように影響を与えるかが可視化されます。