ふくふくHukuhuku Inc.
EP.10STEM対象: 高2以上 14分公開: 2026-05-10

量子力学の波動関数を可視化する

高校物理の「量子論入門」を、Pythonで波動関数として可視化。無限井戸ポテンシャルの定常状態をシュレーディンガー方程式から数値的に解いて、エネルギー準位がn²に比例することを実際に確かめる。

#中高生#量子力学#波動関数#シミュレーション
CO📔 Google Colab で開く(上から順にセルを実行)
シェア

「電子は粒子であり波である」── 高校物理で出てくるこのフレーズ、実際にどう波として表現されるのか?教科書の絵では分からない感覚を、Python で波動関数を計算して動かして確かめるのが今回のテーマです。

今回のゴール

「無限井戸ポテンシャル」 という最も簡単な系で シュレーディンガー方程式を数値的に解いて 波動関数とエネルギー準位を出す。「エネルギーが飛び飛びになる」「n が大きいほど波が細かい」という量子の特徴が、自分のグラフで見えるようになります。

Step 1: 設定 — 「箱の中の電子」

幅 L の 1 次元の箱。箱の中ではポテンシャルが 0外では無限大。電子は外に出られないので、波動関数は箱の両端でゼロになる、という境界条件のもとで解きます。

解析的には ψ_n(x) = √(2/L) · sin(nπx/L)、E_n = n²ℏ²π² / (2mL²) という綺麗な式が出る系です。今回は 数値的に同じ答えが出ることを確かめます。

Step 2: 微分を行列で表す(中心差分)

波動関数 ψ(x) を N 個の点に離散化して、二次微分を 行列で表現します。

Step 2: 二次微分行列を作る
Python
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 行で解けます。

Step 3: 固有値・固有関数を取得
Python
# 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: 波動関数と確率密度をプロット

Step 4: 4 つの量子状態を描く
Python
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()
無限井戸ポテンシャル中の波動関数 ψ_1〜ψ_4 と確率密度 |ψ|² の可視化
n=1, 2, 3, 4 の波動関数。n が大きいほど波の節が増え、エネルギー準位は n² に比例して飛び飛びになる

見えてくること — 量子の3つの特徴

  1. 1エネルギーが飛び飛び: E_1 : E_2 : E_3 : E_4 = 1 : 4 : 9 : 16 と n² で増える。古典力学では連続な値になるはずがそうならない。これが「量子化
  2. 2確率密度に節(ゼロの点): n=2 だと真ん中で確率がゼロ。「電子は箱の真ん中には絶対いない」状態が存在する
  3. 3境界でゼロ: 波動関数が必ず両端でゼロ。波の振動が箱の幅にぴったり収まる必要がある

発展させてみよう

  • ポテンシャル V(x) を変える: 調和振動子 V = ½kx² → 量子振動子のエネルギー間隔が等間隔(光子のエネルギー量子化の元)
  • 水素原子の動径方向: V(r) = -e²/(4πε₀r) で電子の軌道(1s, 2s, 2p ...)が出る
  • 時間発展: 時間依存シュレーディンガーを解けば「波束が箱の中で跳ねる」アニメーションが作れる(次回触れる予定)
  • トンネル効果: ポテンシャル壁の中を波動関数が貫通する確率を計算。半導体の動作原理

なぜこれが学べるのか

  • 数学: 微分の離散化、行列の固有値問題、線形代数が「物理現象を解く道具」になる体験
  • 物理: 古典では理解できない量子の3特徴(量子化・節・境界条件)を 自分のグラフで 確認できる
  • プログラミング: numpy の行列演算、固有値分解、matplotlib での科学グラフ。研究で使う基本セット

次の話

EP.11 では化学反応シミュレーション。分子をランダムに動かして衝突させ、アレニウスの式が「実験的に出てくる」過程を体験します。

シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp