nano_exit

基礎的なことこそ、簡単な例が必要だと思うのです。

水素様原子波動関数 (python)

以前、pythonにおける水素様原子のためのLaguerre陪関数について確認した。
koideforest.hatenadiary.com

せっかくなので、pythonで規格化まで含めた水素様原子波動関数スクリプト(原子単位系)を作った。

from scipy.special import assoc_laguerre
from math import factorial

# Laguerre function
def Lnl( n, l, x ):
    alpha = 2 * l + 1
    beta  = n - l - 1
    return assoc_laguerre( x, beta, alpha )

# radial hydrogen like atomic wavefunction in atomic unit
def Rnl( n, l, r, Z ):
    rho = 2. * r / float( n ) * Z
    norm = Z**1.5 * ( 2. / float( n ) )**1.5 \
        * np.sqrt( float( factorial( n - l - 1 ) ) \
        / float( 2 * n * factorial( n + l ) ) )
    return norm * rho**l * np.exp( -0.5 * rho ) * Lnl( n, l, rho )

以下、式の羅列。
水素原子におけるシュレーディンガー方程式の解 - Wikipedia

 \displaystyle
\phi_{nlm}( {\bf r } ) = R_{nl}( \rho ) Y_{lm}( \hat{\bf r } )
\\
\displaystyle
\rho = \frac{ 2r }{ n } \frac{ Z }{ a_0 }
\\
\displaystyle
R( \rho ) = N_R \rho^l u( \rho ) e^{ - \rho / 2 }

 u( \rho )が満たすべき方程式

 \displaystyle
\rho \frac{ d^2 }{ d \rho } u( \rho )
    + ( ( 2 l + 1 ) + 1 - \rho ) \frac{ d }{ d \rho } u( \rho ) 
    + ( n - l - 1 ) \frac{ d }{ d \rho } u( \rho )

ちなみにエネルギーは E_n = - \frac{ 1 }{ 2 n^2 } E_{Hartree} Z^2

(一般)Laguerre微分方程式
Laguerre polynomials - Wikipedia
 \displaystyle
x \frac{ d^2 }{ d x^2 } L^{\alpha}_{\beta}( x )
    + ( \alpha + 1 - x ) \frac{ d }{ d x } L^{\alpha}_{\beta}( x )
    + \beta L^{\alpha}_{\beta}( x )
        = 0

したがって、
 \displaystyle
u(\rho) = L^{2l+1}_{n-l-1}(\rho)
\\
R( \rho ) = N_R \rho^l e^{ - \rho / 2 } L^{2l+1}_{n-l-1}(\rho)

規格化定数は以下の様になる(らしい)。
 \displaystyle
N_R =
    \left( \frac{ Z }{ a_0 } \right)^{3/2}
        \left( \frac{ 2 }{ n } \right)^{3/2} \sqrt{ \frac{ ( n - l - 1 ) ! }{ 2n ( n + l ) ! } }