python - 论量子物理学中的微扰理论模拟
问题描述
我已经开始了 Python 课程,并且一直在寻找开发任何类型代码的机会。最近遇到了一个标准物理问题,可以在 python 中模拟以演示由于扰动引起的能谱。这是声明:
有一个质量为 m 的量子粒子被束缚在一个长度为“l”的二维方盒内。假设盒子有有限的刚度。(提示:您可以在盒子的一个角上定义 xy 平面的原点以及沿 x 和 y 轴的边缘。)
a) 获得能量特征值和特征函数。绘制前三个特征函数并清楚地提及任何简并。
b) 假设盒子受到弱势 V(x,y) = V_0 x y 的扰动。现在计算基态能量的变化,以及第一激发态的分裂。
c) 绘制第一个激发态的近似扰动能量特征函数。
最后,展示小扰动前后能谱的样子。
我只需要一些想法才能开始。欢迎任何建议。
解决方案
你可以在一个非常简单的 Python 程序中做到这一点。只需将方井的波函数定义为 Python 函数以及其能量特征值、插件已知常数的函数,然后绘制结果。例如
import numpy as np
import matplotlib.pyplot as plt
def psi(x, n, a):
assert(n != 0)
return np.sqrt(2/a)*np.sin(n*np.pi*x/a)
L = 100
hbar = 6.626e-34 # joule seconds
m = 1e-19 # kg
x = np.arange(1, L)
y1 = np.array([psi(xi, 1, L) for xi in x])
y2 = np.array([psi(xi, 2, L) for xi in x])
y3 = np.array([psi(xi, 3, L) for xi in x])
plt.plot(x,y1)
plt.plot(x,y2)
plt.plot(x,y3)
plt.show()
def k(n, a):
assert(n != 0)
return n*np.pi/a
def E(n, a, m):
return (hbar**2)*(k(n, a)**2)/(2*m)
E1 = E(1, L, m)
E2 = E(2, L, m)
E3 = E(3, L, m)
假设您了解物理学,其余的应该很容易。Griffiths 的《量子力学导论》是一个很好的参考。