索引 / 001 ZH-TW
A Student's Guide to Python for Physical Modeling(物理建模 Python 學生指南) cover

物理學

物理學

A Student's Guide to Python for Physical Modeling(物理建模 Python 學生指南)

Jesse M. Kinder; Philip Nelson

英文原名: A Student's Guide to Python for Physical Modeling

一本簡短實用的入門書,教導物理與工程科系學生使用 Python 處理課程與實驗中遇到的計算工作。本書不要求程式經驗,透過 NumPy、SciPy 與 Matplotlib 這套科學計算工具教授語言,並藉由例題與小型專題逐步進入模擬、資料分析與視覺化。

需要的基礎: 微積分與物理入門;不需事先具備程式設計經驗。

難度等級
入門
學術層次
大學部
pythoncomputational physicsnumerical methodsdata analysisprimer

01 / 導讀

導讀

引用

Kinder, J. M., & Nelson, P. (2021). A Student's Guide to Python for Physical Modeling (2nd ed.). Princeton University Press.

章節概要

第二版全書240頁:十章約155頁,另有七個附錄和一篇簡短的前言「Let's Go」。十章由講授章節和三個「計算機實驗」章節交替構成,後者把新學的工具應用到建模問題上。據前言,標有「Track 2」的小節和腳註較為進階,初讀時可以跳過。

第1章:Getting Started with Python(Python入門)

全書從演算法思維、程式狀態的概念以及賦值語句a = a + 1的含義講起,接著是在IPython控制台中啟動Python、閱讀錯誤資訊、尋求幫助和記錄日誌。本章最後講模組(import、NumPy和PyPlot)和Python表示式:數字、算術、預定義函式、變數名和函式。

第2章:Organizing Data(組織資料)

物件與方法,然後是列表、元組和NumPy陣列:建立與填充、拼接、索引、切片、展平和重塑。本章也講字串及其格式化。

第3章:Structure and Control(結構與控制)

迴圈(for和while)、向量化的陣列運算、矩陣運算和陣列約簡,然後是指令碼和編輯器,其中有關於註釋、命名引數和單位的良好實踐。最後是分支(if語句、浮點數相等的檢驗)和巢狀。

第4章:Data In, Results Out(資料輸入,結果輸出)

匯入資料、把資料匯出到指令碼和檔案,以及資料視覺化:plot命令、對數座標軸、修飾和替換曲線、誤差棒、三維圖、多圖、子圖和儲存圖形。

第5章:First Computer Lab(第一次計算機實驗)

圍繞兩個例子的簡短實驗章節:HIV模型和細菌模型,每個例子都有「探索模型」和「擬合實驗資料」兩步。

第6章:Random Number Generation and Numerical Methods(隨機數生成與數值方法)

篇幅較長的一章(28頁)。內容包括編寫函式、隨機數與模擬(拋硬幣、軌跡)、直方圖和條形圖、等高線圖、曲面圖和熱圖、非線性方程的數值解、線性方程組、數值積分和微分方程的數值解,最後是向量場和流線。

第7章:Second Computer Lab(第二次計算機實驗)

生成並繪製軌跡、繪製位移分佈,以及稀有事件(泊松分佈和等待時間)。

第8章:Images and Animation(影像與動畫)

把影像當作NumPy陣列並加以處理,把資料顯示為影像,以及建立和儲存動畫。

第9章:Third Computer Lab(第三次計算機實驗)

影像處理練習:卷積(平均與高斯平滑)、影像去噪和突出特徵。

第10章:Advanced Techniques(高階技巧)

字典、特殊函式引數、列表推導式和生成器;資料科學工具(pandas、scikit-learn);符號計算(Wolfram Alpha、SymPy);以及自己編寫類,以隨機遊走類為例。出版社稱資料科學庫、用SymPy做符號計算和Python類是第二版的新內容。

附錄

A講安裝Python和Spyder(以及FFmpeg和ImageMagick);B講命令列工具、文本編輯器和Git版本控制;C講Jupyter筆記本;D講錯誤與錯誤資訊;E講Python 2與Python 3的區別;F「Under the Hood」(賦值、記憶體、作用域);G是「Your Turn」問題的答案。其後是推薦閱讀和索引。

核心概念

第1–4章:語言與資料

  • 演算法思維與狀態:第一章理解程式設計的方式。
  • NumPy陣列:第2、3章的核心資料結構,包括切片和向量化運算。
  • 繪圖:第4章中的PyPlot圖形、子圖和三維圖。

第5–9章:建模與計算

  • 隨機數與模擬:拋硬幣、軌跡和直方圖。
  • 數值方法:求根、積分和常微分方程求解器。
  • 作為陣列的影像:第8、9章的基礎。

第10章與附錄

  • 資料科學庫與SymPy:pandas、scikit-learn和符號計算。
  • 類:以隨機遊走為例的物件導向程式設計。
  • 版本控制:附錄B中的Git。

評析

優點

  • 為物理建模而寫。 前言說,作者是在職科學家,已刪去一開始用不到的一切;實驗章節把新工具應用到建模問題上。
  • 不需要程式設計經驗。 出版社明確說無需任何經驗,第1章從演算法思維和對賦值的平實解釋開始。
  • 兩條路徑。 「Track 2」小節讓讀者可以跳過較進階的內容。
  • 實用的配套。 程式碼示例和資料集可線上獲取,「Your Turn」問題的答案在附錄G,附錄還涵蓋安裝、命令列工具、Git和除錯。
  • 第二版的更新。 出版社列出SymPy、pandas與scikit-learn、物件導向程式設計的新內容和一個Git附錄。

侷限

  • 是起點,而非參考手冊。 正文約155頁,只講基礎;想深入數值分析,需要篇幅更大的書。
  • 機器學習只是簡介。 講scikit-learn的10.2.2節約三頁。
  • 依賴特定工具。 安裝與編輯部分以Python加Spyder為中心,Jupyter另列一個附錄,因此隨著工具變化,有些步驟可能過時。
  • 未找到公開發表的書評。

在課程中的定位

這是計算物理書單中最平易的一本,如果程式設計對你是新事物,應從它開始。Newman的Computational Physics以Python為基礎,有關於積分、微分方程、傅立葉方法和蒙特卡羅的例子與習題,是順理成章的下一步。Landau、Páez和Bordeianu的Computational Physics用Python處理範圍廣泛的問題,包括量子力學和流體。Press等人的Numerical Recipes是帶有完整程式和對陷阱討論的參考書,Thijssen的Computational Physics是研究生水平的研究方法(如分子動力學和量子蒙特卡羅)。Taylor的An Introduction to Error Analysis不是程式設計書,但與資料分析各章搭配自然,因為實驗工作需要不確定度估計。

如何使用本書

本書適合具備微積分和入門物理、但沒有程式設計經驗的物理、工程和理科學生。它是要在計算機前閱讀的書。

建議的讀法:先按附錄A安裝Python。然後按順序學第1至4章,試一試每個程式碼示例;這是核心的語言和繪圖工具。繼續之前先做第一次計算機實驗(第5章)。第6章是物理建模的核心,值得花最多時間。不處理影像的學生可以略過第8、9章;第10章留給要轉向較大專案的人。附錄D留作除錯時查閱,Track 2小節初讀時跳過,並用附錄G核對「Your Turn」的答案。