[Calcul scientifique / technique par Python] Résolution de l'équation de Schledinger à l'état stationnaire dans le potentiel d'oscillateur isotrope tridimensionnel par la méthode matricielle, problème des valeurs aux limites, mécanique quantique

introduction

** 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

[Calcul scientifique / technique par Python] Résolution du problème de la valeur aux limites des équations différentielles ordinaires au format matriciel, calcul numérique [1]

Je vous serais reconnaissant si vous pouviez vous y référer.


Contenu

Potentiel d'oscillateur harmonique isotrope 3D V(r) = \frac{m_e \omega^2r^2}{2} {\tag {1}} L'équation de Schrödinger en régime permanent pour la fonction d'onde radiale $ R (r) $ par rapport à

u(r) = r R(r) {\tag{2}}

Comme

-u''(r)+\frac{2 m_e}{\hbar^2}(V(r)+\frac{L(L+1)\hbar^2}{2m_e r^2}) = E \ u(r) {\tag {3}} Peut être donné.

** 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 **

E_n = \frac{\hbar \omega}{2} (n+\frac{3}{2}),\ ( \ n = 4N+2L+3 {\tag{4}})

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 E = \hbar \omega [1.5, 2.5, 3.5, ...] {\tag{5}})

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.


code

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

résultat

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.

t.png

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. t.png


Addenda

** Si la forme fonctionnelle des changements potentiels, changez simplement la formule pour v [i]. ** **


Les références

[1] [Calcul scientifique / technique par Python] Résolution du problème des valeurs aux limites des équations différentielles ordinaires au format matriciel, calcul numérique

[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

[Calcul scientifique / technique par Python] Résolution de l'équation de Schledinger à l'état stationnaire dans le potentiel d'oscillateur isotrope tridimensionnel par la méthode matricielle, problème des valeurs aux limites, mécanique quantique
[Calcul scientifique / technique par Python] Résolution d'une équation de Schrödinger unidimensionnelle en régime permanent par méthode de tir (2), potentiel d'oscillateur harmonique, mécanique quantique
[Calcul scientifique / technique par Python] Résolution de l'équation de Schrödinger unidimensionnelle à l'état stationnaire par méthode de tir (1), potentiel de type puits, mécanique quantique
[Calcul scientifique / technique par Python] Résolution du problème de la valeur aux limites des équations différentielles ordinaires au format matriciel, calcul numérique
[Calcul scientifique / technique par Python] Résolution de l'équation de Newton unidimensionnelle par la méthode Runge-Kutta du 4ème ordre
[Calcul scientifique / technique par Python] Solution numérique de l'équation de Laplace-Poisson bidimensionnelle pour la position électrostatique par la méthode Jacobi, équation aux dérivées partielles elliptiques, problème des valeurs aux limites
[Calcul scientifique / technique par Python] Solution numérique d'un problème d'oscillateur harmonique unidimensionnel par vitesse Méthode de Berle
[Calcul scientifique / technique par Python] Solution numérique du problème des valeurs propres de la matrice par multiplication de puissance, algèbre linéaire numérique
[Calcul scientifique / technique par Python] Marche aléatoire 2D (problème de marche ivre), calcul numérique
[Calcul scientifique / technique par Python] Comparaison des vitesses de convergence de la méthode SOR, de la méthode Gauss-Seidel et de la méthode Jacobi pour l'équation de Laplace, équation différentielle partielle, problème des valeurs aux limites
[Calcul scientifique / technique par Python] Ajustement par fonction non linéaire, équation d'état, scipy
[Calcul scientifique / technique par Python] Résolution de problèmes de valeurs propres (généralisés) en utilisant numpy / scipy, en utilisant des bibliothèques
[Calcul scientifique / technique par Python] Résolution de l'équation différentielle ordinaire du second ordre par la méthode Numerov, calcul numérique
[Calcul scientifique / technique par Python] Calcul numérique pour trouver la valeur de la dérivée (différentielle)
[Calcul scientifique / technique par Python] Solution analytique sympa pour résoudre des équations
[Calcul scientifique / technique par Python] Calcul de matrice inverse, numpy
[Calcul scientifique / technique par Python] Solution numérique d'une équation différentielle ordinaire du second ordre, problème de valeur initiale, calcul numérique
[Calcul scientifique / technique par Python] Simulation de Monte Carlo par la méthode metropolis de la thermodynamique du système de spin ascendant 2D
[Calcul scientifique / technique par Python] Résolution d'équations linéaires simultanées, calcul numérique, numpy