Mathematica实例——利用Mathematica演示量子力学中的波包演化

1背景介绍

在量子力学中,一个粒子对应一个在时空中演化的波函数Mathematica实例——利用Mathematica演示量子力学中的波包演化的图1,与经典力学中仅仅具有质量、位置、速度等属性的点粒子有很大不同。这种"波粒二象性"常常给初学者带来理解上的困难。我们利用Mathematica软件对一维情形下的几个经典量子力学问题进行了数值模拟,包括高斯波包在自由空间的传播和扩散、遇到刚性边界时的反射、遇到势垒或势阱时的反射和透射,以及在谐振子势场中的准经典振动。Mathematica具有强大的符号和数值计算功能,以及简单易用的Manipulate控件,这使得我们可以快速实现代码并方便地演示结果。我们将展示量子波包在不同势场中随时间的演化,这有助于对量子力学的物理图像和基本概念的理解,也为更进一步的探索提供启发。

 

2物理模型和模拟设定

一维空间中,单粒子波函数Mathematica实例——利用Mathematica演示量子力学中的波包演化的图2的动力学由薛定谔方程

Mathematica实例——利用Mathematica演示量子力学中的波包演化的图3

描述。在给定空间势场Mathematica实例——利用Mathematica演示量子力学中的波包演化的图4和初始波函数Mathematica实例——利用Mathematica演示量子力学中的波包演化的图5后,波函数的后续演化就完全确定了。为了方便,这里我们取“自然单位”,将方程中的物理常量Mathematica实例——利用Mathematica演示量子力学中的波包演化的图6Mathematica实例——利用Mathematica演示量子力学中的波包演化的图7取为1。这样,方程变成 Mathematica实例——利用Mathematica演示量子力学中的波包演化的图8,取最简单的一阶欧拉格式,可以写出差分方程

Mathematica实例——利用Mathematica演示量子力学中的波包演化的图9,当时间步长Mathematica实例——利用Mathematica演示量子力学中的波包演化的图10足够小,差分方程的迭代就可以近似给出薛定谔方程的解Mathematica实例——利用Mathematica演示量子力学中的波包演化的图11。其中,对空间的二阶偏导Mathematica实例——利用Mathematica演示量子力学中的波包演化的图12也要用差分格式

Mathematica实例——利用Mathematica演示量子力学中的波包演化的图13

来代替。公式(2)(3)就是数值模拟用到的核心方程。

 

在模拟中,我们使用高斯波包作为初始波函数。一个归一化的高斯波包可以写成

Mathematica实例——利用Mathematica演示量子力学中的波包演化的图14

。容易看出,Mathematica实例——利用Mathematica演示量子力学中的波包演化的图15的概率密度Mathematica实例——利用Mathematica演示量子力学中的波包演化的图16是以Mathematica实例——利用Mathematica演示量子力学中的波包演化的图17为中心,以Mathematica实例——利用Mathematica演示量子力学中的波包演化的图18为方差的高斯分布。实际上,其动量表象波函数也具有对称的形式,概率密度|Mathematica实例——利用Mathematica演示量子力学中的波包演化的图19是以Mathematica实例——利用Mathematica演示量子力学中的波包演化的图20为中心,以Mathematica实例——利用Mathematica演示量子力学中的波包演化的图21为方差的高斯分布。因此,高斯波包具有明确的物理意义,我们可以把它大致想成一个具有坐标Mathematica实例——利用Mathematica演示量子力学中的波包演化的图22,动量Mathematica实例——利用Mathematica演示量子力学中的波包演化的图23的“准经典”粒子,只是其坐标和动量的分布有一定的弥散,体现了量子力学中的不确定原理。我们可以期待它的演化行为既具有一定的“经典性”,也有一定的“量子性”,从而更好地体会量子力学与经典力学的区别和联系。

 

