[PYTHON] Lisez "Ordinateur Quantum fabriqué en 14 jours". Troisième jour

introduction

Cette fois, je résumerai le principe de superposition et de flux d'onde d'électrons.

3 Observation du faisceau d'ondes d'électrons

Principe de superposition

Le principe de superposition est que la fonction obtenue en ajoutant plusieurs solutions qui satisfont l'équation de Schrödinger est également la solution de l'équation de Schrödinger. Par exemple, préparez une fonction d'onde dans laquelle $ \ psi_k $ est superposé selon une certaine distribution comme indiqué ci-dessous.

\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

En remplaçant cela dans l'équation de Schrödinger, le potentiel est de 0 car c'est un espace libre à ce moment.

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

Lorsque le côté gauche devient zéro indépendamment de toutes les positions et heures, le principe de superposition est vrai, donc si vous étudiez la condition que le contenu des parenthèses devienne zéro

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

C'est la même que la définition de $ \ omega $ lui-même, donc elle est toujours valable. En d'autres termes, il a été démontré que le principe de superposition est toujours valable.

3.2 Observation du flux d'onde d'électrons

Puisque $ a (k) $ peut être n'importe quelle distribution, a (k) est une distribution gaussienne centrée sur une constante appropriée $ k_0 $.

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

Tracons la fonction d'onde à ce moment.

3.2.1 constante

La constante nouvellement requise ici est

#Nombre de divisions dans l'espace
NX = 500
#Taille de la division spatiale
dx = 1.0e-9
#Intervalle de calcul
x_min = -10.0 * dx
x_max = 10.0 * dx
#Numéro à chevaucher
NK = 200
#écart de k
sigma = math.sqrt(math.log(2.0)) * 1.0e9
#Fractionner k
dk = 20.0 / NK
#Énergie centrale du faisceau de vagues
E0 = 10.0 * eV
#Centre du faisceau d'ondes
k0 = math.sqrt(2.0 * me * E0 / hbar ** 2)
omega0 = hbar / (2.0 * me) * k0 ** 2
#Largeur du temps de calcul
ts = -50
te = 50
#Intervalle de temps
dt = 1.0e-16
#Unité imaginaire
I = 1.0j

3.2.2 Définition des fonctions

Pour créer un graphique, nous avons besoin d'une fonction qui génère un tableau de graphiques à un certain moment t.

def dist_t(xl, t):
    psi_real = []
    psi_imag = []
    psi_abs = []
    for x in xl:
        #mise à l'échelle
        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

Ensuite, nous définissons une fonction psi qui produit la distribution de probabilité lorsque (x, t) est donné.

def psi(x, t):
    psi_sum = 0.0 + 0.0j
    for kn in range(NK):
        #Obtenez constant
        k = k0 + dk * (kn - NK/2)
        omega = hbar / (2.0 * me) * k ** 2
        #Recouvrir
        psi_sum += cmath.exp(I * (k * x - omega * t)) * cmath.exp(-((k - k0) / (2.0 * sigma)) ** 2)
    return psi_sum

3.2.3 Graphique d'animation

Le tracé est effectué en utilisant ces derniers.

xl = np.linspace(x_min, x_max, NX)
#Tableau pour créer une animation
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)
    #Représentation du cadre
    img = plt.plot(xl, psi_real, 'red')
    img += plt.plot(xl, psi_imag, 'green')
    img += plt.plot(xl, psi_abs, 'blue')
    #Ajouter un cadre
    ims.append(img)

#Dessiner un graphique
plt.title("Gaussian wave packet(Spatial distribution)")
plt.xlabel("Position[nm]", fontsize=16)
plt.ylabel("Probability amplitude", fontsize=16)
#Plage de dessin
plt.xlim([-10.0, 10.0])
plt.ylim([-0.3, 0.3])
#Génération d'animation
ani = animation.ArtistAnimation(fig1, ims, fontsize=16)
ani.save("g_wave_packet.html", writer=animation.HTMLWriter())

plt.show()

3.3 L'animation terminée

↓ est la vidéo terminée. On observe que la largeur de la distribution s'élargit avec le temps. g_wave_packet.gif

Recommended Posts

Lisez "Ordinateur Quantum fabriqué en 14 jours". Troisième jour
Lisez "Ordinateur Quantum fabriqué en 14 jours". Premier jour
Lisez "Ordinateur Quantum fabriqué en 14 jours". le 2ème jour
Lisez "Ordinateur Quantum fabriqué en 14 jours". Jour 5 Amélioration du puits quantique / ajout de barrières
Lire "Principes de base du recuit quantique" Jour 5
Lire "Les bases du recuit quantique" Jour 6
Différenciation en informatique
pickle Pour lire ce qui a été fait en 2 séries avec 3 séries