This time, we will summarize the principle of superposition and electron wave packets.
The principle of superposition is that the function obtained by adding multiple solutions that satisfy the Schrodinger equation is also the solution of the Schrodinger equation. For example, according to the following distribution, prepare a wave function in which $ \ psi_k $ is superposed.
Substituting this into the Schrodinger equation, the potential is 0 because it is a free space at this time.
When the left side becomes zero regardless of all positions and times, the principle of superposition holds, so if you investigate the condition that the contents of parentheses become zero
This is the same as the definition of $ \ omega $ itself, so it always holds. In other words, it was shown that the principle of superposition always holds.
Since $ a (k) $ can have any distribution, a (k) is a Gaussian distribution centered on an appropriate constant $ k_0 $.
Let's plot the wave function at this time.
The new constants required here are
#Number of divisions in space
NX = 500
#Spatial division size
dx = 1.0e-9
#Calculation interval
x_min = -10.0 * dx
x_max = 10.0 * dx
#Number to overlap
NK = 200
#deviation of k
sigma = math.sqrt(math.log(2.0)) * 1.0e9
#Split k
dk = 20.0 / NK
#Central energy of wave packet
E0 = 10.0 * eV
#Center of wave packet
k0 = math.sqrt(2.0 * me * E0 / hbar ** 2)
omega0 = hbar / (2.0 * me) * k0 ** 2
#Width of calculation time
ts = -50
te = 50
#Time interval
dt = 1.0e-16
#Imaginary unit
I = 1.0j
To make a plot, we need a function that outputs an array of graphs at a certain point in time t.
def dist_t(xl, t):
psi_real = []
psi_imag = []
psi_abs = []
for x in xl:
#scaling
psi_c = psi(x, t) * dx * dk / 10.0
psi_real.append(psi_c.real)
psi_imag.append(psi_c.imag)
psi_abs.append(abs(psi_c))
return psi_real, psi_imag, psi_abs
Then, we define a function psi that outputs the probability distribution when (x, t) is given.
def psi(x, t):
psi_sum = 0.0 + 0.0j
for kn in range(NK):
#Get a constant
k = k0 + dk * (kn - NK/2)
omega = hbar / (2.0 * me) * k ** 2
#Overlay
psi_sum += cmath.exp(I * (k * x - omega * t)) * cmath.exp(-((k - k0) / (2.0 * sigma)) ** 2)
return psi_sum
Plot is performed using these.
xl = np.linspace(x_min, x_max, NX)
#Array for animation creation
ims = []
fig1 = plt.figure(figsize=(10, 6))
for t in range(ts, te + 1):
t_real = t * dt
psi_real, psi_imag, psi_abs = dist_t(xl * dx, t)
#Depiction of top
img = plt.plot(xl, psi_real, 'red')
img += plt.plot(xl, psi_imag, 'green')
img += plt.plot(xl, psi_abs, 'blue')
#Add a frame
ims.append(img)
#Drawing a graph
plt.title("Gaussian wave packet(Spatial distribution)")
plt.xlabel("Position[nm]", fontsize=16)
plt.ylabel("Probability amplitude", fontsize=16)
#Drawing range
plt.xlim([-10.0, 10.0])
plt.ylim([-0.3, 0.3])
#Animation generation
ani = animation.ArtistAnimation(fig1, ims, fontsize=16)
ani.save("g_wave_packet.html", writer=animation.HTMLWriter())
plt.show()
↓ is the completed video. It can be observed that the width of the distribution widens as time goes by.
Recommended Posts