本書介紹了如何使用 Python語言進行物理建模,包括完成二維和三維圖形繪制、動態(tài)可視化、蒙特卡羅模擬、常微分方程求解、圖像處理等常見任務。本書在第 1版的基礎(chǔ)上增加了關(guān)于用 SymPy進行符號計算的新內(nèi)容,介紹了用于數(shù)據(jù)科學和機器學習的 pandas和 sklearn庫、關(guān)于 Python類和面向?qū)ο缶幊痰娜腴T知識、命令行工具,以及如何使用 Git進行版本控制。
本書適合對科學計算感興趣、想要使用 Python完成物理建模的學生和研究人員閱讀。
【物理建模手冊】本書介紹如何使用Python語言進行物理建模,涵蓋二維和三維圖形繪制、動態(tài)可視化、蒙特卡羅模擬等常見任務。
【內(nèi)容全面升級】在第1版的基礎(chǔ)上,新增用SymPy進行符號計算的內(nèi)容,還介紹了數(shù)據(jù)科學和機器學習相關(guān)庫、Python類和面向?qū)ο缶幊倘腴T知識、命令行工具,以及如何使用Git進行版本控制。
【專業(yè)作者指導】由專業(yè)科學家根據(jù)多年經(jīng)驗編寫,為讀者制定了能夠快速開始探索和學習的方案,篩選了不必要的內(nèi)容,保留知識和技能。
杰西·M. 金德,俄勒岡理工學院物理系副教授。
菲利普·納爾遜,賓夕法尼亞大學物理系教授,著有《從光子到神經(jīng)元》《生命系統(tǒng)的物理建模》《生物物理學》等。
第 1章 Python入門 1
1.1 算法與算法思維 1
1.1.1 算法思維 1
1.1.2 狀態(tài) 3
1.1.3 a=a 1的意思 3
1.1.4 符號與數(shù)字 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 數(shù)字 17
1.4.2 算術(shù)運算和預定義函數(shù) 17
1.4.3 最佳實踐:變量名 19
1.4.4 再談函數(shù) 20
第 2章 組織數(shù)據(jù) 22
2.1 對象及其方法 22
2.2 列表、元組和數(shù)組 25
2.2.1 創(chuàng)建列表或元組 25
2.2.2 NumPy數(shù)組 25
2.2.3 用值填充數(shù)組 27
2.2.4 數(shù)組拼接 29
2.2.5 訪問數(shù)組元素 30
2.2.6 數(shù)組和賦值 31
2.2.7 切片 32
2.2.8 展平數(shù)組 33
2.2.9 改變數(shù)組形狀 34
2.2.10 列表和數(shù)組作為索引 35
2.3 字符串 36
2.3.1 原始字符串 38
2.3.2 使用format方法格式化字符串 38
2.3.3 使用%格式化字符串 40
第3章 結(jié)構(gòu)與控制 41
3.1 循環(huán) 41
3.1.1 for循環(huán) 42
3.1.2 while循環(huán) 43
3.1.3 超長循環(huán) 44
3.1.4 無限循環(huán) 44
3.2 數(shù)組運算 45
3.2.1 向量數(shù)學 46
3.2.2 矩陣數(shù)學 48
3.2.3 約減數(shù)組 49
3.3 腳本 49
3.3.1 編輯器 50
3.3.2 其他編輯器 51
3.3.3 調(diào)試第 一步 51
3.3.4 最佳實踐:添加注釋 54
3.3.5 最佳實踐:給參數(shù)命名 57
3.3.6 最佳實踐:單位 59
3.4 或然行為:分支 59
3.4.1 if語句 60
3.4.2 浮點數(shù)的相等性測試 62
3.5 嵌套 63
第4章 數(shù)據(jù)輸入、結(jié)果輸出 65
4.1 導入數(shù)據(jù) 66
4.1.1 獲取數(shù)據(jù) 66
4.1.2 將數(shù)據(jù)引入Python 67
4.2 導出數(shù)據(jù) 71
4.2.1 腳本 71
4.2.2 數(shù)據(jù)文件 71
4.3 數(shù)據(jù)可視化 74
4.3.1 plot命令及其相關(guān)函數(shù) 75
4.3.2 對數(shù)坐標軸 78
4.3.3 操作和修飾 78
4.3.4 替換曲線 81
4.3.5 再論圖窗及其坐標區(qū) 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 擬合實驗數(shù)據(jù) 89
5.2 細菌示例 91
5.2.1 探索模型 91
5.2.2 擬合實驗數(shù)據(jù) 92
第6章 隨機數(shù)生成和數(shù)值方法 93
6.1 編寫函數(shù) 94
6.1.1 在Python中定義函數(shù) 94
6.1.2 更新函數(shù) 97
6.1.3 參數(shù)、鍵值和默認值 98
6.1.4 返回值 98
6.1.5 函數(shù)編程 100
6.2 隨機數(shù)與模擬 101
6.2.1 模擬拋硬幣 102
6.2.2 生成軌跡 103
6.3 直方圖和條形圖 103
6.3.1 創(chuàng)建直方圖 103
6.3.2 精細控制 105
6.4 等高線圖、曲面圖和熱圖 106
6.4.1 生成點網(wǎng)格 107
6.4.2 等高線圖 107
6.4.3 曲面圖 108
6.4.4 熱圖 109
6.5 非線性方程的數(shù)值解法 110
6.5.1 一般實函數(shù) 110
6.5.2 多項式的復根 112
6.6 求解線性方程組 114
6.7 數(shù)值積分 115
6.7.1 預定義函數(shù)的積分 115
6.7.2 自定義函數(shù)的積分 116
6.7.3 振蕩函數(shù)的積分 117
6.7.4 參數(shù)依賴 117
6.8 微分方程的數(shù)值解法 117
6.8.1 重新表述問題 118
6.8.2 常微分方程求解 119
6.8.3 參數(shù)依賴 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 將圖像轉(zhuǎn)換為NumPy數(shù)組 133
8.1.2 保存和顯示圖像 133
8.1.3 圖像處理 134
8.2 將數(shù)據(jù)顯示為圖像 134
8.3 動畫 137
8.3.1 創(chuàng)建動畫 137
8.3.2 保存動畫 139
8.3.3 結(jié)論 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 圖像文件和數(shù)組 149
第 10章 高階技術(shù) 151
10.1 字典和生成器 151
10.1.1 字典 153
10.1.2 特殊函數(shù)參數(shù) 156
10.1.3 列表推導式和生成器 157
10.2 數(shù)據(jù)科學工具 162
10.2.1 用pandas構(gòu)建序列和數(shù)據(jù)幀 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 文件系統(tǒng)導航 204
B.1.2 創(chuàng)建、重命名、移動和刪除文件 206
B.1.3 創(chuàng)建和刪除目錄 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 結(jié)論 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 優(yōu)點和缺點 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 內(nèi)部機制 243
F.1 賦值語句 243
F.2 內(nèi)存管理 246
F.3 函數(shù) 246
F.4 作用域 247
F.4.1 名稱沖突 249
F.4.2 作為參數(shù)傳遞的變量 250
F.5 總結(jié) 251
附錄G 部分習題答案253
致謝261
推薦閱讀262