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


登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

9
6
3