2020/2021年度 Q3 統計力学(C) 講義資料(神谷担当分)
pythonプログラム / Excelファイル
- Install python
- randomtrade.py
(プログラムコード)
ランダムに保有金を交換するシミュレーション。総額が一定なので、保有金額はBoltzmann分布になる
(正準統計に対応)。
使い方: python randomtrade.py で使い方を表示。
Usage: python randomtrade.py npersons value(average) vtrade n(maxiteration) n(plotinterval) n(distribution func)
使用例: python randomtrade.py 200 50 1 10000 100 21
200人が、最初に50ドルずつもっていて、1ドルずつ交換を10000回行う。
100サイクルごとにグラフを更新。
分布関数の横軸は、value(average)の10倍の範囲を21分割する。
- randomdistribution.py
(プログラムコード)
ランダムに保有金を発生させるシミュレーション。保有金額の分布は一定になる。
使い方: python randomdistribution.py で使い方を表示。
Usage: python randomdistribution.py npersons value(average) n(maxiteration) n(plotinterval) n(distribution func)
使用例: python randomtrade.py 200 50 10000 100 21
200人にランダムに平均50ドルを分配する過程を10000回行う。
100サイクルごとにグラフを更新。
分布関数の横軸は、value(average)の10倍の範囲を21分割する。
- debye_function.py (プログラムコード)
Debye温度と温度範囲を与えて、Debye関数のグラフをプロットする。
使い方: python debye_function.py
で使い方を表示。
Usage: python debye_function.py Debye_T
Tmin Tmax Tstep
使用例: python debye_funciton.py 300 0
500 10
Debye温度 300Kで、温度範囲 0~500K、10K毎にDebye関数を計算してプロットする。
- radiation_thermometer.py (プログラムコード)
放射温度計において、最強放射光波長 λm
と温度 T の関係の近似式の精度を検証する。
精確な T を求めるため、python の scipyモジュールのNewton法関数
optimize.newton
を用い、近似式から得られた値を初期値として用いている。
使用法: python radiation_thermometer.py
- blackbody_radiation.py (太陽光スペクトルExcelファイル
solar.xlsx
) (プログラムコード)
太陽光スペクトルとPlanckの公式を比較する。
Usage: python blackbody_radiation.py T
使用例: python
blackbody_radiation.py 6000
6000Kの黒体輻射スペクトルと太陽光スペクトルを比較する。
- n-d(e)-fe(e).xlsx
自由粒子モデルの状態密度関数 D(E) と
Fermi-Dirac分布関数 f(E) から電子数 N(EF)
を計算する。
- N-integration-metal.py (プログラムコード)
金属の電子密度を、状態密度関数 N(E) と
Fermi-Dirac分布関数 f(E)の積 N(E)f(E)
の数値積分によって求める時間を比較する。
数値積分関数として、integrate.quad()とintegrate.romberg()を比較している。
Usage: python N-integration-metal.py T EF
使用例: python
N-integration-metal.py
300 5.0
300K、EF=5.0eVの場合に、integrate.quad関数で相対精度
10-8
を指定して300回積分したときの計算時間を比較する。
積分区間 (1): E = 0 ~ EF + 6kBT
積分区間 (2): E = 0 ~ EF - 6kBT
積分区間 (3): E = EF - 6kBT
~ EF + 6kBT
- ef-t-metal.py (プログラムコード)
金属のフェルミエネルギーの温度依存性を数値積分とNewton法を使って求める。
初期値として0KのEFから始め、温度を上げながら、前回温度のEF(T)を次の初期値として使うことで、
Newton法でも安定して計算できる。
使用法: python ef-t-metal.py
- EF-T-semiconductor.py (プログラムコード)
半導体のフェルミエネルギー、自由電子濃度、自由正孔濃度、イオン化アクセプター濃度、イオン化ドナー濃度の
温度依存性を二分法を使って求める。
Newton法ではEFの初期値がかなり真値に近くないと発散するので、
価電子帯上端と伝導帯下端エネルギーを初期として二分法を使う。
使用法: python EF-T-semiconductor.py EA NA ED ND Ec Nv Nc
使用例: python EF-T-semiconductor.py 0.05 1.0e15 0.95 1.0e16 1.0 1.2e19 2.1e18
Ec = 1.0 eV (= バンドギャップ)、EA
= 0.05 eV, NA = 1015 cm-3, ED
= 0.95 eV, ND = 1016 cm-3
Nc = 1.2x1019
cm-3, Nv = 2.1x1018 cm-3
(バンドギャップを1.12 eVとすれば、ほぼSiの物性値)
-
bose_condensation.py
(プログラムコード)
極低温の4HeのBose凝縮における化学ポテンシャルを二分法を使って求める。
使用法: python bose_condensation.py [Fs|mu] Tmin Tmax Tstep
alphamin alphamax
使用例1: python bose_condensation.py Fs 3 4.5 0.2 0 0.5
0.002
3.0~4.5 Kの範囲で0.2K毎に、Fs(σ, α)をα = -μ/kB/T
= 0~0.5, 0.02ステップで計算しプロット
使用例2: python bose_condensation.py mu 2.5 4.5 0.01
2.5~4.5 Kの範囲で0.01K毎に µ, N’, n0
などを計算してプロット。近似式と比較。