在上一篇文章中,我說過所有的科學都是矩陣乘法并簡單介紹了稀疏矩陣。今天我将用量子力學的一個應用來證明這一點。量子力學及其怪異的預測被認為很難。尼爾斯·玻爾說過沒人懂量子力學。但我認為他的意思是,沒有人會根據直覺和日常經驗來理解它。有了它的基本公理或假設,人們可以很容易地理解它的數學機制。今天我将向您展示,如何使用Python輕松計算量子力學最著名的薛定谔方程的解。挑戰是,隻用兩行Python就可以完成。
薛定谔方程
薛定谔方程有兩個版本。一個包含在另一個裡面,但這不是今天的主題。讓我們把重點放在這個定态薛定谔方程上,它決定了一個物理系統可以有什麼能級,以及相應的定态波函數是什麼。定态薛定谔方程如下
其中ℏ是普朗克常數,是粒子質量,是粒子的勢能。̂被稱為哈密頓算符或哈密頓量。注意,這不是一個邊界或初值問題。這是一個特征值問題,因為我們必須确定波函數和允許的能量特征值。
怎麼解決呢?一種常用的方法是在數值網格上離散波函數。這就把波函數變成了一個數組,把微分算子變成了矩陣。這樣做之後,就可以用标準的數值線性代數方法來解決特征值問題了。我們來做一下,具體來說,我們用數值方法來解一維的量子諧振子。但首先,我們需要離散空間。
離散空間
我們可以根據一些基函數來擴展,但是我們也可以将它放在一個網格上(實際上這隻是一個非常特殊的基函數集)。讓我們選擇後一種方法,它更直觀。因為這裡是一維空間,所以我們定義了一個網格
對于一些小的Δ和是一個整數。然後我們寫
本例中的薛定谔方程是
我們也需要它的離散化版本。為了簡單起見,我們使用Python包findiff。
兩行代碼的解薛定谔方程
因此,這裡有兩行Python,計算量子力學系統的能譜和狀态/波函數:
做一些解釋。首先定義網格,然後計算稀疏矩陣的特征向量和特征值。我們計算特征值和特征向量的矩陣,當然,是離散的哈密頓量。這是通過使用findiff包和使用.matrix方法來返回微分算子的矩陣表示來最方便地獲得的。
為了證明這是可行的,讓我們畫出前幾個波函數和能譜的較低部分:
這看起來就像我們在基礎量子力學課程中學到的解。基态是高斯态,激發态是高斯态乘以一個埃爾米特多項式。每增加一層,波函數的節點數就增加一。所以基态沒有節點,第一激發态有一個節點,等等。
能譜是這樣的:
正如你們所知,振子的頻譜在步長為1時是等距的基态能量不是零,而是1/2。這是海森堡不确定關系的一個結果。
二維和簡并度也是一樣
現在讓我們在2D中做同樣的事情,我們得到了新的效果。漢密爾頓函數現在可以理解了
随着系統的新對稱性,我們得到了退化的能級,即同一個特征值有幾個不同的狀态。在一維情況下,關系是1 - 1。
Python代碼并不長:
現在畫出能譜,你可以看到基态仍然是唯一的,但是所有的激發态都是簡并的。
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!