Quantum wavepackets: tunnelling, scattering & oscillators

A Gaussian wavepacket evolves under the time-dependent Schrödinger equation, solved live with the unitary split-step Fourier method. Fire it at a barrier and compare the measured transmission with the exact transfer-matrix prediction.

Wavefunction ψ(x, t)

Fill colour of |ψ|² = complex phase arg ψ · grey = potential V(x) (right axis) · dashed = mean energy ⟨E⟩

Momentum space |φ(k)|² and T(k)

Reflection & transmission vs time

Governing equation

Natural units \(\hbar = m = 1\). The wavefunction obeys

$$ i\,\frac{\partial\psi}{\partial t} = -\frac{1}{2}\frac{\partial^2\psi}{\partial x^2} + V(x)\,\psi .$$

Numerical method: Strang split-step Fourier

$$ \psi(t+\Delta t) = e^{-iV\Delta t/2}\;\mathcal{F}^{-1}\!\left[e^{-ik^2\Delta t/2}\,\mathcal{F}\!\left[e^{-iV\Delta t/2}\,\psi(t)\right]\right] $$

Every factor is a pure phase, so the scheme is exactly unitary: \(\int|\psi|^2dx\) stays 1 to machine precision (shown live). The kinetic step is applied in momentum space with a radix-2 FFT, giving spectral accuracy. Grid: 4096 points, Δx ≈ 0.098, Δt = 0.01, splitting error \(O(\Delta t^3)\) per step.

Absorbing edges damp outgoing waves. The probability they remove is booked as reflected (left) or transmitted (right), so R + T stays meaningful.

Exact theory for comparison

For piecewise-constant potentials, write \(\psi = A_j e^{iq_jx} + B_j e^{-iq_jx}\) with \(q_j=\sqrt{2(E-V_j)}\) in each region and match ψ and ψ′ at every interface. The resulting transfer matrix gives the exact plane-wave \(T(E)\). For a single barrier with \(E<V_0\):

$$ T = \left[1 + \frac{V_0^2\sinh^2(\kappa a)}{4E(V_0-E)}\right]^{-1},\qquad \kappa=\sqrt{2(V_0-E)} .$$

A wavepacket contains a spread of momenta \(|\phi(k)|^2 \propto e^{-(k-k_0)^2/2\sigma_k^2}\), with \(\sigma_k = 1/2\sigma\). The prediction to compare with the simulation is therefore \(\bar T = \int T(k)\,|\phi(k)|^2\,dk\). The test suite checks that the simulation matches this value to within 0.1%.

Things to try

  • Tunnelling: set V₀ above \(k_0^2/2\). Part of the packet still gets through, and T falls off exponentially with width a.
  • Resonant tunnelling: in the double-barrier mode, look at the sharp T(k) peaks in the momentum plot and tune k₀ onto one. Use a wide packet (σ ≈ 20).
  • Above-barrier reflection: set E > V₀. A classical particle would always pass, but some of the wave reflects.
  • Harmonic oscillator: ⟨x⟩(t) follows the classical \(x_0\cos\omega t\) (Ehrenfest's theorem). With σ = \(1/\sqrt{2\omega}\) the packet is a coherent state and never spreads.
  • Measure x: collapses ψ to a narrow packet at a position drawn from |ψ|² (Born rule).