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 會有何特點?

TAG:科学计算 | Haskell | 物理学 |