[PYTHON] Lesen Sie "Quantencomputer hergestellt in 14 Tagen". Dritter Tag

Einführung

Dieses Mal werde ich das Prinzip der Überlagerung und des Elektronenwellenflusses zusammenfassen.

3 Beobachtung des Elektronenwellenbündels

Prinzip der Überlagerung

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.

\psi(x,t)=\int_{-\infty}^{\infty}a(k)\varphi_k(x)e^{-i\omega(k)t}dk=\int_{-\infty}^{\infty}a(k)e^{ikx-i\omega(k)t}dk

Wenn man dies in die Schrödinger-Gleichung einsetzt, ist das Potential 0, da es zu diesem Zeitpunkt ein freier Raum ist.

i\hbar\frac{\partial}{\partial t}\int_{-\infty}^{\infty}a(k) e^{ikx-i\omega(k)t}dk=\frac{\hbar^2}{2m}\frac{\partial^2}{\partial x^2}\int_{-\infty}^{\infty}a(k)e^{ikx-i\omega(k)t}dk
\int_{-\infty}^{\infty}a(k)\hbar \omega(k) e^{ikx-i\omega(k)t}dk=\int_{-\infty}^{\infty}a(k)\frac{\hbar^2k^2}{2m}e^{ikx-i\omega(k)t}dk
\int_{-\infty}^{\infty}a(k)\left[\hbar \omega(k)-\frac{\hbar^2 k^2}{2m}\right] e^{ikx-i\omega(k)t}dk=0

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

\omega(k)=\frac{\hbar k^2}{2m}

Dies entspricht der Definition von $ \ omega $ selbst, gilt also immer. Mit anderen Worten, es wurde gezeigt, dass das Prinzip der Überlagerung immer gilt.

3.2 Beobachtung des Elektronenwellenflusses

Da $ a (k) $ eine beliebige Verteilung sein kann, ist a (k) eine Gaußsche Verteilung, die auf einer geeigneten Konstante $ k_0 $ zentriert ist.

a(k)=e^{-(\frac{k-k_0}{2\sigma})^2}

Lassen Sie uns die Wellenfunktion zu diesem Zeitpunkt zeichnen.

3.2.1 konstant

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

3.2.2 Funktionsdefinition

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

3.2.3 Animationsplot

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()

3.3 Die fertige Animation

↓ ist das fertige Video. Es ist zu beobachten, dass sich die Breite der Verteilung mit der Zeit vergrößert. g_wave_packet.gif

Recommended Posts

Lesen Sie "Quantencomputer hergestellt in 14 Tagen". Dritter Tag
Lesen Sie "Quantencomputer hergestellt in 14 Tagen". Erster Tag
Lesen Sie "Quantencomputer hergestellt in 14 Tagen". der 2. Tag
Lesen Sie "Quantencomputer hergestellt in 14 Tagen". Tag 5 Verbesserung der Quantentopfung / Hinzufügung von Barrieren
Lesen Sie "Grundlagen des Quantenglühens", Tag 5
Lesen Sie "Grundlagen des Quantenglühens", Tag 6
Differenzierung im Computer
pickle Um zu lesen, was in 2 Serien mit 3 Serien gemacht wurde