計算物理習題演練 - 物理系二年級 曾俊翰
課程名稱►計算物理習題演練 授課教師►電漿所 西村泰太郎老師
心得分享者►物理系二年級 曾俊翰
前言
幾年前,我在科學人雜誌看到一篇台大物理系教授陳凱風的專訪,文章裡提到他大二時加入高能物理實驗室,因為優秀的程式能力嶄露頭角,進而踏入研究領域。看完文章的我深受啟發,認知到利用電腦程式進行數值模擬與分析對科學研究的重要性,因此報名了「計算物理習題演練」這門課,希望能獲取一些先備知識。
授課風格
這門課的授課老師是成大電漿所的西村泰太郎教授,由於是用英語授課,而且一班只有12位同學,老師會很細心地解釋每個觀念,讓每位同學都充分理解。上課的內容大部份是用PPT呈現,數學推導則會使用板書講解。課程進行到一個段落時會有練習時間,需要在電腦上實際操作範例程式,如果有程式上的問題,助教會即時給予個別指導。這門課使用的作業系統是Ubuntu,程式語言為C語言,老師會在第一堂課先教基本的指令語法,讓同學們熟悉終端機的操作,因此沒有程式基礎的同學也不用擔心。這門課一共有三份報告和一次小考。報告的題目是上課內容的延伸問題,除了要撰寫程式計算出答案,也要分析答案是否合理,並用圖表輔佐說明。小考的時間是課程的第四天,目的是測驗同學能否充分理解前三天的課程,基本上只要認真上課就能高分過關。
課程概述
計算物理主要是利用數值方法處理物理問題,透過電腦程式的輔助,加速計算的過程或計算更複雜的問題。這門課一共有三個主題:數值積分與數值微分、以數值方法解微分方程、蒙地卡羅方法(Monte-Carlo method)。
第一堂課的重點是學習並應用「for迴圈」,計算函數的數值積分和微分值。函數的數值積分可以用黎曼積分的定義為基礎,將欲積分的區域切成許多小矩形,計算每塊小矩形的微小面積,最後再加總,便可得到函數在該區域的定積分的近似值。若將積分的區域切得越細,則能得到更精確的積分近似值。函數的數值微分可以利用泰勒展開式,將函數在某一點附近的行為以多項式展開,捨棄高階項並代入該點的函數值,就能得到該點近似的導數值。
第二堂課主要介紹Euler method、Improved Euler method和Leap-frog integration三種方法,用來解決微分方程問題。Euler method是由初始值開始,透過一階導數一步步推演,最終解出函數的全貌。而Improved Euler method是先計算每一步「中點」的一階導數,利用此導數進行推演,降低Euler method中的誤差。Leap-frog integration則適用於「加速度僅與位置相關」的動力系統(如單擺模型),以交錯的方式迭代速度與位置兩個變量,使誤差被控制在一定的範圍內。
第三、四堂課延續前一堂課的內容,討論質點受向心力的運動、雙體問題和多體問題的動力系統模型,並運用多體問題的分析方法模擬帶電粒子的集體行為。在向心力的討論中,假設一個質點A定在座標中心,另一個質點B受到A的重力而運動,根據不同的初始狀態,質點B可能有橢圓、雙曲線兩種不同的運動軌跡。在雙體問題中,考慮質點A也受質點B的重力而運動(作用力與反作用力),此系統的運動可以分解為A、B的質心運動及A、B對質心的轉動,進而完整地解出A、B的運動模式。多體問題通常不具有一般的解析解,但能夠透過初始條件與微分方程的關係式進行數值模擬。老師以Fermi–Pasta–Ulam–Tsingou problem為例,簡單介紹了多體問題的分析與應用。
最後一堂課主要討論粒子的隨機運動,老師引用隨機漫步模型(Random walk)模擬粒子的隨機行為,再利用隨機變數重複模擬多次,得到粒子隨機行走一千步後最終位置的分布情形。這個利用隨機變數多次重複的分析方法即為Monte-Carlo method。老師最後介紹了Message Passing Interface(MPI),提供同學們一個進行平行計算的工具。
心得
我在高中時的資訊課學過C++,大一也修過一個學期的計算機概論,但學完後只記得基本語法,還不具備完成一個專案的能力,也未曾利用所學解決過實際的問題。一方面是因為這些資訊課程比較基礎,練習的題目著重在熟悉語法,而非解決問題;另一方面是我還沒找到感興趣的題目,缺乏實際的目標,也就沒有動力自學程式。然而修完這門課之後,我對解決物理問題的演算法產生很大的興趣,甚至因此加入系上的計算物理實驗室。這門課除了是很友善的計算物理入門課,更讓我親身體會演算法的重要性。對科學工作者而言,設計一套演算法是為了讓電腦「模擬」人類的想法,因此有時必須改寫理論中的公式,使其符合電腦的計算模式。這個改寫的過程需要同時熟悉電腦程式和所屬領域的理論,是理論研究中非常重要的基本能力。
這門課的內容雖然不難,還是需要一定的物理和微積分基礎才能跟得上進度,例如泰勒級數、黎曼積分、克卜勒行星運動定律等。我個人認為比較難的部分是第四堂課中帶電粒子的集體行為,我直到修完系上的固態物理導論才能大致理解這個物理模型的意義。總而言之,這門課非常適合對計算物理有興趣,而且想要動手嘗試的同學們!
關鍵字 #成大模組化 #計算物理 #數值方法 #歐拉方法 #蒙地卡羅方法