01 / 導讀
導讀
引用
Newman, M. (2012). Computational Physics. CreateSpace Independent Publishing Platform.
已有較新的版本(第2版,2025年);章節編號與部分內容可能有所不同。
章節概要
這是馬克·紐曼(Mark Newman)以Python為基礎的教材,由CreateSpace出版,有2012年版次;圖書館記錄中另有標註為2013年的“修訂增補”版次,約549頁。此後又出現了約611頁的第二版,因此下面的敘述針對的是第一版。普林斯頓大學圖書館的記錄把它概括為一本從Python入門開始、逐步講解計算物理技術的書,例子從簡單的力學問題一直到量子力學、電磁學和統計力學中的複雜計算。出版社的介紹把有限差分法、數值求積和快速傅立葉變換列為每位物理學家都應知道的技術,並稱本書是完整的大學部入門讀物,同時也適合高年級學生和研究人員。圖書館記錄把內容列為下面的各章、附錄和索引,章的編號依此順序。
第1章:引言
圖書館記錄中列出的開篇章節;下文討論的書評沒有描述這一章。
第2章:面向物理學家的Python程式設計
講Python語法和程式結構的基礎。據埃裡克·阿亞斯(Eric Ayars)發表於《Computing in Science & Engineering》(2014年1/2月號)的書評,這一章足以讓大多數沒有程式設計經驗的學生入門。
第3章:圖形與視覺化
阿亞斯指出,緊接Python基礎之後的這一章介紹Python的繪圖功能,使學生能很快把學到的東西用於其他課程。
第4章:精度與速度
一章篇幅簡短,講數值計算的精度與速度。阿亞斯起初覺得它的位置靠前有些奇怪,但他報告說,關於精度、準確度以及不同方法相對誤差的討論在後面各章中反覆出現,而這一章把它們串聯在了一起。
第5–6章:積分與導數;線性與非線性方程的求解
積分與微分,然後是求根。阿亞斯說,作者通常先講最簡單的方法,再逐步建立到更強大的技術,並在大多數小節的末尾提到能解決該問題的NumPy或SciPy函數。他提到龍貝格積分(Romberg integration)是通過這本書才變得更清楚的一個話題。
第7–9章:傅立葉變換;常微分方程;偏微分方程
傅立葉方法、常微分方程和偏微分方程這一標準序列,圖書館記錄中均有列出;據阿亞斯所述,它們屬於常見的入門計算主題。
第10–11章:隨機過程與蒙地卡羅方法;運用所學
蒙地卡羅方法靠近書的末尾,隨後是標題為“Using what you have learned(運用所學)”的收尾章節,最後是附錄。
核心概念
第1–4章:工具
- Python程式設計:第2章的主題。
- 圖形與視覺化:第3章。
- 精度與速度:第4章,書評把它視為貫穿其餘部分的一條線索。
第5–9章:數值方法
- 積分與導數:第5章,包括求積。
- 線性與非線性方程的求解:第6章。
- 傅立葉變換:第7章。
- 微分方程:常微分方程(第8章)和偏微分方程(第9章)。
第10–11章:隨機方法與實踐
- 隨機過程與蒙地卡羅方法:第10章。
評析
優點
- 講解清晰易讀。 阿亞斯稱本書“出人意料地好讀”,並說講解很清楚:作者幾乎總是先對最簡單的方法作透徹的說明,然後再向更強大的技術推進。
- 從一開始就用Python。 開頭幾章先教語言及其繪圖工具,再開始數值方法,因此沒有程式設計基礎的學生也能入手。阿亞斯講授一學期的計算物理課程,稱這是他所知的同類Python教材中最早出版的一本,並說他樂於採用。
- 以精度為統一主題。 同一篇書評指出,前面關於精度與速度的一章為後面各節比較不同方法的誤差提供了共同的參照點:幾乎每一節都會回到這一章。
- 與Python庫相聯絡。 多數小節結尾處會指出在實踐中完成該技術的NumPy或SciPy函數。
局限
- 書評者指出的缺口。 阿亞斯發現兩處遺漏:曲線擬合的內容只有一道章末習題,沒有非線性擬合,也沒有提到SciPy的擬合工具;此外書中不涉及檔案的讀寫。他認為這兩點都容易在課堂上補充。
- 範圍有取捨。 目錄中沒有專門講曲線擬合、插值或資料分析的章節,而出版社對第二版的介紹稱,插值和資料分析等方面增加了大量新內容。
- 已被取代的版次。 這裡所述的是2012/2013年的版次;第二版為611頁,而第一版約549頁,內容經過大幅修訂和更新,因此讀者應當確認自己手中是哪一版。
在課程中的定位
在計算物理書單中,紐曼的書是兩部以Python為基礎的計算物理教材之一。蘭道、帕埃斯與博爾代亞努的《Computational Physics: Problem Solving with Python》在第四版中增加了資料科學章節(傅立葉分析、小波、機器學習、量子計算)和一大批應用章節,而紐曼的目錄更短,集中於核心方法。想要一門第一學期課程的學生可以考慮紐曼;想要涵蓋物理各領域應用的學生可以考慮蘭道。
金德與納爾遜的《A Student's Guide to Python for Physical Modeling》是一本不要求程式設計經驗的、簡短而實用的Python入門讀物,可與紐曼的第2–3章同時閱讀。普雷斯等人的《Numerical Recipes》是附有完整C++程式的數值方法參考書,蒂森的《Computational Physics》是面向研究生、講授凝聚態物理和化學中方法的論述,泰勒的《An Introduction to Error Analysis》則是第4章不確定度思想的配套讀物。
如何使用本書
先修要求是微積分、入門力學和電磁學;由於Python在開頭幾章中講授,不要求有程式設計經驗。
實用的安排:
- 開始: 邊寫邊執行小程式,邊讀第2章和第3章。
- 核心: 按順序讀第4–9章,對後面每一種方法都記著第4章對誤差的討論。
- 後面的章節: 第10章的蒙地卡羅方法,以及應用所學內容的最後一章。
- 補充: 按書評的建議,補充一小段關於檔案輸入輸出、以及用SciPy進行曲線擬合的內容。
- 確認版本: 在照著課程大綱的章節編號閱讀之前,先確認自己手上的是第一版還是第二版。
