分享

轻松解决量子力学中最重要的方程(薛定谔),两行代码就能搞定

 老胡说科学 2022-01-06
在上一篇文章中,我说过所有的科学都是矩阵乘法并简单介绍了稀疏矩阵。今天我将用量子力学的一个应用来证明这一点。量子力学及其怪异的预测被认为很难。尼尔斯·玻尔说过没人懂量子力学。但我认为他的意思是,没有人会根据直觉和日常经验来理解它。有了它的基本公理或假设,人们可以很容易地理解它的数学机制。今天我将向您展示,如何使用Python轻松计算量子力学最著名的薛定谔方程的解。挑战是,只用两行Python就可以完成。
薛定谔方程
薛定谔方程有两个版本。一个包含在另一个里面,但这不是今天的主题。让我们把重点放在这个定态薛定谔方程上,它决定了一个物理系统可以有什么能级,以及相应的定态波函数是什么。定态薛定谔方程如下
其中ℏ是普朗克常数,𝑚是粒子质量,𝑉是粒子的势能。𝐻̂被称为哈密顿算符或哈密顿量。注意,这不是一个边界或初值问题。这是一个特征值问题,因为我们必须确定波函数𝜓和允许的能量特征值𝐸。
怎么解决呢?一种常用的方法是在数值网格上离散波函数。这就把波函数变成了一个数组,把微分算子变成了矩阵。这样做之后,就可以用标准的数值线性代数方法来解决特征值问题了。我们来做一下,具体来说,我们用数值方法来解一维的量子谐振子。但首先,我们需要离散空间。
离散空间
我们可以根据一些基函数来扩展𝜓,但是我们也可以将它放在一个网格上(实际上这只是一个非常特殊的基函数集)。让我们选择后一种方法,它更直观。因为这里是一维空间,所以我们定义了一个网格
对于一些小的Δ𝑥和𝑛是一个整数。然后我们写
本例中的薛定谔方程是
我们也需要它的离散化版本。为了简单起见,我们使用Python包findiff。
两行代码的解薛定谔方程
因此,这里有两行Python,计算量子力学系统的能谱和状态/波函数:
做一些解释。首先定义网格,然后计算稀疏矩阵的特征向量和特征值。我们计算特征值和特征向量的矩阵,当然,是离散的哈密顿量。这是通过使用findiff包和使用.matrix方法来返回微分算子的矩阵表示来最方便地获得的。
为了证明这是可行的,让我们画出前几个波函数和能谱的较低部分:
这看起来就像我们在基础量子力学课程中学到的解。基态是高斯态,激发态是高斯态乘以一个埃尔米特多项式。每增加一层,波函数的节点数就增加一。所以基态没有节点,第一激发态有一个节点,等等。
能谱是这样的:
正如你们所知,振子的频谱在步长为1时等距的基态能量不是零,而是1/2。这是海森堡不确定关系的一个结果。
二维和简并度也是一样
现在让我们在2D中做同样的事情,我们得到了新的效果。汉密尔顿函数现在可以理解了
随着系统的新对称性,我们得到了退化的能级,即同一个特征值有几个不同的状态。在一维情况下,关系是1 - 1。
Python代码并不长:
现在画出能谱,你可以看到基态仍然是唯一的,但是所有的激发态都是简并的。



    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多