索引 / 001 ZH-TW
Computational Physics: Problem Solving with Python(計算物理:以 Python 解決問題) cover

物理學

物理學

Computational Physics: Problem Solving with Python(計算物理:以 Python 解決問題)

Rubin H. Landau; Manuel J. Páez; Cristian C. Bordeianu

英文原名: Computational Physics: Problem Solving with Python

一本涵蓋範圍廣泛的計算物理教科書,透過以 Python 撰寫的物理範例講授數值方法。每個主題都結合物理、演算法與程式實作,內容從誤差與數值積分,經過微分方程、傅立葉分析與蒙地卡羅方法,延伸到量子力學、流體,本版更納入機器學習與量子計算。

需要的基礎: 普通物理與微積分,並具備一些微分方程與線性代數基礎;有程式設計經驗會有幫助,不過書中會介紹 Python 與其科學計算函式庫。

難度等級
中級
學術層次
大學部
computational physicspythonnumerical methodssimulation教科書

01 / 導讀

導讀

引用

Landau, R. H., Páez, M. J., & Bordeianu, C. C. (2024). Computational Physics: Problem Solving with Python (4th ed.). Wiley-VCH.

章節概要

第四版共分四部分、27章,正文約540頁,另有程式碼與動畫附錄、參考文獻和索引。第1章闡明瞭全書的理念:計算物理被看作聯結物理學、應用數學和電腦科學的橋梁,通過一個動手實踐、以探究為導向的迴圈來教學——先有問題,再有理論或模型、演算法,最後評估結果。幾乎每一章都以一個引出這些步驟的“主題問題”開篇。全書使用Python;早期版本使用過Java、Fortran和C。出版社說,全書前三分之一奠定科學計算的基礎,後三分之二講授更深入的主題,本版新增了關於量子計算、機器學習和廣義相對論的章節。以下條目按全書四個部分對章節分組,並依據包括小節標題在內的目錄。

第1章:引言

說明計算物理在科學中的位置、本書的主題、約60個影片講座模組(現為mp4影片和PDF幻燈片)以及所提供的程式碼,並概述Python生態(Jupyter、NumPy、Matplotlib、Pandas、SymPy、VPython,推薦使用Anaconda發行版)。作者建議一個學季(一個季度)的課程大致使用全書的前三分之一,兩個學季的課程使用其餘部分,並說這些材料可以講滿一整年。

第2–3章:軟體基礎;誤差與不確定度

第2章講計算機的數的表示(IEEE浮點數)、Python簡明教程、關於上溢與下溢及機器精度的程式設計熱身,以及用VPython和Matplotlib繪圖(二維、三維曲面和動畫)。第3章講誤差的型別、相減抵消、舍入誤差的累積、冪級數的誤差,以及用遞推計算貝塞爾函數時的誤差。

第4–5章:蒙地卡羅模擬;微分與積分

蒙地卡羅從隨機數開始,進而講隨機行走(包括在大腦中以及蛋白質摺疊中的例子)、自發衰變和隨機分佈的檢驗。第5章講前向差分、中心差分與外推差分,梯形法則與辛普森法則,高斯求積,蒙地卡羅積分,方差縮減,重要性抽樣與馮·諾依曼舍選法。

第6–8章:試錯搜尋與資料擬合;矩陣計算與N維搜尋;微分方程與非線性振動

第6章藉助量子束縛態和磁化問題引入二分搜尋與牛頓–拉弗森搜尋,然後講拉格朗日插值、三次樣條和最小二乘的資料擬合,最後以對共振的非線性擬合結束。第7章通過弦上的質量塊和氫超精細結構中的自旋態來講Python與NumPy中的矩陣,並有一節講向量化。第8章回顧常微分方程以及尤拉法、龍格–庫塔法和預估–校正演算法,然後將它們應用於非線性振子、共振、拍和摩擦。

第9–10章:傅立葉分析;小波與主成分分析(第二部分:資料科學)

傅立葉級數與變換、離散變換與混疊、噪聲濾波和快速傅立葉變換;隨後講波包與不確定性原理、短時傅立葉變換、小波變換以及主成分分析。

第11–12章:類神經網路與機器學習;量子計算

第11章從單個神經元搭建一個簡單的類神經網路,然後講TensorFlow、scikit-learn、聚類、Keras以及用OpenCV進行影像處理。第12章(與G. He合著)介紹狄拉克符號、量子位元、糾纏、邏輯閘、用IBM Quantum和Qiskit程式設計、量子傅立葉變換、格羅弗搜尋演算法和肖爾分解演算法。

第13–16章:常微分方程的應用;分形與統計生長模型;非線性種群動力學;連續系統的非線性動力學(第三部分:應用)

任意勢下的本徵值、經典混沌散射、有空氣阻力的拋體運動和行星軌道;從謝爾賓斯基墊片到擴散限制凝聚的分形;邏輯斯諦對映、分岔圖和捕食者–獵物模型;以及混沌擺、相空間和勞侖茲吸引子等其他混沌系統。

第17–20章:熱力學模擬與費曼路徑積分;分子動力學模擬;廣義相對論;積分方程

伊辛鏈、Metropolis演算法和路徑積分量子力學;用Verlet演算法的分子動力學;愛因斯坦場方程、光線偏折、近日點進動和蟲洞;以及非局域勢和動量空間中的散射。

