如何利用傅里叶变换计算简谐振子基态与第一激发态的动量矩阵元
简谐振子动量矩阵元计算错误修复方案
你的代码存在两个核心错误导致动量矩阵元计算结果不符合预期:
- 傅里叶变换缺少采样间隔归一化因子:量子力学中的连续傅里叶变换对应离散采样场景时,需要乘以位置采样间隔
dx才能和连续定义匹配,你当前的动量表象波函数计算遗漏了该因子。 - 动量空间内积缺少积分步长:离散场景下计算内积等价于对积分做黎曼和近似,需要乘以动量采样间隔
dp才能得到正确的积分结果。
修正后的代码片段
# 傅里叶变换补全dx归一化因子 groundStateK = (1 / np.sqrt(2 * np.pi * hbar)) * dx * np.fft.fftshift(np.fft.fft(groundState)) firstExcitedStateK = (1 / np.sqrt(2 * np.pi * hbar)) * dx * np.fft.fftshift(np.fft.fft(firstExcitedState)) # 计算矩阵元补全积分步长,位置空间内积也需要乘dx才能匹配解析值 x01 = np.dot(np.conjugate(groundState), np.dot(xMatrix, firstExcitedState)) * dx p01 = np.dot(np.conjugate(groundStateK), np.dot(pMatrix, firstExcitedStateK)) * dp
结果验证
对于你设置的m=1, ω=1, ħ=1的简谐振子,解析结果如下:
- 位置矩阵元
<0|x|1>的理论值为√(1/2) ≈ 0.707 - 动量矩阵元
<0|p|1>的理论值为i√(1/2) ≈ 0.707i,为纯虚数,修正后你的计算结果应该和该值一致。
如果不想切换到动量空间计算,也可以直接在位置空间用动量算符的微分形式或者FGH方法预先生成的动量矩阵直接计算,结果完全等价。
内容的提问来源于stack exchange,提问作者poisonDartFrog
相关产品推荐
相关产品推荐

