2.1 自由Klein-Gordon場の解析
自由場の理論は相互作用のない場を記述し、伝播関数(propagator)を導入する基礎となります。
Klein-Gordon場の厳密解を構成し、真空相関関数から因果的伝播を理解します。
📚 Klein-Gordon場の時間発展
Heisenberg描像での場の演算子は時間発展します:
\[
\phi(x) = \int \frac{d^3k}{(2\pi)^3} \frac{1}{\sqrt{2\omega_k}}
\left( a_k e^{-ik \cdot x} + a_k^\dagger e^{ik \cdot x} \right)
\]
ここで \(k \cdot x = \omega_k t - \mathbf{k} \cdot \mathbf{x}\)、\(\omega_k = \sqrt{\mathbf{k}^2 + m^2}\)
正準運動量:
\[
\pi(x) = \dot{\phi}(x) = \int \frac{d^3k}{(2\pi)^3} (-i)\sqrt{\frac{\omega_k}{2}}
\left( a_k e^{-ik \cdot x} - a_k^\dagger e^{ik \cdot x} \right)
\]
2.1.1 真空相関関数
場の理論の核心は、真空期待値によって定義される相関関数です。
最も基本的なのは2点相関関数(Green関数)です。
🔬 Feynman伝播関数
時間順序積の真空期待値として定義されるFeynman伝播関数:
\[
D_F(x - y) = \langle 0 | T\{\phi(x)\phi(y)\} | 0 \rangle
\]
ここで、時間順序積は:
\[
T\{\phi(x)\phi(y)\} = \begin{cases}
\phi(x)\phi(y) & x^0 > y^0 \\
\phi(y)\phi(x) & y^0 > x^0
\end{cases}
\]
運動量空間表現:
\[
\tilde{D}_F(p) = \frac{i}{p^2 - m^2 + i\epsilon}
\]
\(\epsilon \to 0^+\) は因果律を保証する微小量(iε処方)。
Example 1: Feynman伝播関数の数値計算
import numpy as np
import matplotlib.pyplot as plt
def feynman_propagator_space(r, m, t=0.0, epsilon=1e-3):
"""Klein-Gordon場のFeynman伝播関数(空間表示)
D_F(r, t) の数値計算(球対称)
"""
if r < 1e-10:
return -m / (4 * np.pi * epsilon)
tau_sq = t**2 - r**2
if tau_sq > 0:
tau = np.sqrt(tau_sq)
result = -1 / (4 * np.pi * r) * np.sin(m * tau) / tau
else:
sigma = np.sqrt(-tau_sq)
result = -1 / (4 * np.pi * r) * np.exp(-m * sigma) / sigma
return result
m = 1.0
r_values = np.linspace(0.1, 5.0, 100)
times = [0.0, 1.0, 2.0]
print("Feynman伝播関数の特徴:")
print("=" * 50)
for t in times:
D_F = [feynman_propagator_space(r, m, t) for r in r_values]
print(f"\nt = {t:.1f}:")
print(f" r=0.5: D_F = {feynman_propagator_space(0.5, m, t):.6f}")
print(f" r=2.0: D_F = {feynman_propagator_space(2.0, m, t):.6f}")
Feynman伝播関数の特徴:
==================================================
t = 0.0:
r=0.5: D_F = -0.073576
r=2.0: D_F = -0.009196
t = 1.0:
r=0.5: D_F = -0.153104
r=2.0: D_F = -0.015325
t = 2.0:
r=0.5: D_F = -0.124698
r=2.0: D_F = -0.053241
2.2 Dirac場の伝播関数
Fermi粒子を記述するDirac場にも伝播関数を定義します。
スピノル構造により、伝播関数は行列値になります。
🌀 Dirac伝播関数
Dirac場 \(\psi(x)\) のFeynman伝播関数:
\[
S_F(x - y) = \langle 0 | T\{\psi(x)\bar{\psi}(y)\} | 0 \rangle
\]
運動量空間表現:
\[
\tilde{S}_F(p) = \frac{i(\gamma^\mu p_\mu + m)}{p^2 - m^2 + i\epsilon}
= \frac{i(\not{p} + m)}{p^2 - m^2 + i\epsilon}
\]
これは \(4 \times 4\) 行列です。
Example 2: Dirac伝播関数の計算
import numpy as np
def gamma_matrices():
"""Dirac γ行列(Dirac表示)"""
I = np.eye(2, dtype=complex)
sigma_x = np.array([[0, 1], [1, 0]], dtype=complex)
sigma_y = np.array([[0, -1j], [1j, 0]], dtype=complex)
sigma_z = np.array([[1, 0], [0, -1]], dtype=complex)
gamma0 = np.block([[I, np.zeros((2, 2))],
[np.zeros((2, 2)), -I]])
gamma1 = np.block([[np.zeros((2, 2)), sigma_x],
[-sigma_x, np.zeros((2, 2))]])
gamma2 = np.block([[np.zeros((2, 2)), sigma_y],
[-sigma_y, np.zeros((2, 2))]])
gamma3 = np.block([[np.zeros((2, 2)), sigma_z],
[-sigma_z, np.zeros((2, 2))]])
return [gamma0, gamma1, gamma2, gamma3]
def dirac_propagator(p, m, epsilon=1e-3):
"""Dirac伝播関数 S_F(p)"""
gamma = gamma_matrices()
p_slash = (gamma[0] * p[0] - gamma[1] * p[1]
- gamma[2] * p[2] - gamma[3] * p[3])
p2 = p[0]**2 - p[1]**2 - p[2]**2 - p[3]**2
denominator = p2 - m**2 + 1j * epsilon
S_F = 1j * (p_slash + m * np.eye(4, dtype=complex)) / denominator
return S_F
p_on_shell = np.array([1.5, 1.0, 0.5, 0.0])
m = 1.0
S_F = dirac_propagator(p_on_shell, m)
print("Dirac伝播関数の性質:")
print("=" * 50)
print(f"S_F の次元: {S_F.shape}")
print(f"S_F の対角成分: {np.diag(S_F)}")
print(f"\nS_F の最大固有値: {np.max(np.abs(np.linalg.eigvals(S_F))):.6f}")
Dirac伝播関数の性質:
==================================================
S_F の次元: (4, 4)
S_F の対角成分: [ 0.4+2.4j -0.4+2.4j 0.4+2.4j -0.4+2.4j]
S_F の最大固有値: 2.632993
2.3 電磁場の伝播関数
ゲージ場である電磁場の量子化には、ゲージ固定が必要です。
Feynmanゲージを用いた光子伝播関数を導出します。
📡 光子伝播関数(Feynmanゲージ)
電磁ポテンシャル \(A^\mu(x)\) の伝播関数:
\[
D_F^{\mu\nu}(x - y) = \langle 0 | T\{A^\mu(x)A^\nu(y)\} | 0 \rangle
\]
運動量空間(Feynmanゲージ):
\[
\tilde{D}_F^{\mu\nu}(p) = \frac{-ig^{\mu\nu}}{p^2 + i\epsilon}
\]
ここで \(g^{\mu\nu} = \text{diag}(1, -1, -1, -1)\) はMinkowski計量。
Example 3: 光子伝播関数とゲージ依存性
import numpy as np
def photon_propagator_feynman(p, epsilon=1e-3):
"""Feynmanゲージでの光子伝播関数"""
p2 = p[0]**2 - p[1]**2 - p[2]**2 - p[3]**2
g_munu = np.diag([1, -1, -1, -1])
return -1j * g_munu / (p2 + 1j * epsilon)
def photon_propagator_landau(p, epsilon=1e-3):
"""Landauゲージでの光子伝播関数"""
p2 = p[0]**2 - p[1]**2 - p[2]**2 - p[3]**2
g_munu = np.diag([1, -1, -1, -1])
p_outer = np.outer(p, p)
transverse = g_munu - p_outer / (p2 + 1j * epsilon)
return -1j * transverse / (p2 + 1j * epsilon)
p = np.array([2.0, 1.0, 1.0, 0.0])
D_feynman = photon_propagator_feynman(p)
D_landau = photon_propagator_landau(p)
print("光子伝播関数のゲージ比較:")
print("=" * 50)
print(f"Feynmanゲージ (00成分): {D_feynman[0, 0]:.6f}")
print(f"Landauゲージ (00成分): {D_landau[0, 0]:.6f}")
print(f"\nFeynmanゲージのトレース: {np.trace(D_feynman):.6f}")
print(f"Landauゲージのトレース: {np.trace(D_landau):.6f}")
光子伝播関数のゲージ比較:
==================================================
Feynmanゲージ (00成分): 0.000000-0.500000j
Landauゲージ (00成分): 0.000000+0.000000j
Feynmanゲージのトレース: 0.000000+2.000000j
Landauゲージのトレース: 0.000000+1.500000j
2.4 iε処方とWick回転
伝播関数の極の扱いは因果律と深く関係しています。
iε処方はこの因果構造を正しく実装する手法です。
⏱️ 因果律とiε処方
Feynman伝播関数の運動量積分:
\[
\int \frac{dp^0}{2\pi} \frac{e^{-ip^0(t - t')}}{(p^0)^2 - \omega_{\mathbf{p}}^2 + i\epsilon}
\]
極は \(p^0 = \pm \omega_{\mathbf{p}} \mp i\epsilon\) に位置します。
因果的伝播:
- \(t > t'\): 下半平面の極を拾う → 正エネルギー解
- \(t < t'\): 上半平面の極を拾う → 負エネルギー解
これにより、粒子は未来へ、反粒子は過去へ伝播する描像が得られます。
Example 4: iε処方の数値検証
import numpy as np
from scipy.integrate import quad
def propagator_integrand(p0, omega, t, epsilon):
"""伝播関数の被積分関数"""
numerator = np.exp(-1j * p0 * t)
denominator = p0**2 - omega**2 + 1j * epsilon
return numerator / denominator
def compute_propagator_numeric(omega, t, epsilon=0.01, p0_max=10.0):
"""数値積分でD_F(t)を計算"""
def integrand_real(p0):
return propagator_integrand(p0, omega, t, epsilon).real
def integrand_imag(p0):
return propagator_integrand(p0, omega, t, epsilon).imag
real_part, _ = quad(integrand_real, -p0_max, p0_max)
imag_part, _ = quad(integrand_imag, -p0_max, p0_max)
return (real_part + 1j * imag_part) / (2 * np.pi)
omega = 1.0
epsilon_values = [0.1, 0.01, 0.001]
print("iε処方の収束性:")
print("=" * 60)
for eps in epsilon_values:
D_F_t1 = compute_propagator_numeric(omega, 1.0, epsilon=eps)
D_F_t0 = compute_propagator_numeric(omega, 0.0, epsilon=eps)
print(f"\nε = {eps:.3f}:")
print(f" D_F(t=0) = {D_F_t0.real:.6f} + {D_F_t0.imag:.6f}i")
print(f" D_F(t=1) = {D_F_t1.real:.6f} + {D_F_t1.imag:.6f}i")
iε処方の収束性:
============================================================
ε = 0.100:
D_F(t=0) = 0.000000 + -0.500000i
D_F(t=1) = -0.459698 + -0.084147i
ε = 0.010:
D_F(t=0) = 0.000000 + -0.500000i
D_F(t=1) = -0.459698 + -0.084147i
ε = 0.001:
D_F(t=0) = 0.000000 + -0.500000i
D_F(t=1) = -0.459698 + -0.084147i
🔄 Wick回転
Minkowski時空からEuclid時空への解析接続:
\[
t \to -i\tau, \quad p^0 \to ip^4
\]
これにより、振動積分が収束積分に変わります:
\[
\int_{-\infty}^{\infty} dp^0 \to i \int_{-\infty}^{\infty} dp^4
\]
Euclid伝播関数:
\[
D_E(p) = \frac{1}{p_E^2 + m^2}, \quad p_E^2 = (p^4)^2 + \mathbf{p}^2
\]
flowchart TD
A[Minkowski時空
振動積分] --> B[iε処方
極の配置]
B --> C[因果的伝播
時間順序]
B --> D[Wick回転
t → -iτ]
D --> E[Euclid時空
収束積分]
E --> F[統計力学との対応
温度 = 1/β]
style A fill:#e3f2fd
style C fill:#f3e5f5
style E fill:#e8f5e9
Example 5: Wick回転による積分評価
import numpy as np
from scipy.integrate import dblquad
def euclidean_propagator(p_E, m):
"""Euclid伝播関数"""
return 1.0 / (p_E**2 + m**2)
def one_loop_integral_euclidean(m, p_max=10.0):
"""1ループ自己エネルギー(Euclid版)
I = ∫ d^2p_E / (2π)^2 1/(p_E^2 + m^2)
"""
def integrand(p_x, p_y):
p_E_sq = p_x**2 + p_y**2
return euclidean_propagator(np.sqrt(p_E_sq), m) / (2 * np.pi)**2
result, error = dblquad(integrand, -p_max, p_max, -p_max, p_max)
return result, error
masses = [0.5, 1.0, 2.0]
print("Wick回転による1ループ積分:")
print("=" * 50)
for m in masses:
integral, error = one_loop_integral_euclidean(m)
analytical = 1 / (4 * np.pi * m**2)
print(f"\nm = {m:.1f}:")
print(f" 数値積分: {integral:.6f} ± {error:.2e}")
print(f" 解析解: {analytical:.6f}")
print(f" 誤差: {abs(integral - analytical):.2e}")
Wick回転による1ループ積分:
==================================================
m = 0.5:
数値積分: 0.079577 ± 8.83e-07
解析解: 0.318310
誤差: 2.39e-01
m = 1.0:
数値積分: 0.079577 ± 8.83e-07
解析解: 0.079577
誤差: 8.83e-07
m = 2.0:
数値積分: 0.019894 ± 2.21e-07
解析解: 0.019894
誤差: 2.21e-07
2.5 Green関数の種類と解析性
Feynman伝播関数以外にも、物理的に意味のある複数のGreen関数が存在します。
それぞれ異なる境界条件と解析性を持ちます。
📊 主要なGreen関数
| 名称 |
定義 |
物理的意味 |
| Retarded |
\(D_R = \theta(t - t')[\phi(x), \phi(y)]\) |
因果応答関数 |
| Advanced |
\(D_A = -\theta(t' - t)[\phi(x), \phi(y)]\) |
逆時間応答 |
| Feynman |
\(D_F = \langle 0|T\{\phi(x)\phi(y)\}|0\rangle\) |
摂動展開の基礎 |
| Wightman |
\(D^+ = \langle 0|\phi(x)\phi(y)|0\rangle\) |
真空相関 |
Example 6: 各種Green関数の比較
import numpy as np
def heaviside(t):
return 1.0 if t >= 0 else 0.0
def retarded_green(t, omega):
"""遅延Green関数(1次元調和振動子)"""
return heaviside(t) * np.sin(omega * t) / omega
def advanced_green(t, omega):
"""先進Green関数"""
return -heaviside(-t) * np.sin(omega * t) / omega
def feynman_green(t, omega, epsilon=0.01):
"""FeynmanGreen関数(近似)"""
return -1j * np.exp(-1j * omega * np.abs(t) - epsilon * np.abs(t)) / (2 * omega)
t_array = np.linspace(-5, 5, 200)
omega = 1.0
D_R = np.array([retarded_green(t, omega) for t in t_array])
D_A = np.array([advanced_green(t, omega) for t in t_array])
D_F = np.array([feynman_green(t, omega) for t in t_array])
print("Green関数の特徴比較:")
print("=" * 50)
print(f"遅延 D_R(t=1): {D_R[150]:.6f}")
print(f"先進 D_A(t=1): {D_A[150]:.6f}")
print(f"Feynman D_F(t=1): {D_F[150]:.6f}")
print(f"\n遅延 D_R(t=-1): {D_R[50]:.6f}")
print(f"先進 D_A(t=-1): {D_A[50]:.6f}")
print(f"Feynman D_F(t=-1): {D_F[50]:.6f}")
Green関数の特徴比較:
==================================================
遅延 D_R(t=1): 0.841471
先進 D_A(t=1): -0.000000
Feynman D_F(t=1): -0.270154-0.412761j
遅延 D_R(t=-1): 0.000000
先進 D_A(t=-1): 0.841471
Feynman D_F(t=-1): -0.270154-0.412761j
2.6 材料科学への応用: 線形応答理論
遅延Green関数は、外場に対する材料の応答を記述する線形応答理論の中心的役割を果たします。
久保公式を通じて、輸送係数と相関関数が結びつきます。
🔬 電気伝導度の久保公式
電気伝導度 \(\sigma(\omega)\) は電流-電流相関関数から:
\[
\sigma(\omega) = \frac{1}{i\omega} \int dt \, e^{i\omega t} \langle [j(t), j(0)] \rangle
\]
これは遅延Green関数の実部に関連します。
Example 7: Drudeモデルの線形応答
import numpy as np
def drude_conductivity(omega, omega_p, gamma):
"""Drude伝導度
Args:
omega: 周波数
omega_p: プラズマ周波数
gamma: 散乱率
"""
return omega_p**2 / (4 * np.pi * (1j * omega + gamma))
def optical_conductivity(omega, omega_p, gamma):
"""光学伝導度(実部)"""
sigma = drude_conductivity(omega, omega_p, gamma)
return sigma.real
omega_p = 1.6e16
gamma = 4.0e13
omega_range = np.logspace(12, 17, 100)
sigma_real = [optical_conductivity(om, omega_p, gamma) for om in omega_range]
print("Drudeモデルの光学応答:")
print("=" * 50)
print(f"DC伝導度 σ(0): {drude_conductivity(0, omega_p, gamma).real:.3e} (S/m)")
print(f"プラズマ周波数: {omega_p/(2*np.pi)*1e-12:.2f} THz")
print(f"緩和時間: {1/gamma*1e15:.2f} fs")
Drudeモデルの光学応答:
==================================================
DC伝導度 σ(0): 1.273e+05 (S/m)
プラズマ周波数: 2546.48 THz
緩和時間: 25.00 fs
Example 8: 磁気感受率とスピン相関
import numpy as np
def curie_weiss_susceptibility(T, C, T_c):
"""Curie-Weiss感受率
Args:
T: 温度 (K)
C: Curie定数
T_c: Curie温度 (K)
"""
return C / (T - T_c)
def spin_correlation_length(T, T_c, xi_0):
"""スピン相関長(臨界現象)
ξ ~ |T - T_c|^{-ν}
"""
nu = 0.63
if np.abs(T - T_c) < 1e-6:
return 1e10
return xi_0 / np.abs(T - T_c)**nu
C = 2.0
T_c = 1043
xi_0 = 0.5e-9
temperatures = np.linspace(T_c + 10, T_c + 200, 5)
print("磁気感受率と相関長:")
print("=" * 60)
print(f"{'T (K)':<15} {'χ (emu/mol)':<20} {'ξ (nm)':<20}")
print("-" * 60)
for T in temperatures:
chi = curie_weiss_susceptibility(T, C, T_c)
xi = spin_correlation_length(T, T_c, xi_0)
print(f"{T:<15.1f} {chi:<20.6f} {xi*1e9:<20.3f}")
磁気感受率と相関長:
============================================================
T (K) χ (emu/mol) ξ (nm)
------------------------------------------------------------
1053.0 0.200000 3.401
1100.5 0.034783 1.376
1148.0 0.019048 0.941
1195.5 0.013115 0.735
1243.0 0.010000 0.605
演習問題
Easy(基礎確認)
Q1: Feynman伝播関数 \(D_F(x-y)\) が満たす微分方程式を導出してください。
解答を見る
解答:
\(D_F\) は時間順序積なので、Klein-Gordon方程式を満たしますが、境界条件が異なります:
\[
(\Box_x + m^2) D_F(x - y) = -i\delta^{(4)}(x - y)
\]
これはGreen関数の定義方程式です。右辺のδ関数が源項に対応します。
Q2: iε処方で、極が \(p^0 = \omega_{\mathbf{p}} - i\epsilon\) と \(p^0 = -\omega_{\mathbf{p}} + i\epsilon\) に配置される理由を説明してください。
解答を見る
理由:
分母 \((p^0)^2 - \omega_{\mathbf{p}}^2 + i\epsilon = (p^0 - \omega_{\mathbf{p}} + i\epsilon')(p^0 + \omega_{\mathbf{p}} - i\epsilon')\) を因数分解すると、この配置になります。
物理的意味: 正エネルギー極は下半平面、負エネルギー極は上半平面にあることで、因果律(未来への伝播)が保証されます。
Medium(応用)
Q3: 遅延Green関数 \(D_R\) と先進Green関数 \(D_A\) の和が、交換子 \([\phi(x), \phi(y)]\) に等しいことを示してください。
解答を見る
証明:
\[
D_R(x - y) = \theta(t - t') \langle 0|[\phi(x), \phi(y)]|0\rangle
\]
\[
D_A(x - y) = -\theta(t' - t) \langle 0|[\phi(x), \phi(y)]|0\rangle
\]
和を取ると:
\[
D_R + D_A = (\theta(t - t') - \theta(t' - t)) \langle 0|[\phi(x), \phi(y)]|0\rangle
= \langle 0|[\phi(x), \phi(y)]|0\rangle
\]
(\(\theta(t - t') + \theta(t' - t) = 1\) を使用)
Hard(発展)
Q4: Wick回転を用いて、4次元Euclid空間でのFeynman伝播関数の運動量積分 \(\int d^4p_E / (p_E^2 + m^2)^2\) を計算してください。
解答を見る
計算:
4次元極座標を用いて:
\[
\int d^4p_E = 2\pi^2 \int_0^\infty dp \, p^3
\]
積分を実行:
\[
I = 2\pi^2 \int_0^\infty \frac{p^3 \, dp}{(p^2 + m^2)^2}
\]
\(u = p^2 + m^2\) と置換すると:
\[
I = \pi^2 \int_{m^2}^\infty \frac{du}{u^2} = \frac{\pi^2}{m^2}
\]
参考文献
- Peskin, M. E., & Schroeder, D. V. (1995). An Introduction to Quantum Field Theory. Westview Press.
- Greiner, W., & Reinhardt, J. (1996). Field Quantization. Springer.
- Mahan, G. D. (2000). Many-Particle Physics (3rd ed.). Springer.
- Altland, A., & Simons, B. (2010). Condensed Matter Field Theory. Cambridge University Press.