量子化学の言葉 — 波動関数と演算子
量子化学の言葉 — 波動関数と演算子
粒子の状態を複素関数で、測れる量をエルミート演算子で — 量子化学が使う二つの基本道具を、ガウシアン波束という一例で最後まで辿る。
はじめに
本書は全14章にわたり原子の結合からバンド構造までを扱うが、その全章は同じ二つの道具 — 波動関数と演算子 — で書かれている。この章を終えた読者は、「電子の状態」という言葉が何を意味するか、そして「位置を測る」という行為が数式にどう翻訳されるかをはっきり言えるようになるべきだ。一つの具体的な波動関数 — ガウシアン波束 — を手と Python で触り、正規化・期待値・不確定性を直接確かめる。それがこの章の到達点である。
本論 1 — 波動関数と確率
量子力学は粒子の状態を、複素数値をとる関数 (psi, 波動関数)で表す。古典力学では粒子の状態は位置と運動量の組 だったが、量子力学ではその両方を同時には持たない — 持つのは空間に広がった一枚の複素関数だけだ。
この関数は直接観測されない。観測できるのは確率密度 のみだ。体積要素 内で粒子を見出す確率は
であり、「粒子はどこかには必ず存在する」という事実は次の正規化条件で表される:
自身は観測できないが、位相(phase)が消えるわけではない。二つの波動関数が重なるとき — 二重スリットや分子軌道の重なりのように — 位相が強め合い・打ち消し合いの干渉を決める。一つの状態を「測定」するときだけ位相が見えなくなる、というのが正確な言い方である。
本論 2 — 観測量とエルミート演算子
測定可能な量にはそれぞれ一つのエルミート演算子(Hermitian operator) が対応する。ここでのエルミート性は、ひとまず「固有値が実数になるように作られた線形変換」と受け取ってよい。実固有値こそが実際の測定値そのものに相当するからだ。
- 位置演算子 (単なる掛け算)
- 運動量演算子
- 運動エネルギー
- ポテンシャル (位置の関数による掛け算)
ここで (h-bar)はプランク定数を で割ったもの、 は粒子質量、 はラプラシアンである。
状態 における演算子 の期待値(expectation value) — 同じ状態を無限回用意して測定したときの平均値 — は
で定義される。 は の複素共役だ。この積分は量子化学の計算のほぼ全ての場面で繰り返し現れる — エネルギーを求めるときも、双極子モーメントを求めるときも、結合次数を求めるときも。
本論 3 — ガウシアン波束という具体例
抽象を一度具体に降ろそう。1次元上で次の波動関数を考える:
ここで (sigma)は幅を決める正の定数だ。 は実関数で、原点で最大値をとる。まず正規化を確かめよう:
最後の等式はガウシアン積分 から従う。次に期待値。 は原点に関して対称だから
そして分散は
位置の不確定性 。つまり幅のパラメータ がそのまま位置の不確定性になる。
これは偶然ではない。運動量側で同様の計算をすると となり、両者を掛け合わせると
これこそハイゼンベルクの不確定性原理 の等号を厳密に満たす状態 — ガウシアン波束が「量子力学的に最も狭い」状態である理由だ。本格的な証明は後章に譲るが、この章の一例だけでも、量子化学の二つの道具がどう噛み合うかが一度に見える。
Pythonで確かめる
# ガウシアン波束の正規化・期待値・不確定性を数値で確かめる
import numpy as np
import matplotlib.pyplot as plt
sigma = 1.5
N = 400
x = np.linspace(-10, 10, N)
dx = x[1] - x[0]
# 解析解(正規化定数込み)をそのまま作る
psi = (2 * np.pi * sigma**2)**(-0.25) * np.exp(-x**2 / (4 * sigma**2))
rho = psi**2
# 数値的正規化:台形積分が1になるよう揃える
norm = np.trapz(rho, x)
rho = rho / norm
# 期待値と標準偏差
x_mean = np.trapz(x * rho, x)
x2_mean = np.trapz(x**2 * rho, x)
dx_num = np.sqrt(x2_mean - x_mean**2)
print(f"<x^2> 数値 = {x2_mean:.4f}, 解析 = {sigma**2:.4f}")
print(f"Δx 数値 = {dx_num:.4f}, 解析 = {sigma:.4f}")
# |ψ|^2 と ±Δx の位置
plt.plot(x, rho, label=r"$|\psi(x)|^2$")
plt.axvline(+dx_num, color="k", linestyle="--", label=r"$\pm\Delta x$")
plt.axvline(-dx_num, color="k", linestyle="--")
plt.xlabel("x"); plt.ylabel(r"$|\psi|^2$")
plt.legend(); plt.tight_layout()
plt.show()
出力で数値 が と、数値 が と小数第二位まで一致すれば、正規化・期待値・標準偏差の三つの定義をすべて自分の手で触ったことになる。
次章へ
2章: シュレーディンガー方程式では、この章で道具として置いた演算子たちが、一つの方程式にまとまり「時間と共に がどう変わるか」を決める様子を見る。正規化と期待値の定義を手にした状態で入れば、シュレーディンガー方程式が結局のところ「エネルギー保存を量子化した式」であることを、それほど抵抗なく受け止められるはずだ。