为了进行模拟,我们需要合理的边界条件。我们将高斯波包置于区间Mathematica实例——利用Mathematica演示量子力学中的波包演化的图24中,认为区间之外的波函数为零,这相当于把粒子放在Mathematica实例——利用Mathematica演示量子力学中的波包演化的图25的一维盒子中。可以预期,当波包的空间局域性较好,且波包中心距离边界较远时,波包的演化与其在自由空间中的演化差别不大,模拟结果也证实了这一点。另外,我们可以对模拟过程涉及的一些特征尺度进行估计。高斯波包具有特征波长Mathematica实例——利用Mathematica演示量子力学中的波包演化的图26,因此空间离散步长Mathematica实例——利用Mathematica演示量子力学中的波包演化的图27需要满足Mathematica实例——利用Mathematica演示量子力学中的波包演化的图28;其特征能量Mathematica实例——利用Mathematica演示量子力学中的波包演化的图29,在设定势场Mathematica实例——利用Mathematica演示量子力学中的波包演化的图30时应以Mathematica实例——利用Mathematica演示量子力学中的波包演化的图31作单位;同时,特征能量也给出一个内禀时间尺度Mathematica实例——利用Mathematica演示量子力学中的波包演化的图32,时间离散步长 Mathematica实例——利用Mathematica演示量子力学中的波包演化的图33至少要满足Mathematica实例——利用Mathematica演示量子力学中的波包演化的图34,考虑到一阶欧拉格式的稳定性较差,Mathematica实例——利用Mathematica演示量子力学中的波包演化的图35需要进一步减小,以迭代稳定为准(可以用波函数是否保持归一化来判断迭代的稳定性)。最后,我们设定波包中心初始位于Mathematica实例——利用Mathematica演示量子力学中的波包演化的图36,并观察其大致移动到Mathematica实例——利用Mathematica演示量子力学中的波包演化的图37这个过程,这样一来,时间窗口Mathematica实例——利用Mathematica演示量子力学中的波包演化的图38,迭代次数Mathematica实例——利用Mathematica演示量子力学中的波包演化的图39

 

3程序设计和代码实现

利用Mathematica,我们可以得到非常简洁的代码实现。值得注意的是,在处理差分方程时,需要把波函数的实部和虚部分开迭代,才能保证稳定性,也就是需要避开复数的计算。我们猜测这与一阶欧拉格式的稳定性较差有关。如果改进差分格式,应该可以直接用复数进行计算。


Mathematica实例——利用Mathematica演示量子力学中的波包演化的图40Mathematica实例——利用Mathematica演示量子力学中的波包演化的图41Mathematica实例——利用Mathematica演示量子力学中的波包演化的图42

在上面我们已经得到了一系列波函数概率分布的“快照”(每迭代200步记录一次),使用Mathematica的Manipulate控件,可以很方便地将结果演示出来。

Mathematica实例——利用Mathematica演示量子力学中的波包演化的图43

上面的代码会生成一个可以拖动的动态交互控件,我们可以方便地看到不同时刻的波包形态。

Mathematica实例——利用Mathematica演示量子力学中的波包演化的图44

 

4结果演示与讨论

(1)波包在自由空间的传播和展宽

Mathematica实例——利用Mathematica演示量子力学中的波包演化的图45,波包就在自由空间传播,演化过程如下图所示。我们可以看到波包基本上呈匀速移动,并且在传播过程中不断展宽。

Mathematica实例——利用Mathematica演示量子力学中的波包演化的图46

实际上,自由空间中的Mathematica实例——利用Mathematica演示量子力学中的波包演化的图47可以严格解出,容易得到波包的中心位置Mathematica实例——利用Mathematica演示量子力学中的波包演化的图48,波包的方差变化Mathematica实例——利用Mathematica演示量子力学中的波包演化的图49。我们可以把数值结果与理论解进行比较,可以发现还是符合得比较好的,如下面所示。两者之间的偏差可能来自于边界条件的影响。

Mathematica实例——利用Mathematica演示量子力学中的波包演化的图50

Mathematica实例——利用Mathematica演示量子力学中的波包演化的图51

(2)波包遇到刚性边界时的反射

Mathematica实例——利用Mathematica演示量子力学中的波包演化的图52处设置一个刚性边界,例如取Mathematica实例——利用Mathematica演示量子力学中的波包演化的图53Mathematica实例——利用Mathematica演示量子力学中的波包演化的图54Mathematica实例——利用Mathematica演示量子力学中的波包演化的图55Mathematica实例——利用Mathematica演示量子力学中的波包演化的图56,可以看到波包在遇到边界时强烈震荡,然后被反射回来。仔细观察可以看出,波包差不多回到原来的位置,说明这个过程中波包的动能没有变化,只是动量反号。

Mathematica实例——利用Mathematica演示量子力学中的波包演化的图57

(3)势垒的散射(隧穿效应)

Mathematica实例——利用Mathematica演示量子力学中的波包演化的图58处放置一个宽为Mathematica实例——利用Mathematica演示量子力学中的波包演化的图59,高为Mathematica实例——利用Mathematica演示量子力学中的波包演化的图60的势垒,可以观察到波包与势垒的散射。可以看到,波包与势垒相互作用后,最终劈裂成了两部分,一部分是透射波包,继续向前传播,另一部分是反射波包,反向传播回来。这就是量子力学中的隧穿效应,粒子有一定几率越过势垒,发生隧穿。如果改变势垒的形状,还可以进一步研究隧穿几率与势垒形状的关系。

Mathematica实例——利用Mathematica演示量子力学中的波包演化的图61

