Numerov算法解一维无限深势阱的问题 (含量子力学导论)

编程入门 行业动态 更新时间:2024-10-27 18:26:53

Numerov算法解一维无限深势阱的问题 (含<a href=https://www.elefans.com/category/jswz/34/1742849.html style=量子力学导论)"/>

Numerov算法解一维无限深势阱的问题 (含量子力学导论)

写在前面

  • 原子物理期末论文要写一篇和量子隧穿的问题,然后,啊,写不出来.
  • 请有志之人给点帮助!!!球球了!
  • 之中可能会遇到这样的微分方程

  • 所以需要学学Numerov算法来解决一些问题.

均匀格点上的Numerov算法

  • 推导
  • 事实上你可以自己推导出一种算法,然后坚称这是你自己发明的

  • 整理:

 

一维无限深势阱

波函数

边界条件:

显然,在无限深势阱中的能量是分立的

为了说明这个问题,我们首先要回顾一下量子力学导论的部分

量子力学导论回顾

  • 禁闭的波必然导出量子化的条件

习题选(杨福家 第五版)

程序设计

  • 该问中,能量的解析解为

  • 我们将不断调整的值,
  • 代入上式,得:

  • 为了能够找到合适的k值,我们应当设置一个tol值,当满足边界条件时,记录当前的k值

完整代码

import numpy as np
import matplotlib.pyplot as pltdef numerov(f,y0,dy0):h = 0.01y = np.zeros(len(f))y[0] = y0y[1] = y0 + h * dy0for i in range(1,len(f)-1):k1 = (1 + h**2/12. * f[i+1])k2 = 2 * (1 + h**2/12. * f[i])k3 = (1 + h**2/12. * f[i])y[i+1] = (k2*y[i] - k3*y[i-1] - h**2 * f[i] * y[i])/k1return ytmin,tmax = 0,1
T = np.linspace(tmin,tmax,int((tmax-tmin)/0.01))#归一化之前波函数启动点处的导数值可以随意取y0  = 0
dy0 = 1tol = 10 ** -6
k = 0
dk = 0.0001
u = 1
K,Kx = [],[]for n in range(1000000):F = lambda r:k**2f = np.array([F(i) for i in T])Y = numerov(f,y0,dy0)if abs(Y[-1]) <= tol:K.append(Y[-1])Kx.append(k)if not n%5000:print(n/1000000)k += dkimport joblib
joblib.dump(K,"model-Numerov-infinity-K.pkl")
joblib.dump(Kx,"model-Numerov-infinity-Kx.pkl")#plt.plot(Kx,K)
plt.scatter(Kx,K,s=2,c="red")
plt.plot(Kx,K,linewidth=2,c="blue")
plt.scatter([i*np.pi for i in range(1,30)],[0 for i in range(29)],s=2,c="green")
#plt.scatter([np.pi*i for i in range(10)],[0.03 for i in range(10)],s=1)
plt.show()

图像

 

  •  它的误差在1e-6的量级上,至少说明还是和理论符合的差不多的

更多推荐

Numerov算法解一维无限深势阱的问题 (含量子力学导论)

本文发布于:2024-03-10 03:49:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1726933.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:量子力学   导论   算法   Numerov   深势阱

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!