Last Updated on August 18, 2024 by Max
In quantum mechanics, understanding the behavior of free particles is fundamental. This article explores the time evolution of a Gaussian wave packet, representing a free electron, using the time-dependent Schrödinger equation (TDSE).
By simulating the wave packet’s propagation in a two-dimensional domain, we can observe how it spreads and evolves over time. This study provides insights into the dispersion and dynamic behavior of matter waves, highlighting the principles of quantum mechanics.
The visualization and numerical methods presented here offer a clear demonstration of wave packet dynamics. Therefore, it might be a helpful resource for students and researchers in the field.
The Considered Scenario
The system under consideration is a free electron represented by a Gaussian wave packet. This wave packet propagates in a two-dimensional domain without external potentials.
The simulation focuses on the evolution of the wave packet over time, governed by the time-dependent Schrödinger equation. Key parameters include the electron’s initial position, wave vector, and the width of the Gaussian packet.
The primary aim is to observe how the wave packet spreads and moves through the domain, providing insights into the behavior of free electrons and matter waves in quantum mechanics.
Numerical Method
Time-Dependent Schrödinger Equation (TDSE)
The time-dependent Schrödinger equation (TDSE) in two dimensions for a free particle (i.e., without an external potential) is given by:
\[i\hbar \frac{\partial \psi(x,y,t)}{\partial t} = -\frac{\hbar^2}{2m} \left( \frac{\partial^2 }{\partial x^2} + \frac{\partial^2 }{\partial y^2} \right) \psi(x,y,t) + V(x,y) \psi(x,y,t) \quad (1)\]
Here, \( \psi(x,y,t) \) is the wave function of the particle, depending on position \( (x,y) \) and time \( t \). The symbol \( \hbar \) represents the reduced Planck constant, \( m \) denotes the mass of the particle, and \( i \) is the imaginary unit. For a free particle, \(V(x,y)=0\).
Initial Wave Packet
The initial wave packet is represented by a Gaussian function with a complex phase factor, which models a free electron’s wave function moving along a specific direction. The Gaussian packet is characterized by its position, width, and wave vector components, with motion primarily in one direction.
The initial wave packet \( \psi_0(x,y) \) is defined as:
\[\psi_0(x,y) = \exp \left( -\frac{(x – x_0)^2}{2\sigma_x^2} \right) \exp \left( -\frac{(y – y_0)^2}{2\sigma_y^2} \right) \exp \left( i (k_{x0} x + k_{y0} y) \right),\]
where,
- \( (x_0, y_0) = (-2 \times 10^{-7}, 0) \) is the initial position of the wave packet.
- \( \sigma_x = \sigma_y = 15 \times 10^{-9} \) meters are the widths of the Gaussian packet in the \( x \) and \( y \) directions, respectively.
- \( k_{x0} = k_0 = 2\pi/ \lambda_{dB}\) and \( k_{y0} = 0 \) are the components of the initial wave vector, indicating that the wave packet is moving primarily along the \( x \)-direction.
The Gaussian function:
\[\exp \left( -\frac{(x – x_0)^2}{2\sigma_x^2} \right) \exp \left( -\frac{(y – y_0)^2}{2\sigma_y^2} \right),\]
describes the spatial distribution of the wave packet, centered at \( (x_0, y_0) \) with widths \( \sigma_x \) and \( \sigma_y \).
The complex phase factor:
\[\exp \left( i (k_{x0} x + k_{y0} y) \right),\]
imparts an initial momentum to the wave packet, with the wave vector \( (k_{x0}, k_{y0}) = (k_0, 0) \), ensuring the wave packet moves along the \( x \)-direction.
Spatial Discretization
The spatial domain is discretized into a grid with \( N_x \) and \( N_y \) points along the \( x \) and \( y \) axes, respectively. The grid spacings, \(\Delta x\) and \(\Delta y\), are defined as:
\[\Delta x = \frac{L_x}{N_x}, \quad \Delta y = \frac{L_y}{N_y}\]
where \( L_x \) and \( L_y \) are the lengths of the simulation domain in the \( x \) and \( y \) directions. The positions \( x \) and \( y \) are given by:
\[x_i = -\frac{L_x}{2} + i \Delta x, \quad i = 0, 1, \ldots, N_x – 1\]
\[y_j = -\frac{L_y}{2} + j \Delta y, \quad j = 0, 1, \ldots, N_y – 1\]
The wave function \(\psi(x,y,t)\) is evaluated at these discrete grid points, resulting in a matrix representation \(\psi_{i,j}(t)\).
Temporal Discretization
The temporal domain is discretized into \( N_t \) time steps with a time step size \(\Delta t\):
\[\Delta t = 3 \times 10^{-14} \, \text{seconds}\]
The time evolution is computed over these discrete time steps, where \( t_n \) is given by:
\[t_n = n \Delta t, \quad n = 0, 1, \ldots, N_t – 1\]
Split-Step Fourier Method
The split-step Fourier method splits the time evolution into parts: evolution in real space (for potential energy) and in Fourier space (for kinetic energy).
- 1/2 Evolution for the Potential Energy in Real Space
For a free particle, the potential energy term \( V(x,y) = 0 \), so this step can be represented as:
\[\psi(x,y,t + \frac{\Delta t}{2}) = \psi(x,y,t) \exp \left( -i \frac{V(x,y) \Delta t}{2\hbar} \right)\]
For a free particle, \( V(x,y) = 0 \), hence this step does not affect \( \psi \).
- Forward Transform
Apply the Fourier transform to the wave function \( \psi(x,y,t) \) to obtain \( \tilde{\psi}(k_x, k_y, t) \):
\[\tilde{\psi}(k_x, k_y, t) = \mathcal{F}[\psi(x,y,t)]\]
- Full Evolution for the Kinetic Energy in Fourier Space
In Fourier space, the kinetic energy operator is diagonal:
\[\tilde{\psi}(k_x, k_y, t + \Delta t) = \tilde{\psi}(k_x, k_y, t) \exp \left( -i \frac{\hbar k^2 \Delta t}{2m} \right)\]
where \( k^2 = k_x^2 + k_y^2 \).
- Inverse Fourier Transform
Transform back to real space to obtain \( \psi(x,y,t + \Delta t) \):
\[\psi(x,y,t + \Delta t) = \mathcal{F}^{-1}[\tilde{\psi}(k_x, k_y, t + \Delta t)]\]
- 1/2 Evolution for the Potential Energy in Real Space
Again, apply half-step evolution for potential energy in real space:
\[\psi(x,y,t + \Delta t) = \psi(x,y,t + \frac{\Delta t}{2}) \exp \left( -i \frac{V(x,y) \Delta t}{2\hbar} \right)\]
For a free particle, \( V(x,y) = 0 \), so this step does not affect \( \psi \).
Simulation Parameters
Parameter | Symbol | Value |
---|---|---|
Reduced Planck constant | \( \hbar \) | \( 1.0545718 \times 10^{-34} \) J·s |
Mass of electron | \( m_e \) | \( 9.10938356 \times 10^{-31} \) kg |
de Broglie wavelength | \( \lambda \) | \( 20 \times 10^{-9} \) m |
Wave number | \( k_0\) | \( 2 \pi / \lambda \) |
Simulation domain size | \( L_x, L_y \) | \( 1 \times 10^{-6} \) m |
Number of grid points | \( N_x, N_y \) | 512 |
Grid spacing | \( \Delta x, \Delta y \) | \( L_x / N_x, L_y / N_y \) |
Time step | \( \Delta t \) | \( 3 \times 10^{-14} \) s |
Number of time steps | \( N_t \) | 501 |
Initial position of packet | \( x_0, y_0 \) | \( -2 \times 10^{-7}, 0 \) m |
Width of Gaussian packet | \( \sigma_x, \sigma_y \) | \( 15 \times 10^{-9} \) m |
Initial wave vector components | \( k_{x0}, k_{y0} \) | \( k_0, 0 \) |
Python Code
This Python code simulates the evolution of a free electron’s wave packet using the split-step Fourier method. The primary focus is to visualize the propagation of a Gaussian wave packet over time.
import numpy as np
import matplotlib.pyplot as plt
# Constants
hbar = 1.0545718e-34 # Reduced Planck constant (Joule second)
m_e = 9.10938356e-31 # Mass of electron (kg)
wavelength = 20e-9 # de Broglie wavelength (meters)
k0 = 2 * np.pi / wavelength # Wave number
# Grid parameters
Lx, Ly = 1e-6, 1e-6 # Simulation domain size (meters)
Nx, Ny = 512, 512 # Number of grid points
dx, dy = Lx / Nx, Ly / Ny # Grid spacing
x = np.linspace(-Lx / 2, Lx / 2, Nx)
y = np.linspace(-Ly / 2, Ly / 2, Ny)
X, Y = np.meshgrid(x, y)
# Time parameters
dt = 3e-14 # Time step (seconds)
Nt = 501 # Number of time steps
# Wave packet parameters
sigma_x = sigma_y = 15e-9 # Width of the Gaussian packet (meters)
x0, y0 = -2e-7, 0 # Initial position of the packet (meters)
kx0, ky0 = k0, 0 # Initial wave vector
# Initial Gaussian wave packet
psi0 = np.exp(-(X - x0) ** 2 / (2 * sigma_x ** 2)) * np.exp(-(Y - y0) ** 2 / (2 * sigma_y ** 2))
psi0 = psi0.astype(np.complex128)
psi0 *= np.exp(1j * (kx0 * X + ky0 * Y))
# Normalize the initial wave packet
psi0 /= np.sqrt(np.sum(np.abs(psi0) ** 2))
# Fourier space components
kx = np.fft.fftfreq(Nx, dx) * 2 * np.pi
ky = np.fft.fftfreq(Ny, dy) * 2 * np.pi
KX, KY = np.meshgrid(kx, ky)
K2 = KX ** 2 + KY ** 2
# Split-step Fourier method
psi = psi0.copy()
for t in range(Nt):
# (a) 1/2 Evolution for the potential energy in real space (skipped for free particle)
# (b) Forward transform
psi_k = np.fft.fft2(psi)
# (c) Full evolution for the kinetic energy in Fourier space
psi_k *= np.exp(-1j * hbar * K2 * dt / (2 * m_e))
# (d) Inverse Fourier transform
psi = np.fft.ifft2(psi_k)
# (e) 1/2 Evolution for the potential energy in real space (skipped for free particle)
# Visualization of wave packet evolution
if t % 50 == 0:
plt.figure(figsize=(6, 5))
Rho = np.abs(psi) ** 2
plt.imshow(Rho, extent=(-Lx / 2, Lx / 2, -Ly / 2, Ly / 2), cmap='hot')
plt.colorbar()
plt.title(f'Time step: {t}')
plt.xlabel(r'$x$ (m)', fontsize=14)
plt.ylabel(r'$y$ (m)', fontsize=14)
plt.tick_params(which="major", axis="both", direction="in", top=True, right=True, length=5, width=1, labelsize=12)
plt.pause(1) # Pause for 1 second
plt.close()
Description of the Code
- Import Libraries: Import
numpy
for numerical operations andmatplotlib.pyplot
for visualizations. - Constants: Define physical constants such as reduced Planck constant \(( \hbar )\), electron mass \(( m_e )\), de Broglie wavelength, and wave number \(( k_0 )\).
- Grid Parameters: Set up the simulation domain size and grid spacing for \( x \) and \( y \) dimensions.
- Time Parameters: Define the time step \(( \Delta t )\) and the number of time steps \(( N_t )\).
- Wave Packet Parameters: Specify the initial position, width, and wave vector components of the Gaussian wave packet.
- Initial Wave Packet: Initialize the wave packet as a Gaussian function with a complex phase factor for initial momentum.
- Fourier Space Components: Calculate wave numbers \(( k_x ), ( k_y )\) and create a grid in Fourier space.
- Split-Step Fourier Method:
- Perform a forward Fourier transform of the wave packet.
- Apply the kinetic energy evolution operator in Fourier space.
- Perform an inverse Fourier transform to return to real space.
- Visualization: Periodically visualize the evolution of the wave packet at specified time intervals.
Simulation Results and Discussion
The simulation results illustrate the time evolution of a Gaussian wave packet representing a free particle. Initially, the wave packet is localized, with its peak centered at the specified initial position.
As time progresses, the wave packet undergoes dispersion, a characteristic behavior of free particles in quantum mechanics.
The plot displays the probability density, \( |\psi|^2 \), indicating the likelihood of finding the particle at various positions over time. Clearly, the wave packet spreads in each dimension as it propagates.
The analytical form of the width can be derived from the time-dependent Schrödinger equation. If the initial width of the Gaussian wave packet is \(\sigma_{x0}\), the width \(\sigma_x(t)\) at time \(t\) is given by:
\[\sigma_x(t) = \sigma_{x0} \sqrt{1 + \left( \frac{\hbar t}{m \sigma_{x0}^2} \right)^2 }\]
A similar expression can be obtained for \(\sigma_y(t)\).
This visualization enhances understanding of the dynamics of free particles, showing how an initially localized wave packet evolves into a more diffuse distribution. This spread is indicative of increasing uncertainty in the particle’s position.
Overall, this simulation effectively captures the core principles of wave packet evolution in quantum mechanics, providing a clear demonstration of dispersion and the associated increase in positional uncertainty.
An animation of the simulation results
The animation consists of three plots:
- Main Plot: Displays the time evolution of the probability density \( |\psi|^2 \) of a free particle’s wave packet, illustrating how the wave packet spreads over time.
- Top Plot: Shows the projection of the wave packet along the x-axis, highlighting the dispersion and spread in the x-direction.
- Right Plot: Presents the projection of the wave packet along the y-axis, demonstrating the dispersion and spread in the y-direction.
These plots collectively illustrate the dynamic behavior of a free particle’s wave packet in quantum mechanics. The code used to animate the simulation results for a free particle wave packet evolution can be found in Ref. [1].
Conclusion
This article demonstrated the time evolution of a Gaussian wave packet representing a free electron using the time-dependent Schrödinger equation (TDSE). Through numerical simulations, we observed the dispersion and spreading of the wave packet over time, providing a clear visualization of free particle dynamics in quantum mechanics.
The study highlighted key principles such as wave packet dispersion and the associated increase in positional uncertainty. The presented methods and results serve as valuable resources for understanding fundamental quantum behavior, making them beneficial for both students and researchers in the field.
References
[1] Max, “A Python Code for Animating Free Particle Wave Packet Evolution” MatterWaveX.Com, August 4, (2024).
I am a science enthusiast and writer, specializing in matter-wave optics and related technologies. My goal is to promote awareness and understanding of these advanced fields among students and the general public.