(4)势阱的散射

我们将势垒改成势阱,就得到波包与势阱的散射问题。这里是在Mathematica实例——利用Mathematica演示量子力学中的波包演化的图62处放置了宽为Mathematica实例——利用Mathematica演示量子力学中的波包演化的图63,深为Mathematica实例——利用Mathematica演示量子力学中的波包演化的图64的势阱,可以看到,波包遭遇势阱后发生劈裂,最后也是分成透射波包和反射波包。这表明了量子力学的一维散射问题的一般性:不论是势垒还是势阱,对量子波包来说都像一个“障碍物”,有一定的透过率和反射率。这与经典力学是很不相同的,在经典力学里,一个粒子要么动能高于势垒而透过势垒,要么动能不足被势垒反射回来,而势阱则根本不会成为障碍物。

Mathematica实例——利用Mathematica演示量子力学中的波包演化的图65

(5)波包在谐振子势中的准经典运动

Mathematica实例——利用Mathematica演示量子力学中的波包演化的图66,我们就得到了非常熟悉的谐振子势。非常有意思的是,在谐振子势中,波包表现得很像“真正的”经典粒子:不但在做周期性振动,而且波包本身不再随着时间增加而展宽,其局域性得到了很好的保持,而局域性正是经典粒子的重要特性。这种准经典运动的发生并不是显而易见的,背后有着非平凡的物理,实际上,我们可以认为谐振子势和高斯波包都具有某种特殊性,它们的“因缘际会”才导致了这一现象的发生。

Mathematica实例——利用Mathematica演示量子力学中的波包演化的图67

 

5总结

通过这个简单的模拟,我们可以看到很多有趣的量子物理现象。由于本文的初衷不是要探讨物理问题,这里没有进行深入讨论。实际上可以研究的情形还很多,比如周期性结构对波包的调制(滤波)。总之,Mathematica是非常好用的计算和演示工具,特别适合实验性的探索和快速的原型设计,推荐大家多玩多探讨!

最后,有需要欢迎通过微信公众号联系我们。

微信公众号.jpg


Mathematica量子力学高斯波包谐振子振动

Mathematica实例——利用Mathematica演示量子力学中的波包演化的评论6条

Mathematica实例——利用Mathematica演示量子力学中的波包演化的相关案例教程

为何选择 Mathematica ? 因为设计原理至上 历经超过三十年的基于设计原理的潜心研发,Mathematica 现已成为世界领先的顶级计算平台。 自动化 自动化是实现高效率计算的关键。与其他系统不同,Mathematica 将智能自动化应用于系统的各个方面,从算法选择到绘图布局和用户界面设计。您无需精通算法,便可得到可靠的高质量结果— 即使您是一位专家,也可以更快地得到结果。 Mathem
在多体装配时会大量用到接触,接触是常见的非线性源头,经常面临收敛困难问题。不恰当的接触定义会导致接触不稳定,求解收敛困难,会大大增加求解时间甚至收敛失败。本文将从接触的定义和核检、求解定义设置、不收敛诊断常用方法这些方面介绍ANSYS非线性接触。 接触选项设置建议 1、接触类型的选择 针对大部分接触问题,可以采用接触选项中“Program Control”得到较好的结果。程
在 80 年代,我参加了一个科学演讲,是关于一种相当麻烦的方法来并行化当时存在的一个符号计算系统,我很快意识到我可以更优雅地为 Mathematica 带来并行性,这要归功于它的符号通信协议 MathLink。这个协议让我不仅可以在同时运行的 Mathematica 内核之间交换数据,还可以交换程序。 结果是一个完全用Mathematica编写的包,称为 Parallel Computing To
电子产品在使用过程中,难免会受到各种形式的振动冲击,这类激励通常具有随机性和不确定性,迫使产品局部承受较大交变应力进而引起振动疲劳失效。本文将以显卡模型为例,阐述如何使用ANSYS Mechanical联合ANSYS nCode DesignLife进行随机振动疲劳仿真。 大咖慧网络培训 2022年5月24日-26日,安世亚太大咖慧推出电子行业疲劳寿命专题线上培训,专题讲座包含:随机振动载荷下支撑
ZOS-API 是一种可以使外部应用程序通过 .NET 接口连接到 OpticStudio 的扩展编程语言。本文介绍了外部应用程序 Mathematica 中独立方法的示例。 作者 Erin Elliott 附件下载 联系工作人员获取附件 简介 ZOS-API 支持两种类型的连接:“独立”,外部应用程序启动自己的 OpticStudio 副本进行交互;“交互式”,已经运行的 OpticStudio
硕士/复合材料工程师
影响力
粉丝
内容
获赞
收藏
    项目客服
    培训客服
    6 3