Python物理建模初學者指南(第2版) A Student's Guide to Python for Physical Modeling, 2/e

[美]傑西·M.金德(Jesse M. Kinder)、[美]菲利普·納爾遜(Philip Nelson)

  • Python物理建模初學者指南(第2版)-preview-1
  • Python物理建模初學者指南(第2版)-preview-2
Python物理建模初學者指南(第2版)-preview-1

商品描述

本書介紹瞭如何使用 Python語言進行物理建模,包括完成二維和三維圖形繪制、動態可視化、蒙特卡羅模擬、常微分方程求解、圖像處理等常見任務。本書在第 1版的基礎上增加了關於用 SymPy進行符號計算的新內容,介紹了用於數據科學和機器學習的 pandas和 sklearn庫、關於 Python類和麵向對象編程的入門知識、命令行工具,以及如何使用 Git進行版本控制。

本書適合對科學計算感興趣、想要使用 Python完成物理建模的學生和研究人員閱讀。

作者簡介

傑西·M. 金德,俄勒岡理工學院物理系副教授。

菲利普·納爾遜,賓夕法尼亞大學物理系教授,著有《從光子到神經元》《生命系統的物理建模》《生物物理學》等。

目錄大綱

第 1章 Python入門 1

1.1 算法與算法思維 1

1.1.1 算法思維 1

1.1.2 狀態 3

1.1.3 a=a+1的意思 3

1.1.4 符號與數字 4

1.2 啟動Python 5

1.2.1 IPython控制台 8

1.2.2 錯誤消息 11

1.2.3 幫助資源 12

1.2.4 最佳實踐: 記錄日誌 14

1.3 Python模塊 14

1.3.1 import 14

1.3.2 from...import 15

1.3.3 NumPy和PyPlot 16

1.4 Python表達式 17

1.4.1 數字 17

1.4.2 算術運算和預定義函數 17

1.4.3 最佳實踐:變量名 19

1.4.4 再談函數 20

 

第 2章 組織數據 22

2.1 對象及其方法 22

2.2 列表、元組和數組 25

2.2.1 創建列表或元組 25

2.2.2 NumPy數組 25

2.2.3 用值填充數組 27

2.2.4 數組拼接 29

2.2.5 訪問數組元素 30

2.2.6 數組和賦值 31

2.2.7 切片 32

2.2.8 展平數組 33

2.2.9 改變量組形狀 34

2.2.10 列表和數組作為索引 35

2.3 字符串 36

2.3.1 原始字符串 38

2.3.2 使用format方法格式化字符串 38

2.3.3 使用%格式化字符串 40

 

第3章 結構與控制 41

3.1 循環 41

3.1.1 for循環 42

3.1.2 while循環 43

3.1.3 超長循環 44

3.1.4 無限循環 44

3.2 數組運算 45

3.2.1 向量數學 46

3.2.2 矩陣數學 48

3.2.3 約減數組 49

3.3 腳本 49

3.3.1 編輯器 50

3.3.2 其他編輯器 51

3.3.3 調試第 一步 51

3.3.4 最佳實踐:添加註釋 54

3.3.5 最佳實踐:給參數命名 57

3.3.6 最佳實踐:單位 59

3.4 或然行為:分支 59

3.4.1 if語句 60

3.4.2 浮點數的相等性測試 62

3.5 嵌套 63

 

第4章 數據輸入、結果輸出 65

4.1 導入數據 66

4.1.1 獲取數據 66

4.1.2 將數據引入Python 67

4.2 導出數據 71

4.2.1 腳本 71

4.2.2 數據文件 71

4.3 數據可視化 74

4.3.1 plot命令及其相關函數 75

4.3.2 對數坐標軸 78

4.3.3 操作和修飾 78

4.3.4 替換曲線 81

4.3.5 再論圖窗及其坐標區 81

4.3.6 誤差棒 82

4.3.7 三維圖形 82

4.3.8 多個繪圖 83

4.3.9 子圖 85

4.3.10 保存圖形 86

4.3.11 在其他應用程序中使用圖形 87

 

第5章 第 一次上機實驗 88

5.1 HIV示例 88

5.1.1 探索模型 89

5.1.2 擬合實驗數據 89

5.2 細菌示例 91

5.2.1 探索模型 91

5.2.2 擬合實驗數據 92

 

第6章 隨機數生成和數值方法 93

6.1 編寫函數 94

6.1.1 在Python中定義函數 94

6.1.2 更新函數 97

6.1.3 參數、鍵值和默認值 98

6.1.4 返回值 98

6.1.5 函數編程 100

6.2 隨機數與模擬 101

6.2.1 模擬拋硬幣 102

6.2.2 生成軌跡 103

