distribution_function.py の技術ドキュメント

プログラムの動作

distribution_function.py は、物理学における主要な統計分布関数であるマクスウェル-ボルツマン分布 (Maxwell-Boltzmann)、フェルミ-ディラック分布 (Fermi-Dirac)、およびボーズ-アインシュタイン分布 (Bose-Einstein) を計算し、プロットするPythonプログラムです。

このプログラムの主な機能は以下の通りです。

  • 分布関数の計算: それぞれの分布関数を、正規化されたエネルギー差 \(E' = (E - \mu) / (k_B T)\) の関数として計算します。

  • グラフの生成: matplotlib ライブラリを使用して、計算された3つの分布関数を1つのグラフ上に重ねてプロットします。

  • 画像の保存: 生成されたグラフは distribution_function.png という名前のPNG画像ファイルとして保存されます。

  • 対話的表示: グラフは実行時にGUIウィンドウとして表示され、ユーザーがEnterキーを押すまでプログラムは待機状態となり、グラフの確認が可能です。

このプログラムは、異なるタイプの粒子(古典粒子、フェルミ粒子、ボーズ粒子)がエネルギー準位をどのように占有するかを視覚的に比較し、理解を深めることを目的としています。

原理

このプログラムでは、統計物理学における3つの主要な分布関数を扱います。これらの関数は、特定のエネルギー状態 \(E\) が粒子によって占有される確率または平均粒子数を示します。プロットの横軸は、化学ポテンシャル \(\mu\) からのエネルギー差を熱エネルギー \(k_B T\) で割った正規化された無次元量 \(E' = (E - \mu) / (k_B T)\) です。

1. マクスウェル-ボルツマン分布 (Maxwell-Boltzmann Distribution)

マクスウェル-ボルツマン分布は、古典的な理想気体中の粒子(互いに識別可能で、パウリの排他律に従わない粒子)のエネルギー分布を記述します。量子効果が無視できる高温・低密度の極限で適用されます。

\[f_{MB}(E') = e^{-E'}\]

プログラムでは E_MB\(E'\) に対応します。

2. フェルミ-ディラック分布 (Fermi-Dirac Distribution)

フェルミ-ディラック分布は、フェルミ粒子(電子、陽子、中性子など、スピンが半整数倍の粒子)のエネルギー分布を記述します。フェルミ粒子はパウリの排他律に従い、1つの量子状態には最大1つの粒子しか存在できません。

\[f_{FD}(E') = \frac{1}{e^{E'} + 1}\]

プログラムでは E_FD\(E'\) に対応します。\(E' = 0\) (すなわち \(E = \mu\)) のとき、占有確率は \(1/2\) となります。

3. ボーズ-アインシュタイン分布 (Bose-Einstein Distribution)

ボーズ-アインシュタイン分布は、ボーズ粒子(光子、フォノン、ヘリウム4原子など、スピンが整数倍の粒子)のエネルギー分布を記述します。ボーズ粒子はパウリの排他律に従わず、複数の粒子が同じ量子状態を占めることができます。

\[f_{BE}(E') = \frac{1}{e^{E'} - 1}\]

プログラムでは E_BE\(E'\) に対応します。この分布は \(E' > 0\) (すなわち \(E > \mu\)) の場合にのみ物理的な意味を持ちます。\(E' \to 0^+\) に近づくと、分布関数は無限大に発散し、ボーズ-アインシュタイン凝縮のような現象を示唆します。

コード中に定義されている定数 e (電気素量) と kB (ボルツマン定数) は、プロットの軸が既に正規化されているため、このプログラムのプロット計算には直接使用されていませんが、物理的な背景を示すためのものです。

必要な非標準ライブラリとインストール方法

このプログラムは、以下の非標準ライブラリに依存しています。

  • numpy: 数値計算、特に配列操作や数学関数のために使用されます。

  • matplotlib: グラフの描画とプロットのために使用されます。

これらのライブラリは pip コマンドを使用してインストールできます。

pip install numpy matplotlib

必要な入力ファイル

distribution_function.py は、実行に際して外部からの入力ファイルを必要としません。全てのデータはプログラム内部で計算されます。

生成される出力ファイル

プログラムが正常に実行されると、以下の画像ファイルがプログラムと同じディレクトリに生成されます。

  • distribution_function.png

    • 内容: マクスウェル-ボルツマン分布、フェルミ-ディラック分布、およびボーズ-アインシュタイン分布の3つの関数が重ねてプロットされた画像ファイルです。

    • 横軸: $(E - \mu) / k_B / T$ (正規化されたエネルギー差)

    • 縦軸: Distribution (分布関数の値)

    • 各分布は異なる色(黒、赤、青)と凡例で識別されます。また、\(Y=1.0\)\(X=0.0\) に点線の補助線が表示されます。

コマンドラインでの使用例 (Usage)

このプログラムは、引数なしで直接Pythonインタプリタによって実行されます。

python distribution_function.py

コマンドラインでの具体的な使用例

  1. プログラムの実行 ターミナルまたはコマンドプロンプトを開き、distribution_function.py ファイルが保存されているディレクトリに移動して、以下のコマンドを実行します。

    python distribution_function.py
    
  2. 実行結果の説明

    • 上記のコマンドを実行すると、まず matplotlib によって生成されたグラフがGUIウィンドウに表示されます。このウィンドウには、3種類の分布関数がプロットされており、それぞれの曲線が色分けされ、凡例で識別できます。

    • 同時に、コマンドを実行したターミナルには、以下のメッセージが表示されます。

      Press ENTER to terminate>>
      
    • プログラムはユーザーがEnterキーを押すまで終了せず、表示されたグラフを自由に確認できます。グラフウィンドウを閉じただけではプログラムは終了せず、ターミナルでEnterキーを押す必要があります。

    • また、プログラムが正常に実行されると、distribution_function.png という名前の画像ファイルが、スクリプトが実行されたディレクトリに保存されます。このファイルは、表示されたグラフと同一の内容を持ちます。