Dieses Mal werde ich das Prinzip der Überlagerung und des Elektronenwellenflusses zusammenfassen.
Das Prinzip der Überlagerung besteht darin, dass die Funktion, die durch Hinzufügen mehrerer Lösungen erhalten wird, die die Schrödinger-Gleichung erfüllen, auch die Lösung der Schrödinger-Gleichung ist. Bereiten Sie beispielsweise eine Wellenfunktion vor, in der $ \ psi_k $ gemäß einer bestimmten Verteilung überlagert ist, wie unten gezeigt.
Wenn man dies in die Schrödinger-Gleichung einsetzt, ist das Potential 0, da es zu diesem Zeitpunkt ein freier Raum ist.
Wenn die linke Seite unabhängig von allen Positionen und Zeiten Null wird, gilt das Prinzip der Überlagerung. Wenn Sie also die Bedingung untersuchen, dass der Inhalt von Klammern Null wird
Dies entspricht der Definition von $ \ omega $ selbst, gilt also immer. Mit anderen Worten, es wurde gezeigt, dass das Prinzip der Überlagerung immer gilt.
Da $ a (k) $ eine beliebige Verteilung sein kann, ist a (k) eine Gaußsche Verteilung, die auf einer geeigneten Konstante $ k_0 $ zentriert ist.
Lassen Sie uns die Wellenfunktion zu diesem Zeitpunkt zeichnen.
Die neu benötigte Konstante ist hier
#Anzahl der Abteilungen im Raum
NX = 500
#Raumteilungsgröße
dx = 1.0e-9
#Berechnungsintervall
x_min = -10.0 * dx
x_max = 10.0 * dx
#Nummer, die sich überlappen soll
NK = 200
#Abweichung von k
sigma = math.sqrt(math.log(2.0)) * 1.0e9
#Split k
dk = 20.0 / NK
#Zentrale Energie des Wellenbündels
E0 = 10.0 * eV
#Zentrum des Wellenbündels
k0 = math.sqrt(2.0 * me * E0 / hbar ** 2)
omega0 = hbar / (2.0 * me) * k0 ** 2
#Breite der Berechnungszeit
ts = -50
te = 50
#Zeitintervall
dt = 1.0e-16
#Imaginäre Einheit
I = 1.0j
Um ein Diagramm zu erstellen, benötigen wir eine Funktion, die zu einem bestimmten Zeitpunkt t ein Array von Diagrammen ausgibt.
def dist_t(xl, t):
psi_real = []
psi_imag = []
psi_abs = []
for x in xl:
#Skalierung
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
Dann definieren wir eine Funktion psi, die die Wahrscheinlichkeitsverteilung ausgibt, wenn (x, t) gegeben ist.
def psi(x, t):
psi_sum = 0.0 + 0.0j
for kn in range(NK):
#Konstant werden
k = k0 + dk * (kn - NK/2)
omega = hbar / (2.0 * me) * k ** 2
#Überlagerung
psi_sum += cmath.exp(I * (k * x - omega * t)) * cmath.exp(-((k - k0) / (2.0 * sigma)) ** 2)
return psi_sum
Die Darstellung wird mit diesen durchgeführt.
xl = np.linspace(x_min, x_max, NX)
#Array zum Erstellen von Animationen
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)
#Darstellung des Rahmens
img = plt.plot(xl, psi_real, 'red')
img += plt.plot(xl, psi_imag, 'green')
img += plt.plot(xl, psi_abs, 'blue')
#Fügen Sie einen Rahmen hinzu
ims.append(img)
#Zeichnen eines Diagramms
plt.title("Gaussian wave packet(Spatial distribution)")
plt.xlabel("Position[nm]", fontsize=16)
plt.ylabel("Probability amplitude", fontsize=16)
#Zeichenbereich
plt.xlim([-10.0, 10.0])
plt.ylim([-0.3, 0.3])
#Animationsgenerierung
ani = animation.ArtistAnimation(fig1, ims, fontsize=16)
ani.save("g_wave_packet.html", writer=animation.HTMLWriter())
plt.show()
↓ ist das fertige Video. Es ist zu beobachten, dass sich die Breite der Verteilung mit der Zeit vergrößert.
Recommended Posts