量子計算筆記|可能會涉及一點點高量的量子力學基礎(一)
因為主題並非量子力學,所以這裡只是簡要介紹,更詳細的內容可以買本書來看。然後還可以參考@sym cheng好久以前的Live(這篇文章大約是知乎Live剛出現的時候寫的)
量子力學的基本假設
類似於其它的物理理論(比如分析力學的最小作用量原理),量子力學也有一些基本的假設:
原理一:描寫微觀系統狀態的數學量是Hilbert (希爾伯特)空間中的矢量。相差一個複數因子的兩個矢量,描述同一狀態。我們用歸一化的右矢量或左矢量表示系統的狀態,這個希爾伯特空間稱為態空間
原理二:
- 描寫微觀系統的物理量是Hilbert空間中的Hermitian(厄米)算符,也就是說一個Hermitian算符就代表了一個微觀系統的物理量
- 物理量所能取的值,是相應算符的本徵值
- 物理量在狀態中取各值的概率,與態矢量按照的歸一化本徵矢量的展開式中的係數(一般我們稱為概率幅)的復平方成正比。
原理三:
- 微觀系統中每個粒子的廣義坐標(不理解換成直角坐標也行)下的位置算符,與相應的正則動量算符有下列對易關係: 其中當且僅當的時候為,其餘時候都是都是
- 粒子的自旋角動量算符各分量之間的對易關係為:,並且各分量與粒子的位置和動量算符都對易
原理四:微觀系統的狀態隨時間變化的規律是薛定諤方程,這裡是一個常數(實數),稱為這個系統的Hamiltonian(哈密頓量)
原理五:描寫全同粒子系統的態矢量,對於任意一對粒子的對調是對稱的(對調前後完全相同)或者反對稱的(對調前後差一個負號),前者稱為玻色子,後者稱為費米子。這裡全同粒子系統是指由同一種粒子組成的系統,這些粒子每個都是一樣的。
量子計算機的運行就是基於以上五個基本原理。關於基本原理是否正確,以及以上的稱述方式是否嚴格我們不在這裡討論,在具體實現的時候我們更關心這些原理是否能夠幫助我們預測微觀系統的行為。畢竟對於量子力學的詮釋,除了最經典的哥本哈根詮釋,還有諸如流體力學詮釋,Bohm理論(在非局域的情況下依然能用),隨機詮釋等等。我們還沒有找到在實驗中能直接否定它們的方法,所以目前來說信哪個是一種信仰...
從經典的哈密頓量到量子力學的哈密頓量
從經典的哈密頓量到量子力學的哈密頓量是有一些固定的方法的,我們在這裡也不關心這背後的原理具體是什麼,如果對這裡感興趣,可以參看本章的參考文獻。這個具體的方法就是用算符替換經典系統里的動量,角動量等符號,比如在經典力學中的動量將被替換為動量算符
在量子計算中,我們暫時不關心量子力學到底是怎麼回事兒(當然有一些人實際上也在利用量子計算機研究量子力學基礎,這裡就不展開了),我們更加關心的是,一個人造的微觀(量子)結構如何按照預想的方式進行演化。除了我們熟悉的(可能現在還不那麼熟悉的)解析的數學方法,數值計算往往是一個(相對)簡單暴力直接的工具,很多時候很有用。所以首先先介紹一下怎麼數值解一個含時的薛定諤方程。下面的代碼將用Julia語言編寫。
我們要求解的問題是這樣的,有這樣一個哈密頓量
其中是總的演化時間,是,我們將的本徵矢量記為。這個系統的演化就滿足薛定諤方程
而由於是這個Hilbert空間的本徵矢量,總可以表示為它們的線性組合
注意這個Hamiltonian是不顯含時間變數的,那麼我們就可以分離變數,使得在很小的時間裡,下面的式子成立
這是因為在很小的時間裡,我們可以把隨時間的變化忽略(當然這麼說是不嚴格的),把看做常數就有
可以解得
所以對於這樣一個問題,我們就可以用很小的來進行數值計算。代碼如下
mutable struct QuSystem H::Function current_state::Vector current_time::Float64 dt::Float64 function QuSystem( endendfunction evolute!(sys::QuSystem) sys.current_state = expm( sys.current_time += sys.dtend# 初態initial_state = [1/sqrt(2), 1/sqrt(2)]# 總的演化時間T = 1e2# 定義哈密頓量Hamiltonian(t) = 0.5*[1 -1;-1 1]*(1-t/T)+[1 0;0 0]*t/T# 構造這個量子系統,為了節約時間把dt設成1吧,這個步長沒有明顯的誤差qs = QuSystem(Hamiltonian, initial_state, dt=1.0)# 列印一下初態,看看初態是什麼@show qs.current_state#開始演化for i = 1:1e2 evolute!(qs)end# 列印演化結束的態@show qs.current_state
這是用Julia語言寫的,因為中文文檔比較落後,如果你不想看英文文檔可以先看我寫的這個比較簡單的教程。
實際上,這只是數值求解微分方程的方法中最簡單的一種,在JuliaQuantum開源組織的QuDynamics.jl中已經封裝好了很多來自於ODE.jl和Expmv.jl的其它數值方法。這裡就暫且不詳細介紹了,等到後面介紹量子計算的模擬的時候具體說明。
推薦閱讀:
※中科院阿里雲聯合發布11比特雲接入超導量子計算服務
※繼續向量子霸權邁進,谷歌開發72位量子晶元
※超導電路量子信息處理——量子模擬,量子計算和相關理論技術
※微軟正式宣布量子開發工具包現已支持 MacOS,Linux 以及 Python 互通性支持
※量子演算法可以讓人工智慧更快