Time Evolution of a Free Particle Wave Packet: Numerical Simulation of Wave Packet Dispersion

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

ParameterSymbolValue
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 \)
Table I: Values of different parameters used in the simulation.

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.

Wave Packet Simulation


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

  1. Import Libraries: Import numpy for numerical operations and matplotlib.pyplot for visualizations.
  2. Constants: Define physical constants such as reduced Planck constant \(( \hbar )\), electron mass \(( m_e )\), de Broglie wavelength, and wave number \(( k_0 )\).
  3. Grid Parameters: Set up the simulation domain size and grid spacing for \( x \) and \( y \) dimensions.
  4. Time Parameters: Define the time step \(( \Delta t )\) and the number of time steps \(( N_t )\).
  5. Wave Packet Parameters: Specify the initial position, width, and wave vector components of the Gaussian wave packet.
  6. Initial Wave Packet: Initialize the wave packet as a Gaussian function with a complex phase factor for initial momentum.
  7. Fourier Space Components: Calculate wave numbers \(( k_x ), ( k_y )\) and create a grid in Fourier space.
  8. 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.
  9. 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:

  1. 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.
  2. Top Plot: Shows the projection of the wave packet along the x-axis, highlighting the dispersion and spread in the x-direction.
  3. 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 EvolutionMatterWaveX.Com, August 4, (2024).

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top