第21–24章:偏微分方程回顧、靜電學與弛豫;熱流與蛙跳法;弦與膜的波;量子波包與電磁波(第四部分:偏微分方程的應用)

用有限差分和弛豫法求解拉普拉斯方程;用蛙跳法和克蘭克–尼科爾森演算法求解熱方程;弦與膜的波;以及含時薛丁格方程和時域有限差分的馬克士威方程求解器。

第25–27章:震波與孤子波;流體動力學;有限元靜電學

伯格斯方程、KdV孤子和正弦–戈登方程;渦度形式的納維–斯托克斯方程;以及針對兩塊板靜電問題的有限元方法。

核心概念

第一部分:基礎(第1–8章)

  • 浮點運算與誤差:IEEE數、舍入誤差和相減抵消。
  • 蒙地卡羅方法:隨機行走、衰變模擬和蒙地卡羅積分。
  • 搜尋與擬合:二分法、牛頓–拉弗森法、樣條和最小二乘。
  • 常微分方程演算法:尤拉法、龍格–庫塔法和預估–校正法。

第二部分:資料科學(第9–12章)

  • 傅立葉與小波分析:離散變換、FFT、小波和主成分。
  • 類神經網路與機器學習:TensorFlow、Keras和scikit-learn的例子。
  • 量子計算:量子位元、量子門、格羅弗演算法與肖爾演算法。

第三、四部分:應用與偏微分方程(第13–27章)

  • 非線性動力學與混沌:邏輯斯諦對映、混沌擺和勞侖茲吸引子。
  • 有限差分與有限元方法:弛豫法、蛙跳法、克蘭克–尼科爾森法和有限元法。
  • 波動現象:弦波、波包、震波和孤子。

評析

優點

  • 在做中學。 第1章提出了“問題—模型—演算法—評估”的明確迴圈,幾乎每章都以一個主題問題開篇。作者為大多數問題提供了程式,並建議學生撰寫簡短的實驗報告,包含所解的方程、方法、程式碼、視覺化和評述。
  • 應用範圍廣。 目錄從誤差與求積,一直到路徑積分、分子動力學、廣義相對論、流體和有限元,為課程提供了許多專案選擇。
  • 配套材料。 據第1章和出版社介紹,約60個附幻燈片的影片講座模組、程式碼以及早期版本的筆記本版本都與本書配套。
  • 新的主題。 第四版新增了機器學習、量子計算和廣義相對論的章節,出版社把這說成是對資料科學更加重視。

局限

  • 是概覽,而非基礎理論教科書。 作者說,本書不是對計算物理基礎的學術性闡述,而是一份概覽,其難度適合大學部學生,“也許有些章節的後半部分除外”。
  • Python的介紹很簡短。 第2章是唯一專門講程式設計的章節,作者建議讀者到外部教程和書籍學習Python,因此初學者可能需要另外的Python學習資料。
  • 書中有些工具已經過時。 書中自己指出,Visual(VPython)模組已不再受支援,現在只能在Jupyter或Web VPython中使用,這關係到第2章的視覺化小節。
  • 廣度限制了深度。 27章只有約540頁,許多章節(如第18章和第19章)不足20頁,因此每個應用都只是入門,而不是完整論述。

在課程中的定位

在計算物理書單中,蘭道(Landau)、帕埃斯(Páez)與博爾代亞努(Bordeianu)這本書是通過求解物理問題來講授數值方法的、內容廣泛且應用豐富的教材。紐曼(Newman)的《Computational Physics》是最接近的替代選擇,同樣以Python的例題和練習為基礎。普林斯頓大學圖書館目錄所記錄的紐曼目錄,以較少的章節涵蓋了類似的核心(精度、積分與微分、方程、傅立葉變換、常微分方程、偏微分方程、蒙地卡羅),而蘭道這本書增加了資料科學章節和一長串應用章節。金德(Kinder)與納爾遜(Nelson)的《A Student's Guide to Python for Physical Modeling》是為沒有程式設計經驗的學生寫的簡短實用指南,可以在讀第2章之前閱讀。

普雷斯(Press)等人的《Numerical Recipes》是附有完整C++程式的數值方法參考書,作者自己把它列為數值方法的標準通用讀物;蒂森(Thijssen)的《Computational Physics》是面向研究生、講授凝聚態物理與化學研究方法的論述;泰勒(Taylor)的《An Introduction to Error Analysis》講實驗資料的不確定度,可與第3章互補。蘭道這本書介於工具入門與蒂森的研究級方法之間。

如何使用本書

本書面向已學完入門物理和微積分、並瞭解一些微分方程和線性代數的物理、工程和材料科學專業學生。有程式設計經驗會有幫助,但不是必需的;作者期望讀者能夠執行並修改示例程式碼。

實用的安排:

  • 核心(第1–8章): Python、誤差、蒙地卡羅、微分與積分、搜尋與擬合、矩陣與常微分方程。每個主題問題都動手寫程式碼。
  • 資料科學(第9–12章): 第9章的傅立葉分析用途最廣;第10–12章可以按興趣選讀。
  • 應用(第13–27章): 根據專案挑選。第13章和第16章直接建立在第8章的常微分方程求解器之上,第22–25章緊接第21章的偏微分方程回顧。
  • 配合: 先執行所提供的程式碼,再修改它們;每個問題寫一份簡短的實驗報告,並把影片講座用於預習或複習。