[Python에 의한 과학·기술 계산] 행렬법에 의한 3차원 등방조화 진동자 포텐셜 중의 정상 상태의 슈레딩거 방정식의 해법, 경계값 문제, 양자역학
소개
정상 상태의 슈레딩거 방정식은 차분법에 의해 행렬의 (일반) 고유치 문제에 귀착시킬 수 있다.
본 논문에서는 이 방법을 이용하여 3차원 등방조화 진동자 전위에서 전자의 고유 에너지 및 고유 함수를 결정하는 것을 목적으로 한다.
행렬법의 개요에 대해서는
[Python에 의한 과학·기술 계산] 행렬 형식에 의한 상미분 방정식의 경계값 문제의 해법, 수치 계산 [1]
를 참고해 주시면 감사하겠습니다.
내용
3차원 등방조화 진동자 잠재력
$V(r) =\frac{m_e\omega^2r^2}{2} {\tag {1}}$
에 대한 동경 방향의 파동 함수 $R(r)$에 대한 정상 상태의 슈레딩거 방정식은
$u(r) = r R(r) {\tag{2}}$
마찬가지로,
$-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}}$
에서 준다.
이 방정식은 합류형 초기하 미분 방정식으로 변환할 수 있으며 원점에서 정칙적인 해의 에너지 고유치 $E$의 엄밀해는
$E_n =\frac{\hbar\omega}{2} (n+\frac{3}{2}),\(\n = 4N+2L+3 {\tag{4}})$
으로 알려진 [2]. 여기서 L은 궤도 양자수, N은 자연수 $N=0,1,2,...$이다.
그러므로 에너지 스펙트럼은
$E =\hbar\omega [1.5, 2.5, 3.5, ...] {\tag{5}})$
된다. 그 대부분이 축퇴하고 있다.
이 논문에서는 방정식 (3)을 행렬의 고유 값 문제로 풀어 에너지 고유 값 $ E_n $ 및 고유 함수 $ u_n (r) $를 계산한다.
코드
모든 코드는 Rydberg 원자 단위을 사용합니다.
이것은
전자 질량 $m=1/2$
디락 상수 $\hbar =1$
길이를 보어 $a_{B}=(0.529177 Å)$ 단위,
에너지를 $1Ry=13.6058 eV
하는 것이다.
"""
行列法による境界値問題
3次元等方調和振動子ポテンシャル
"""
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 # 軌道量子数。適宜変更する。
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): #調和振動子ポンシャル
x = x0 + i*delta_x
vcent[i] = L*(L+1)/x**2 # 遠心力ポテンシャル
v[i] = m_elec*omega**2*(x**2)/2
veff[i] = v[i] +vcent[i]
for i in range(N-1): # 3重対角行列なのでindexの位置を気をつけること
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') # x軸のラベル
plt.ylabel('Y') # y軸のラベル
plt.show()
결과
L=0
eigen values_3points= [ 1.46118173 3.44087896 5.42483146]
엄밀치 1.5, 3.5, 5.5와는 수%의 오차내에서 일치하고 있다.
$u_n(r)$n=0, 2, 4의 함수형을 아래 그림에 나타낸다.
L=1
eigen values_3points= [ 2.4997526 4.49899205 6.49760609]
엄밀치 2.5, 4.5, 6.5와는 수%의 오차내에서 일치하고 있다.
$u_n(r)$n=1, 3, 5의 함수형을 아래 그림에 나타낸다.
부록
잠재력의 함수 유형이 변경되면 v [i]의 공식을 변경하면됩니다.
참고문헌
[1] [Python에 의한 과학·기술 계산] 행렬 형식에 의한 상미분 방정식의 경계값 문제의 해법, 수치 계산
[2] 고토 겐이치 외, 『상세해리론 응용 양자역학연습』, 공립 출판, 1982.
Reference
이 문제에 관하여([Python에 의한 과학·기술 계산] 행렬법에 의한 3차원 등방조화 진동자 포텐셜 중의 정상 상태의 슈레딩거 방정식의 해법, 경계값 문제, 양자역학), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sci_Haru/items/c19b59acf41f50a9b09b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
3차원 등방조화 진동자 잠재력
$V(r) =\frac{m_e\omega^2r^2}{2} {\tag {1}}$
에 대한 동경 방향의 파동 함수 $R(r)$에 대한 정상 상태의 슈레딩거 방정식은
$u(r) = r R(r) {\tag{2}}$
마찬가지로,
$-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}}$
에서 준다.
이 방정식은 합류형 초기하 미분 방정식으로 변환할 수 있으며 원점에서 정칙적인 해의 에너지 고유치 $E$의 엄밀해는
$E_n =\frac{\hbar\omega}{2} (n+\frac{3}{2}),\(\n = 4N+2L+3 {\tag{4}})$
으로 알려진 [2]. 여기서 L은 궤도 양자수, N은 자연수 $N=0,1,2,...$이다.
그러므로 에너지 스펙트럼은
$E =\hbar\omega [1.5, 2.5, 3.5, ...] {\tag{5}})$
된다. 그 대부분이 축퇴하고 있다.
이 논문에서는 방정식 (3)을 행렬의 고유 값 문제로 풀어 에너지 고유 값 $ E_n $ 및 고유 함수 $ u_n (r) $를 계산한다.
코드
모든 코드는 Rydberg 원자 단위을 사용합니다.
이것은
전자 질량 $m=1/2$
디락 상수 $\hbar =1$
길이를 보어 $a_{B}=(0.529177 Å)$ 단위,
에너지를 $1Ry=13.6058 eV
하는 것이다.
"""
行列法による境界値問題
3次元等方調和振動子ポテンシャル
"""
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 # 軌道量子数。適宜変更する。
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): #調和振動子ポンシャル
x = x0 + i*delta_x
vcent[i] = L*(L+1)/x**2 # 遠心力ポテンシャル
v[i] = m_elec*omega**2*(x**2)/2
veff[i] = v[i] +vcent[i]
for i in range(N-1): # 3重対角行列なのでindexの位置を気をつけること
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') # x軸のラベル
plt.ylabel('Y') # y軸のラベル
plt.show()
결과
L=0
eigen values_3points= [ 1.46118173 3.44087896 5.42483146]
엄밀치 1.5, 3.5, 5.5와는 수%의 오차내에서 일치하고 있다.
$u_n(r)$n=0, 2, 4의 함수형을 아래 그림에 나타낸다.
L=1
eigen values_3points= [ 2.4997526 4.49899205 6.49760609]
엄밀치 2.5, 4.5, 6.5와는 수%의 오차내에서 일치하고 있다.
$u_n(r)$n=1, 3, 5의 함수형을 아래 그림에 나타낸다.
부록
잠재력의 함수 유형이 변경되면 v [i]의 공식을 변경하면됩니다.
참고문헌
[1] [Python에 의한 과학·기술 계산] 행렬 형식에 의한 상미분 방정식의 경계값 문제의 해법, 수치 계산
[2] 고토 겐이치 외, 『상세해리론 응용 양자역학연습』, 공립 출판, 1982.
Reference
이 문제에 관하여([Python에 의한 과학·기술 계산] 행렬법에 의한 3차원 등방조화 진동자 포텐셜 중의 정상 상태의 슈레딩거 방정식의 해법, 경계값 문제, 양자역학), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sci_Haru/items/c19b59acf41f50a9b09b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
"""
行列法による境界値問題
3次元等方調和振動子ポテンシャル
"""
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 # 軌道量子数。適宜変更する。
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): #調和振動子ポンシャル
x = x0 + i*delta_x
vcent[i] = L*(L+1)/x**2 # 遠心力ポテンシャル
v[i] = m_elec*omega**2*(x**2)/2
veff[i] = v[i] +vcent[i]
for i in range(N-1): # 3重対角行列なのでindexの位置を気をつけること
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') # x軸のラベル
plt.ylabel('Y') # y軸のラベル
plt.show()
L=0
eigen values_3points= [ 1.46118173 3.44087896 5.42483146]
엄밀치 1.5, 3.5, 5.5와는 수%의 오차내에서 일치하고 있다.
$u_n(r)$n=0, 2, 4의 함수형을 아래 그림에 나타낸다.
L=1
eigen values_3points= [ 2.4997526 4.49899205 6.49760609]
엄밀치 2.5, 4.5, 6.5와는 수%의 오차내에서 일치하고 있다.
$u_n(r)$n=1, 3, 5의 함수형을 아래 그림에 나타낸다.
부록
잠재력의 함수 유형이 변경되면 v [i]의 공식을 변경하면됩니다.
참고문헌
[1] [Python에 의한 과학·기술 계산] 행렬 형식에 의한 상미분 방정식의 경계값 문제의 해법, 수치 계산
[2] 고토 겐이치 외, 『상세해리론 응용 양자역학연습』, 공립 출판, 1982.
Reference
이 문제에 관하여([Python에 의한 과학·기술 계산] 행렬법에 의한 3차원 등방조화 진동자 포텐셜 중의 정상 상태의 슈레딩거 방정식의 해법, 경계값 문제, 양자역학), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sci_Haru/items/c19b59acf41f50a9b09b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
[1] [Python에 의한 과학·기술 계산] 행렬 형식에 의한 상미분 방정식의 경계값 문제의 해법, 수치 계산
[2] 고토 겐이치 외, 『상세해리론 응용 양자역학연습』, 공립 출판, 1982.
Reference
이 문제에 관하여([Python에 의한 과학·기술 계산] 행렬법에 의한 3차원 등방조화 진동자 포텐셜 중의 정상 상태의 슈레딩거 방정식의 해법, 경계값 문제, 양자역학), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sci_Haru/items/c19b59acf41f50a9b09b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)