Sketch the propagator for a 1-D free particle.

Wenjie Chen

Oct. 24th, 2018

1. Introduction

The propagator is a function that specifies the probability amplitude for a particle to travel from one place to another in a given time (or to travel with a certain energy and momentum).

The propagator can be viewed as the expectation value of the time-evolution operator in the coordinate space:

$$K(x', t; x, t_0) = \langle x'\mid U(t, t_0)\mid x\rangle.$$

Using this propagator we can express the wave function at time $t$ as

$$\psi (x',t)=\int _{-\infty }^{\infty }\psi (x ,t_0)K(x',t;x,t_0)\,dx.$$

For a one dimensional free particle, the Hamiltonian is very simple:

$$\hat{H} = \frac{\hat{p}^2}{2m},$$

where $\hat{p}$ is the momentum operator and $m$ is the particle mass. This simple Hamiltonian is independent of time, so the time-evolution unitary operator is very simple. With some calculation the propagator is found to be

$$K(x', t; x, t_0)=\sqrt{{\frac {m}{2\pi i\hbar (t - t_0)}}}\exp{\left[-{\frac {m(x'-x)^{2}}{2i\hbar (t - t_0)}}\right]}.$$

Our goal in this project is to figure out what this complex function looks like.

2. Code

In [22]:
import numpy as np
import matplotlib.pyplot as plt
In [11]:
def K(x, t):
    '''
        The propagator K(x', t; x, t0) = \sqrt{\frac{m}{2 \pi i \hbar (t - t0)}} \exp{frac{i m (x' - x)^2}{2 \hbar (t - t0)}}.
        This function fixes m and hbar to be 1.
        
        Author: Wenjie Chen 
        E-mail: wenjiechen@pku.edu.cn
        
        args:
            x : [double] Defined to be x' - x.
            t : [double] Defined to be t - t0.
            
        returns:
            K : [complex] A complex value.
            
        example:
            K(0, 1)
    '''
    K = 1 / np.sqrt(2 * np.pi * 1j * t) * np.exp(1j * x**2 / t / 2)
    return K
In [99]:
def plot_K_time(x, time_sequence, REAL_OR_IMAGINARY):
    '''
        Draw a series of the propagator function's real part or imaginary part at different time.
        
        Author: Wenjie Chen 
        E-mail: wenjiechen@pku.edu.cn
        
        args:
            x : [list] The coordinates.
            time_sequence : [list] A time sequence.
            REAL_OR_IMAGINARY : [string] One string in ["Re", "Im", "Re&Im"], indicates which part is plotted.
            
        returns:
            [Figures] Several figures.
            
        example:
            x = np.linspace(-10,10,10000)
            t = [0.25, 0.5, 1.0, 2.0, 5.0]
            plot_time(x, t, "Re")
    '''
    for t in time_sequence:
        [Re_K, Im_K] = [K(x, t).real, K(x, t).imag]
        plt.figure(figsize=(10,5))
        if REAL_OR_IMAGINARY == "Re":
            plt.plot(x, Re_K)
            plt.ylabel("$Re[K(x'-x, t - t_0)]$")
        elif REAL_OR_IMAGINARY == "Im":
            plt.plot(x, Im_K)
            plt.ylabel("$Im[K(x'-x, t - t_0)]$")
        elif REAL_OR_IMAGINARY == "Re&Im":
            plt.plot(x, Re_K)
            plt.plot(x, Im_K)
            plt.ylabel("$K(x'-x, t - t_0)$")
            plt.legend(["Re(K)", "Im(K)"])
        plt.xlabel("$x' - x$")
        plt.title("$t - t_0 = $" + str(t))
        plt.show()
    return

3. Plot the propagator at different time

In [94]:
x = np.linspace(-10,10,10000)
t = [0.5, 2.0]
plot_K_time(x, t, "Re")
In [95]:
x = np.linspace(-10,10,10000)
t = [0.5, 2.0]
plot_K_time(x, t, "Im")
In [100]:
x = np.linspace(-10, 10, 10000)
t = [0.5, 2.0]
plot_K_time(x, t, "Re&Im")