2.1 Analysis of Free Klein-Gordon Field
Free field theory describes fields without interaction and forms the foundation for introducing propagators. We construct exact solutions of the Klein-Gordon field and understand causal propagation from vacuum correlation functions.
📚 Time Evolution of Klein-Gordon Field
The field operator in the Heisenberg picture evolves in time:
\[ \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) \]
where \(k \cdot x = \omega_k t - \mathbf{k} \cdot \mathbf{x}\), \(\omega_k = \sqrt{\mathbf{k}^2 + m^2}\)
Canonical momentum:
\[ \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 Vacuum Correlation Functions
The heart of field theory lies in correlation functions defined by vacuum expectation values. The most fundamental is the two-point correlation function (Green function).
🔬 Feynman Propagator
The Feynman propagator defined as the vacuum expectation value of the time-ordered product:
\[ D_F(x - y) = \langle 0 | T\{\phi(x)\phi(y)\} | 0 \rangle \]
where the time-ordered product is:
\[ 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} \]
Momentum space representation:
\[ \tilde{D}_F(p) = \frac{i}{p^2 - m^2 + i\epsilon} \]
\(\epsilon \to 0^+\) is an infinitesimal quantity that ensures causality (iε prescription).
import numpy as np
import matplotlib.pyplot as plt
# ===================================
# Spatial Dependence of Feynman Propagator
# ===================================
def feynman_propagator_space(r, m, t=0.0, epsilon=1e-3):
"""Feynman propagator of Klein-Gordon field (position representation)
Numerical calculation of D_F(r, t) (spherically symmetric)
"""
if r < 1e-10:
# Regularization of singularity
return -m / (4 * np.pi * epsilon)
tau_sq = t**2 - r**2
if tau_sq > 0: # Timelike
tau = np.sqrt(tau_sq)
result = -1 / (4 * np.pi * r) * np.sin(m * tau) / tau
else: # Spacelike
sigma = np.sqrt(-tau_sq)
result = -1 / (4 * np.pi * r) * np.exp(-m * sigma) / sigma
return result
# Parameters
m = 1.0 # Mass
r_values = np.linspace(0.1, 5.0, 100)
# Propagator at different times
times = [0.0, 1.0, 2.0]
print("Characteristics of Feynman propagator:")
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}")2.2 Dirac Field Propagator
We also define a propagator for the Dirac field describing Fermi particles. Due to the spinor structure, the propagator becomes matrix-valued.
🌀 Dirac Propagator
The Feynman propagator for the Dirac field \(\psi(x)\):
\[ S_F(x - y) = \langle 0 | T\{\psi(x)\bar{\psi}(y)\} | 0 \rangle \]
Momentum space representation:
\[ \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} \]
This is a \(4 \times 4\) matrix.
import numpy as np
# ===================================
# Dirac Matrices and Dirac Propagator
# ===================================
def gamma_matrices():
"""Dirac γ matrices (Dirac representation)"""
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 propagator S_F(p)"""
gamma = gamma_matrices()
# p/ = γ^μ p_μ
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
# Momentum example
p_on_shell = np.array([1.5, 1.0, 0.5, 0.0]) # (E, px, py, pz)
m = 1.0
S_F = dirac_propagator(p_on_shell, m)
print("Properties of Dirac propagator:")
print("=" * 50)
print(f"Dimension of S_F: {S_F.shape}")
print(f"Diagonal elements of S_F: {np.diag(S_F)}")
print(f"\nMaximum eigenvalue of S_F: {np.max(np.abs(np.linalg.eigvals(S_F))):.6f}")2.3 Electromagnetic Field Propagator
Quantization of the electromagnetic field, which is a gauge field, requires gauge fixing. We derive the photon propagator using Feynman gauge.
📡 Photon Propagator (Feynman Gauge)
Propagator for electromagnetic potential \(A^\mu(x)\):
\[ D_F^{\mu\nu}(x - y) = \langle 0 | T\{A^\mu(x)A^\nu(y)\} | 0 \rangle \]
Momentum space (Feynman gauge):
\[ \tilde{D}_F^{\mu\nu}(p) = \frac{-ig^{\mu\nu}}{p^2 + i\epsilon} \]
where \(g^{\mu\nu} = \text{diag}(1, -1, -1, -1)\) is the Minkowski metric.
import numpy as np
# ===================================
# Photon Propagator in Different Gauges
# ===================================
def photon_propagator_feynman(p, epsilon=1e-3):
"""Photon propagator in Feynman gauge"""
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):
"""Photon propagator in Landau gauge"""
p2 = p[0]**2 - p[1]**2 - p[2]**2 - p[3]**2
g_munu = np.diag([1, -1, -1, -1])
# ξ = 0 (Landau gauge)
p_outer = np.outer(p, p)
transverse = g_munu - p_outer / (p2 + 1j * epsilon)
return -1j * transverse / (p2 + 1j * epsilon)
# Momentum
p = np.array([2.0, 1.0, 1.0, 0.0])
D_feynman = photon_propagator_feynman(p)
D_landau = photon_propagator_landau(p)
print("Gauge comparison of photon propagator:")
print("=" * 50)
print(f"Feynman gauge (00 component): {D_feynman[0, 0]:.6f}")
print(f"Landau gauge (00 component): {D_landau[0, 0]:.6f}")
print(f"\nTrace of Feynman gauge: {np.trace(D_feynman):.6f}")
print(f"Trace of Landau gauge: {np.trace(D_landau):.6f}")2.4 iε Prescription and Wick Rotation
The treatment of poles in propagators is deeply related to causality. The iε prescription is a method to correctly implement this causal structure.
⏱️ Causality and iε Prescription
Momentum integral of the Feynman propagator:
\[ \int \frac{dp^0}{2\pi} \frac{e^{-ip^0(t - t')}}{(p^0)^2 - \omega_{\mathbf{p}}^2 + i\epsilon} \]
The poles are located at \(p^0 = \pm \omega_{\mathbf{p}} \mp i\epsilon\).
Causal propagation:
- \(t > t'\): Pick up lower half-plane pole → positive energy solution
- \(t < t'\): Pick up upper half-plane pole → negative energy solution
This yields the picture where particles propagate to the future and antiparticles to the past.
import numpy as np
from scipy.integrate import quad
# ===================================
# Convergence of Integration with iε Prescription
# ===================================
def propagator_integrand(p0, omega, t, epsilon):
"""Integrand of propagator"""
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):
"""Calculate D_F(t) by numerical integration"""
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)
# Parameters
omega = 1.0
epsilon_values = [0.1, 0.01, 0.001]
print("Convergence of iε prescription:")
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")🔄 Wick Rotation
Analytic continuation from Minkowski spacetime to Euclidean spacetime:
\[ t \to -i\tau, \quad p^0 \to ip^4 \]
This transforms oscillating integrals into convergent ones:
\[ \int_{-\infty}^{\infty} dp^0 \to i \int_{-\infty}^{\infty} dp^4 \]
Euclidean propagator:
\[ D_E(p) = \frac{1}{p_E^2 + m^2}, \quad p_E^2 = (p^4)^2 + \mathbf{p}^2 \]
Oscillating integrals] --> B[iε prescription
Pole placement] B --> C[Causal propagation
Time ordering] B --> D[Wick rotation
t → -iτ] D --> E[Euclidean spacetime
Convergent integrals] E --> F[Correspondence with statistical mechanics
Temperature = 1/β] style A fill:#e3f2fd style C fill:#f3e5f5 style E fill:#e8f5e9
import numpy as np
from scipy.integrate import dblquad
# ===================================
# Loop Integrals via Wick Rotation
# ===================================
def euclidean_propagator(p_E, m):
"""Euclidean propagator"""
return 1.0 / (p_E**2 + m**2)
def one_loop_integral_euclidean(m, p_max=10.0):
"""One-loop self-energy (Euclidean version)
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
# Mass parameters
masses = [0.5, 1.0, 2.0]
print("One-loop integral via Wick rotation:")
print("=" * 50)
for m in masses:
integral, error = one_loop_integral_euclidean(m)
analytical = 1 / (4 * np.pi * m**2) # Analytical solution in 2D
print(f"\nm = {m:.1f}:")
print(f" Numerical integration: {integral:.6f} ± {error:.2e}")
print(f" Analytical solution: {analytical:.6f}")
print(f" Error: {abs(integral - analytical):.2e}")2.5 Types and Analyticity of Green Functions
Besides the Feynman propagator, there exist multiple physically meaningful Green functions. Each has different boundary conditions and analyticity properties.
📊 Major Green Functions
| Name | Definition | Physical Meaning |
|---|---|---|
| Retarded | \(D_R = \theta(t - t')[\phi(x), \phi(y)]\) | Causal response function |
| Advanced | \(D_A = -\theta(t' - t)[\phi(x), \phi(y)]\) | Anti-time response |
| Feynman | \(D_F = \langle 0|T\{\phi(x)\phi(y)\}|0\rangle\) | Basis for perturbation expansion |
| Wightman | \(D^+ = \langle 0|\phi(x)\phi(y)|0\rangle\) | Vacuum correlation |
import numpy as np
# ===================================
# Time Dependence of Various Green Functions
# ===================================
def heaviside(t):
return 1.0 if t >= 0 else 0.0
def retarded_green(t, omega):
"""Retarded Green function (1D harmonic oscillator)"""
return heaviside(t) * np.sin(omega * t) / omega
def advanced_green(t, omega):
"""Advanced Green function"""
return -heaviside(-t) * np.sin(omega * t) / omega
def feynman_green(t, omega, epsilon=0.01):
"""Feynman Green function (approximation)"""
return -1j * np.exp(-1j * omega * np.abs(t) - epsilon * np.abs(t)) / (2 * omega)
# Time range
t_array = np.linspace(-5, 5, 200)
omega = 1.0
# Calculate each Green function
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("Comparison of Green function characteristics:")
print("=" * 50)
print(f"Retarded D_R(t=1): {D_R[150]:.6f}")
print(f"Advanced D_A(t=1): {D_A[150]:.6f}")
print(f"Feynman D_F(t=1): {D_F[150]:.6f}")
print(f"\nRetarded D_R(t=-1): {D_R[50]:.6f}")
print(f"Advanced D_A(t=-1): {D_A[50]:.6f}")
print(f"Feynman D_F(t=-1): {D_F[50]:.6f}")2.6 Applications to Materials Science: Linear Response Theory
The retarded Green function plays a central role in linear response theory, which describes material response to external fields. Through the Kubo formula, transport coefficients are connected to correlation functions.
🔬 Kubo Formula for Electrical Conductivity
The electrical conductivity \(\sigma(\omega)\) is derived from the current-current correlation function:
\[ \sigma(\omega) = \frac{1}{i\omega} \int dt \, e^{i\omega t} \langle [j(t), j(0)] \rangle \]
This is related to the real part of the retarded Green function.
import numpy as np
# ===================================
# Electrical Conductivity of Drude Model
# ===================================
def drude_conductivity(omega, omega_p, gamma):
"""Drude conductivity
Args:
omega: Frequency
omega_p: Plasma frequency
gamma: Scattering rate
"""
return omega_p**2 / (4 * np.pi * (1j * omega + gamma))
def optical_conductivity(omega, omega_p, gamma):
"""Optical conductivity (real part)"""
sigma = drude_conductivity(omega, omega_p, gamma)
return sigma.real
# Metal parameters (assuming copper)
omega_p = 1.6e16 # rad/s (plasma frequency)
gamma = 4.0e13 # rad/s (scattering rate)
omega_range = np.logspace(12, 17, 100) # Hz
sigma_real = [optical_conductivity(om, omega_p, gamma) for om in omega_range]
print("Optical response of Drude model:")
print("=" * 50)
print(f"DC conductivity σ(0): {drude_conductivity(0, omega_p, gamma).real:.3e} (S/m)")
print(f"Plasma frequency: {omega_p/(2*np.pi)*1e-12:.2f} THz")
print(f"Relaxation time: {1/gamma*1e15:.2f} fs")import numpy as np
# ===================================
# Temperature Dependence of Magnetic Susceptibility (Curie-Weiss Model)
# ===================================
def curie_weiss_susceptibility(T, C, T_c):
"""Curie-Weiss susceptibility
Args:
T: Temperature (K)
C: Curie constant
T_c: Curie temperature (K)
"""
return C / (T - T_c)
def spin_correlation_length(T, T_c, xi_0):
"""Spin correlation length (critical phenomenon)
ξ ~ |T - T_c|^{-ν}
"""
nu = 0.63 # 3D Ising universality
if np.abs(T - T_c) < 1e-6:
return 1e10 # Divergence
return xi_0 / np.abs(T - T_c)**nu
# Iron parameters
C = 2.0 # Curie constant (emu·K/mol)
T_c = 1043 # Curie temperature (K)
xi_0 = 0.5e-9 # Lattice constant scale (m)
temperatures = np.linspace(T_c + 10, T_c + 200, 5)
print("Magnetic susceptibility and correlation length:")
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}")Exercises
Easy (Foundation Check)
Q1: Derive the differential equation satisfied by the Feynman propagator \(D_F(x-y)\).
Show Answer
Answer:
Since \(D_F\) is a time-ordered product, it satisfies the Klein-Gordon equation with different boundary conditions:
\[ (\Box_x + m^2) D_F(x - y) = -i\delta^{(4)}(x - y) \]
This is the defining equation for the Green function. The δ function on the right-hand side corresponds to the source term.
Q2: Explain why the poles are placed at \(p^0 = \omega_{\mathbf{p}} - i\epsilon\) and \(p^0 = -\omega_{\mathbf{p}} + i\epsilon\) in the iε prescription.
Show Answer
Reason:
Factoring the denominator \((p^0)^2 - \omega_{\mathbf{p}}^2 + i\epsilon = (p^0 - \omega_{\mathbf{p}} + i\epsilon')(p^0 + \omega_{\mathbf{p}} - i\epsilon')\) yields this placement.
Physical meaning: The positive energy pole is in the lower half-plane and the negative energy pole is in the upper half-plane, ensuring causality (propagation to the future).
Medium (Application)
Q3: Show that the sum of the retarded Green function \(D_R\) and advanced Green function \(D_A\) equals the commutator \([\phi(x), \phi(y)]\).
Show Answer
Proof:
\[ 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 \]
Taking the sum:
\[ 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 \]
(Using \(\theta(t - t') + \theta(t' - t) = 1\))
Hard (Advanced)
Q4: Using Wick rotation, calculate the momentum integral of the Feynman propagator in 4-dimensional Euclidean space \(\int d^4p_E / (p_E^2 + m^2)^2\).
Show Answer
Calculation:
Using 4-dimensional polar coordinates:
\[ \int d^4p_E = 2\pi^2 \int_0^\infty dp \, p^3 \]
Performing the integral:
\[ I = 2\pi^2 \int_0^\infty \frac{p^3 \, dp}{(p^2 + m^2)^2} \]
Substituting \(u = p^2 + m^2\):
\[ I = \pi^2 \int_{m^2}^\infty \frac{du}{u^2} = \frac{\pi^2}{m^2} \]
References
- 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.