Lesson 13 of 15

Perturbation Theory

Perturbation Theory

Perturbation theory lets us find approximate solutions to quantum systems that are "close" to a solvable one. We write the Hamiltonian as:

H=H0+λHH = H_0 + \lambda H'

where H0H_0 has known solutions H0n=En(0)nH_0 |n\rangle = E_n^{(0)} |n\rangle and λH\lambda H' is a small perturbation.

First-Order Energy Correction

The first-order correction to the energy of state n|n\rangle is simply the expectation value of the perturbation:

En(1)=nHn=ψn(x)H(x)ψn(x)dxE_n^{(1)} = \langle n | H' | n \rangle = \int \psi_n^*(x)\, H'(x)\, \psi_n(x)\, dx

Particle in a Box

The 1D particle in a box (infinite square well) on [0,L][0, L] is a classic exactly solvable system:

ψn(x)=2Lsin ⁣(nπxL),En(0)=n2π222mL2\psi_n(x) = \sqrt{\frac{2}{L}} \sin\!\left(\frac{n\pi x}{L}\right), \quad E_n^{(0)} = \frac{n^2 \pi^2 \hbar^2}{2 m L^2}

with n=1,2,3,n = 1, 2, 3, \ldots (quantum number starts at 1).

Common Perturbations

  • Constant perturbation H=V0H' = V_0: correction is En(1)=V0E_n^{(1)} = V_0 for all nn (the wavefunctions are already orthonormal and ψn2=1\int \psi_n^2 = 1).
  • Linear ramp H=V0x/LH' = V_0 x/L: correction is En(1)=V0/2E_n^{(1)} = V_0/2 for all nn (by symmetry of the sin² integral).

Physical Constants

Using SI units with =1.055×1034\hbar = 1.055 \times 10^{-34} J·s, me=9.109×1031m_e = 9.109 \times 10^{-31} kg, and 1eV=1.602×10191\,\text{eV} = 1.602 \times 10^{-19} J.

Implementation

  • pib_wavefunction(x, n, L)ψn(x)=2/Lsin(nπx/L)\psi_n(x) = \sqrt{2/L}\sin(n\pi x/L)
  • pib_energy_eV(n, L_nm) — unperturbed energy in eV for a box of width LnmL_{\text{nm}} nanometres
  • first_order_correction(V_func, n, L, N=1000) — numerically integrates nVn\langle n|V|n\rangle over [0,L][0,L]
import math

def pib_wavefunction(x, n, L):
    return math.sqrt(2.0 / L) * math.sin(n * math.pi * x / L)

def pib_energy_eV(n, L_nm):
    hbar = 1.055e-34
    m = 9.109e-31
    eV = 1.602e-19
    L = L_nm * 1e-9
    return n**2 * math.pi**2 * hbar**2 / (2 * m * L**2) / eV
Python runtime loading...
Loading...
Click "Run" to execute your code.