** L'équation de Schrödinger en régime permanent peut être réduite au problème (général) des valeurs propres de la matrice par la méthode des différences. Le but de cet article est de déterminer l'énergie propre et la fonction propre des électrons dans le potentiel d'oscillateur isotrope tridimensionnel en utilisant cette méthode. ** **
À propos des grandes lignes de la méthode matricielle
Je vous serais reconnaissant si vous pouviez vous y référer.
Potentiel d'oscillateur harmonique isotrope 3D
Comme
** Cette équation peut être convertie en une équation différentielle supergéométrique confluente, et la solution exacte de la valeur propre d'énergie $ E $ d'une solution régulière à l'origine est **
Il est connu pour être ** [2]. ** Où L est le nombre quantique orbital et N est le nombre naturel $ N = 0,1,2, ... $.
Par conséquent, le spectre d'énergie
Sera. La plupart diminuent.
Dans cet article, l'équation (3) est résolue comme le problème des valeurs propres de la matrice, et la valeur propre d'énergie $ E_n $ et la fonction propre $ u_n (r) $ sont calculées.
Tout le code est [unité atomique de Rydberg](https://ja.wikipedia.org/wiki/%E5%8E%9F%E5%AD%90%E5%8D%98%E4%BD%8D%E7%B3% BB) est utilisé. c'est,
Masse électronique $ m = 1/2 $ Constante de Dirac $ \ hbar = 1 $ Longueur en Bohr $ a_ {B} = (0,529177 Å) $ unité, Énergie $ 1Ry = 13,6058 eV
Est d'être.
"""
Problème de valeur limite par méthode matricielle
Potentiel d'oscillateur harmonique isotrope 3D
"""
import numpy as np
import scipy.linalg
import matplotlib.pyplot as plt
delta_x = 0.05
x0, x1 = 0.001, 10
N=int((x1-x0)/delta_x)
print("N=",N)
L=0 #Nombre quantique orbital. Modifiez le cas échéant.
hbar=1
m_elec=1/2
omega=1
y = np.zeros([N-1,N+1])
y[:,0] = 0
y[:,-1] = 0
A=np.zeros([N-1,N-1])
B=np.identity(N-1)
v = np.zeros([N-1])
vcent = np.zeros([N-1])
veff = np.zeros([N-1])
for i in range(N-1): #Oscillateur harmonique Ponshall
x = x0 + i*delta_x
vcent[i] = L*(L+1)/x**2 #Potentiel centrifuge
v[i] = m_elec*omega**2*(x**2)/2
veff[i] = v[i] +vcent[i]
for i in range(N-1): #Faites attention à la position de l'index car il s'agit d'une matrice triple diagonale.
if i == 0:
A[i,i] = 2/(delta_x**2) + veff[i]
A[i,i+1] = -1/(delta_x**2)
elif i == N-2:
A[i,i-1] = -1/(delta_x**2)
A[i,i] = 2/(delta_x**2) + veff[i]
else:
A[i,i-1] = -1/(delta_x**2)
A[i,i] = 2/(delta_x**2) + veff[i]
A[i,i+1] = -1/(delta_x**2)
eigen, vec= scipy.linalg.eigh(A,B)
print("eigen values_3points=",eigen[0:4])
for j in range(N-1):
for i in range(1,N):
y[j, i] = vec[i-1,j]
#
# for plot
X= np.linspace(x0,x1, N+1)
plt.plot(X, y[0,:],'-',markersize=5,label='y1')
plt.plot(X, y[1,:],'-',markersize=5,label='y2')
plt.plot(X, y[2,:],'-',markersize=5,label='y3')
plt.legend(loc='upper right')
plt.xlabel('X') #étiquette de l'axe des x
plt.ylabel('Y') #étiquette de l'axe y
plt.show()
L=0 eigen values_3points= [ 1.46118173 3.44087896 5.42483146]
** Les valeurs exactes de 1,5, 3,5 et 5,5 sont en accord avec quelques pour cent. ** **
La forme fonctionnelle de $ u_n (r) $ n = 0, 2, 4 est illustrée dans la figure ci-dessous.
L=1 eigen values_3points= [ 2.4997526 4.49899205 6.49760609]
** Les valeurs exactes de 2,5, 4,5 et 6,5 sont en accord avec quelques pour cent. ** **
La forme fonctionnelle de $ u_n (r) $ n = 1, 3, 5 est illustrée dans la figure ci-dessous.
** Si la forme fonctionnelle des changements potentiels, changez simplement la formule pour v [i]. ** **
[2] Kenichi Goto et al. ["Exercice détaillé de la théorie de la mécanique quantique appliquée"](https://www.amazon.co.jp/%E8%A9%B3%E8%A7%A3%E7%90%86%E8 % AB% 96% E5% BF% 9C% E7% 94% A8% E9% 87% 8F% E5% AD% 90% E5% 8A% 9B% E5% AD% A6% E6% BC% 94% E7% BF % 92-% E5% BE% 8C% E8% 97% A4-% E6% 86% B2% E4% B8% 80 / dp / 4320031717), Kyoritsu Publishing, 1982.
Recommended Posts