6.3 直方圖和條形圖 103

6.3.1 創建直方圖 103

6.3.2 精細控制 105

 

6.4 等高線圖、曲面圖和熱圖 106

6.4.1 生成點網格 107

6.4.2 等高線圖 107

6.4.3 曲面圖 108

6.4.4 熱圖 109

6.5 非線性方程的數值解法 110

6.5.1 一般實函數 110

6.5.2 多項式的復根 112

6.6 求解線性方程組 114

6.7 數值積分 115

6.7.1 預定義函數的積分 115

6.7.2 自定義函數的積分 116

6.7.3 振盪函數的積分 117

6.7.4 參數依賴 117

6.8 微分方程的數值解法 117

6.8.1 重新表述問題 118

6.8.2 常微分方程求解 119

6.8.3 參數依賴 120

6.8.4 其他常微分方程求解器 121

6.9 向量場與流線 123

6.9.1 向量場 123

6.9.2 流線 124

 

第7章 第二次上機實驗 126

7.1 生成和繪制軌跡 126

7.2 繪制位移分佈圖 127

7.3 罕見事件 129

7.3.1 泊松分佈 129

7.3.2 等待時間 130

 

第8章 圖像和動畫 132

8.1 圖像處理 132

8.1.1 將圖像轉換為NumPy數組 133

8.1.2 保存和顯示圖像 133

8.1.3 圖像處理 134

8.2 將數據顯示為圖像 134

8.3 動畫 137

8.3.1 創建動畫 137

8.3.2 保存動畫 139

8.3.3 結論 142

 

第9章 第三次上機實驗 143

9.1 捲積 144

9.1.1 Python圖像處理工具 144

9.1.2 平均化 146

9.1.3 使用高斯濾波器平滑圖像 146

9.2 圖像去噪 147

9.3 增強特徵 147

9.4 圖像文件和數組 149

 

第 10章 高階技術 151

10.1 字典和生成器 151

10.1.1 字典 153

10.1.2 特殊函數參數 156

10.1.3 列表推導式和生成器 157

10.2 數據科學工具 162

10.2.1 用pandas構建序列和數據幀 162

10.2.2 使用scikit-learn進行機器學習 165

10.2.3 下一步 168

10.3 符號計算 168

10.3.1 Wolfram Alpha 169

10.3.2 SymPy庫 171

10.3.3 其他替代方案 176

10.3.4 再談“首次通過”問題 176

10.4 編寫自己的類 180

10.4.1 隨機游走類 181

10.4.2 何時使用類 189

 

第 11章 開始行動 191

 

附錄A 安裝Python 193

A.1 安裝Python和Spyder 193

A.1.1 圖形化安裝 194

A.1.2 命令行安裝 196

A.2 設置Spyder 198

A.2.1 工作目錄 198

A.2.2 交互式圖形 198

A.2.3 腳本模板 199

A.2.4 重啟 199

A.3 保持最新版本 200

A.4 安裝FFmpeg 200

A.5 安裝ImageMagick 200

 

附錄B 命令行工具 202

B.1 命令行 202

B.1.1 文件系統導航 204

B.1.2 創建、重命名、移動和刪除文件 206

B.1.3 創建和刪除目錄 207

B.1.4 Python和Conda 208

B.2 文本編輯器 208

B.3 版本控制工具 210

B.3.1 Git如何工作 211

B.3.2 安裝和使用Git 213

B.3.3 跟蹤更改並同步存儲庫 217

B.3.4 實用工作流匯總 220

B.3.5 故障排除 221

B.4 結論 223

 

附錄 C Jupyter Notebook 224

C.1 入門 225

C.1.1 啟動Jupyter Notebook 225

C.1.2 打開筆記本 226

C.1.3 多個筆記本 226

C.1.4 退出Jupyter 227

C.1.5 設置默認目錄 227

C.2 單元格 228

C.2.1 代碼單元格 228

C.2.2 圖形 229

C.2.3 Markdown單元格 230

C.2.4 編輯模式和命令模式 230

C.3 共享 231

C.4 更多詳細信息 231

C.5 優點和缺點 231

 

附錄 D 錯誤和錯誤消息233

D.1 Python錯誤概述 234

D.2 一些常見錯誤 235

 

附錄E Python 2與Python 3對比 239

E.1 除法 240

E.2 打印命令 240

E.3 用戶輸入 241

E.4 更多援助 242

 

附錄 F 內部機制 243

F.1 賦值語句 243

F.2 內存管理 246

F.3 函數 246

F.4 作用域 247

F.4.1 名稱沖突 249

F.4.2 作為參數傳遞的變量 250

F.5 總結 251

 

附錄G 部分習題答案253

 

致謝261

推薦閱讀262