「電子は粒子であり波である」── 高校物理で出てくるこのフレーズ、実際にどう波として表現されるのか?教科書の絵では分からない感覚を、Python で波動関数を計算して動かして確かめるのが今回のテーマです。
「無限井戸ポテンシャル」 という最も簡単な系で シュレーディンガー方程式を数値的に解いて 波動関数とエネルギー準位を出す。「エネルギーが飛び飛びになる」「n が大きいほど波が細かい」という量子の特徴が、自分のグラフで見えるようになります。
Step 1: 設定 — 「箱の中の電子」
幅 L の 1 次元の箱。箱の中ではポテンシャルが 0、外では無限大。電子は外に出られないので、波動関数は箱の両端でゼロになる、という境界条件のもとで解きます。
解析的には ψ_n(x) = √(2/L) · sin(nπx/L)、E_n = n²ℏ²π² / (2mL²) という綺麗な式が出る系です。今回は 数値的に同じ答えが出ることを確かめます。
Step 2: 微分を行列で表す(中心差分)
波動関数 ψ(x) を N 個の点に離散化して、二次微分を 行列で表現します。
import numpy as np
# 物理定数(自然単位系で簡略化)hbar = 1.0m = 1.0L = 1.0 # 箱の幅N = 500 # 離散化点数dx = L / (N + 1)x = np.linspace(dx, L - dx, N)
# 二次微分の行列(中心差分)# d²ψ/dx² ≈ (ψ_{i-1} - 2ψ_i + ψ_{i+1}) / dx²T = -hbar**2 / (2 * m * dx**2) * ( np.diag(np.ones(N - 1), 1) # 上対角 + np.diag(np.ones(N - 1), -1) # 下対角 + np.diag(-2 * np.ones(N)) # 主対角)# T はハミルトニアン(無限井戸ではポテンシャル項 V=0)Step 3: 固有値問題を解く(=エネルギー準位を出す)
シュレーディンガー方程式 H ψ = E ψ は、ハミルトニアン行列の固有値問題そのもの。numpy で 1 行で解けます。
# T の固有値(エネルギー)と固有ベクトル(波動関数)を求めるenergies, wavefunctions = np.linalg.eigh(T)
# 低エネルギーから 4 つを取り出すprint("数値解のエネルギー(低い順 4 つ):")for n in range(4): print(f" E_{n+1} = {energies[n]:.4f}")
# 解析解との比較: E_n = n²π²/2 (自然単位で)print("\n解析解:")for n in range(1, 5): E_analytic = (n * np.pi)**2 / (2 * m * L**2) * hbar**2 print(f" E_{n} = {E_analytic:.4f}")
# → 数値解と解析解がほぼ一致。E_n が n² に比例していることが見えるStep 4: 波動関数と確率密度をプロット
import matplotlib.pyplot as plt!pip install -q japanize-matplotlibimport japanize_matplotlib # noqa
fig, axes = plt.subplots(4, 2, figsize=(10, 8), sharex=True)
for n in range(4): psi = wavefunctions[:, n] psi /= np.sqrt(np.trapz(psi**2, x)) # 正規化
axes[n, 0].plot(x, psi, color="#5d8aa8") axes[n, 0].axhline(0, color="gray", lw=0.5) axes[n, 0].set_ylabel(f"ψ (n={n+1})")
axes[n, 1].plot(x, psi**2, color="#eb5d32") axes[n, 1].set_ylabel(f"|ψ|² (n={n+1})")
axes[0, 0].set_title("波動関数 ψ_n(x)")axes[0, 1].set_title("確率密度 |ψ_n|²")axes[-1, 0].set_xlabel("x")axes[-1, 1].set_xlabel("x")plt.tight_layout()plt.show()
見えてくること — 量子の3つの特徴
- 1エネルギーが飛び飛び: E_1 : E_2 : E_3 : E_4 = 1 : 4 : 9 : 16 と n² で増える。古典力学では連続な値になるはずがそうならない。これが「量子化」
- 2確率密度に節(ゼロの点): n=2 だと真ん中で確率がゼロ。「電子は箱の真ん中には絶対いない」状態が存在する
- 3境界でゼロ: 波動関数が必ず両端でゼロ。波の振動が箱の幅にぴったり収まる必要がある
発展させてみよう
- ポテンシャル V(x) を変える: 調和振動子 V = ½kx² → 量子振動子のエネルギー間隔が等間隔(光子のエネルギー量子化の元)
- 水素原子の動径方向: V(r) = -e²/(4πε₀r) で電子の軌道(1s, 2s, 2p ...)が出る
- 時間発展: 時間依存シュレーディンガーを解けば「波束が箱の中で跳ねる」アニメーションが作れる(次回触れる予定)
- トンネル効果: ポテンシャル壁の中を波動関数が貫通する確率を計算。半導体の動作原理
なぜこれが学べるのか
- 数学: 微分の離散化、行列の固有値問題、線形代数が「物理現象を解く道具」になる体験
- 物理: 古典では理解できない量子の3特徴(量子化・節・境界条件)を 自分のグラフで 確認できる
- プログラミング: numpy の行列演算、固有値分解、matplotlib での科学グラフ。研究で使う基本セット
次の話
EP.11 では化学反応シミュレーション。分子をランダムに動かして衝突させ、アレニウスの式が「実験的に出てくる」過程を体験します。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。