【第2話】自由粒子のスナップショット【Pythonコピペで量子力学完全攻略マニュアル】

#################################################################
## 自由粒子の固有関数(E = 0.25[eV], 1.0[eV], 4.0[eV])
#################################################################
import numpy as np
import matplotlib.pyplot as plt
#図全体
fig = plt.figure(figsize=(15, 8))
#全体設定
plt.rcParams['font.family'] = 'Times New Roman' #フォント
plt.rcParams['font.size'] = 24 #フォントサイズ
plt.rcParams["mathtext.fontset"] = 'cm' #数式用フォント
#カラーリストの取得
colors = plt.rcParams['axes.prop_cycle'].by_key()['color']
#虚数単位
I = 0.0 + 1.0j

#################################################################
## 物理定数
#################################################################
#プランク定数
h = 6.62607015 * 1.0E-34
hbar = h / (2.0 * np.pi)
#電子の質量
me = 9.1093837015 * 1.0E-31
#電子ボルト
eV = 1.602176634 * 1.0E-19

#################################################################
## 物理系の設定
#################################################################
#電子のエネルギー
E1 = 1.0 * eV
E2 = 0.25 * eV
E3 = 4.0 * eV
#波数
k1 = np.sqrt(2.0 * me * E1 / hbar**2)
k2 = np.sqrt(2.0 * me * E2 / hbar**2)
k3 = np.sqrt(2.0 * me * E3 / hbar**2)
#空間刻み間隔
dx = 1E-9
#描画範囲
x_min = -2.0 * dx
x_max =  2.0 * dx
#描画区間数
NX = 500

#座標点配列の生成
x = np.linspace(x_min, x_max, NX)
#平面波の計算
phi1 = np.exp( I * k1 * x )
phi2 = np.exp( I * k2 * x )
phi3 = np.exp( I * k3 * x )

#グラフの描画(固有関数)
plt.title( u"自由粒子の固有関数(" + r"$ E = 0.25, 1.0, 4.0[{\rm eV}] $" + u")", fontsize=20, fontname="Yu Gothic", fontweight=1000)
plt.xlabel(r"$ x\, [{\rm nm}]$ ", fontsize=30)
plt.ylabel(r"$ {\rm Re}\{\varphi(x)\} $", fontsize=30)

#罫線の描画
plt.grid(which = "major", axis = "x", alpha = 0.8, linestyle = "-", linewidth = 1)
plt.grid(which = "major", axis = "y", alpha = 0.8, linestyle = "-", linewidth = 1)

#描画範囲を設定
plt.xlim([x_min/dx, x_max/dx])
plt.ylim([-1.1, 1.1])

#グラフの描画
plt.plot(x/dx, phi1.real, linestyle='solid', linewidth = 5)
plt.plot(x/dx, phi2.real, linestyle='solid', linewidth = 5)
plt.plot(x/dx, phi3.real, linestyle='solid', linewidth = 5)

#余白の調整
plt.subplots_adjust(left = 0.1, right = 0.98, bottom=0.15, top = 0.95)

#グラフの表示
plt.show()

“【第2話】自由粒子のスナップショット【Pythonコピペで量子力学完全攻略マニュアル】” への2件の返信

  1. こんにちは!
    いつも楽しく拝聴しております。
    シュミ君のようにパイソンを使いこなせるようになりたいと思い、virtual studio Codeをインストールして実際にコピペしてみました!
    1回目のサインカーブの表示には成功したのですが、
    自由電子のスナップショットの所で躓いてしまいました、、カラーリストの取得のところで、バグっているようです。簡単な質問で申し訳ないのですが何かご教示いただけたら幸いです。
    colors = plt.rcParams[‘axes.prop_cycle’].by_key()[‘color’]
    File “/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/__init__.py”, line 805, in __getitem__
    return dict.__getitem__(self, key)
    KeyError: ‘axes.prop_cycle’

    追加で#以降の日本語で書かれているコメントがあると、シンタックスエラーと出ます。コメントを全部消すと上手くいくのですが、、

    1. コメントありがとうございました。
      Pythonのバージョンは2.7ですか?
      低すぎるので最新版にして見てください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です