Numerical Schrodinger Equation
image by agnishom from deviantart
兩個月前接了一個Schrodinger equation數值解的項目,這裡簡單介紹一下結果。此項目計劃開發1D TISE的數值解程序,並且分析相關程序及方法的效率。特別地,我們引入了Haskell作為實現語言之一;通過與純C與Python實現的對比,我們發現Haskell在科學計算中的一些潛力。主程序代碼戳這裡:Phy-David-Zhang/SchdgerEq
程序設計在如下條件下對1D TISE進行數值解
- 任意初始狀態
- 給定邊界條件
- 任意時間無關的勢場
haskell分支包含以Haskell實現的Runge-Kutta 4階演算法;python分支包含以Python實現的Crank-Nicolson 2階演算法。
此外,我們完成了以純C,Haskell,Python實現的,功能相同的RK4數值解程序,並在相同機器條件及程序參數的條件下進行測試。
測試報告戳這裡:Phy-David-Zhang/Scientific-Haskell
我們發現,Haskell程序可以在基本不增加程序複雜度的情況下,獲得純C實現程序的約80%的效率。我們認為這與Haskell的延遲計算(Lazy Evaluation)有關。因此,我們認為Haskell在科學計算上,尤其是對於需要多次遍曆數組的計算上具有一定潛力。
附上4張demo:
一維無限深勢阱中自由Gaussian波包的擴散:Free Gaussian
量子諧振子 n=5 態:Quantum Harmonic Oscillator
Coherent State:Coherent State
量子隧穿:Quantum Tunnelling
註:預覽只在Desktop Version下有效。
推薦閱讀:
※Haskell Book 這本書怎麼樣?
※使用 Cabal hook 構建複雜 Haskell 項目
※有沒有對Haskell中理解monad比較好的代碼例子?
※PureScript 是什麼?有什麼特性
※對大量使用 immutable data structure 的語言,其 VM 和 GC 會有何特點?