Python 編程與數值方法 Python Programming and Numerical Methods: A Guide for Engineers and Scientists

[美]孔慶凱(Qingkai Kong) [美]提米·西奧(Timmy Siauw) [美]亞歷山大·M. 拜耶恩(Alexandre M. Bayen

買這商品的人也買了...

商品描述

本書面向工程和科學專業的學生,介紹編程工具和數值方法,旨在幫助學生掌握計算問題求解技巧。
書中第一部分介紹基本的Python編程概念,使用簡單的例子快速將新的概念付諸實踐;
第二部分涵蓋算法和數值分析的基礎知識,幫助學生在實際設置中快速應用結果。

目錄大綱

譯者序
前言
致謝
第一部分Python編程簡介
第1章Python基礎2
1.1 開始使用Python 2
1.1.1 設置工作環境2
1.1.2 運行Python代碼的
三種方法5
1.2 Python作為計算器7
1.3 包管理11
1.3.1 使用包管理器管理包11
1.3.2 從源代碼中安裝包13
1.4 Jupyter Notebook簡介13
1.4.1 啟動Jupyter Notebook 14
1.4.2 筆記本15
1.4.3 如何關閉筆記本15
1.4.4 關閉Jupyter Notebook
服務器15
1.5 邏輯表達式和運算符16
1.6 總結和習題18
1.6.1 總結18
1.6.2 習題18
第2章變量和基本數據結構20
2.1 變量和賦值20
2.2 數據結構—字符串22
2.3 數據結構—列表26
2.4 數據結構—元組28
2.5 數據結構—集合30
2.6 數據結構—字典31
2.7 numpy數組33
2.8 總結和習題40
2.8.1 總結40
2.8.2 習題40
第3章函數42
3.1 函數基礎42
3.1.1 Python 內置函數42
3.1.2 定義自己的函數42
3.2 局部變量和全局變量49
3.3 嵌套函數52
3.4 lambda函數53
3.5 函數作為函數的參數54
3.6 總結和習題55
3.6.1 總結55
3.6.2 習題55
第4章分支語句59
4.1 if-else語句59
4.2 三元運算符65
4.3 總結和習題65
4.3.1 總結65
4.3.2 習題65
第5章迭代69
5.1 for循環69
5.2 while循環74
5.3 推導式76
5.3.1 列表推導式76
5.3.2 字典推導式77
5.4 總結和習題77
5.4.1 總結77
5.4.2 習題77
第6章遞歸81
6.1 遞歸函數81
6.2 分而治之85
6.2.1 漢諾塔問題85
6.2.2 快速排序87
6.3 總結和習題88
6.3.1 總結88
6.3.2 習題89
第7章面向對象編程94
7.1 面向對象編程簡介94
7.2 類和對象95
7.2.1 類95
7.2.2 對象97
7.2.3 類屬性與實例屬性98
7.3 繼承、封裝和多態99
7.3.1 繼承99
7.3.2 封裝102
7.3.3 多態103
7.4 總結和習題103
7.4.1 總結103
7.4.2 習題103
第8章複雜度105
8.1 複雜度和大O表示法105
8.2 複雜度問題107
8.3 分析器108
8.3.1 使用魔術命令108
8.3.2 使用Python分析器109
8.3.3 使用line分析器110
8.4 總結和習題111
8.4.1 總結111
8.4.2 習題111
第9章數字的表示113
9.1 baseN和二進制113
9.2 浮點數114
9.3 舍入誤差118
9.3.1 表示誤差118
9.3.2 浮點運算導致的捨入誤差118
9.3.3 舍入誤差的累積119
9.4 總結和習題120
9.4.1 總結120
9.4.2 習題120
第10章錯誤、良好的編程實踐
和調試123
10.1 錯誤類型123
10.2 避免錯誤125
10.2.1 規劃你的程序125
10.2.2 經常進行測試126
10.2.3 保持代碼整潔126
10.3 異常128
10.4 類型檢查130
10.5 調試132
10.5.1 在遇到異常時激活
調試器132
10.5.2 在運行代碼前激活
調試器134
10.5.3 添加斷點135
10.6 總結和習題136
10.6.1 總結136
10.6.2 習題136
第11章讀寫數據137
11.1 文本文件137
11.1.1 寫入文件137
11.1.2 附加文件138
11.1.3 讀取文件138
11.1.4 處理數字和數組139
11.2 CSV文件140
11.2.1 寫入和打開CSV文件141
11.2.2 讀取CSV文件142
11.2.3 numpy之外142
11.3 pickle文件142
11.3.1 寫入pickle文件142
11.3.2 讀取pickle文件143
11.3.3 讀取Python 2的pickle
文件143
11.4 JSON文件143
11.4.1 JSON格式143
11.4.2 寫入JSON文件144
11.4.3 讀取JSON文件144
11.5 HDF5文件145
11.5.1 讀取HDF5文件146
11.6 總結和習題147
11.6.1 總結147
11.6.2 習題147
第12章可視化和繪圖148
12.1 二維繪圖148
12.2 三維繪圖156
12.3 使用地圖161
12.4 動畫和電影165
12.5 總結和習題167
12.5.1 總結167
12.5.2 習題167
第13章Python並行化173
13.1 並行計算基礎知識173
13.1.1 進程和線程174
13.1.2 Python的GIL問題174
13.1.3 使用並行計算的缺點174
13.2 多進程174
13.2.1 可視化執行時間176
13.3 使用joblib包177
13.4 總結和習題178
13.4.1 總結178
13.4.2 習題178
第二部分數值方法簡介
第14章線性代數和線性方程組180
14.1 線性代數基礎知識180
14.1.1 集合180
14.1.2 向量181
14.1.3 矩陣183
14.2 線性變換187
14.3 線性方程組188
14.4 線性方程組的解189
14.4.1 高斯消元法190
14.4.2 高斯–若爾當消元法192
14.4.3 LU分解法194
14.4.4 迭代法—高斯–
賽德爾法196
14.5 用Python求解線性方程組198
14.6 矩陣求逆199
14.7 總結和習題202
14.7.1 總結202
14.7.2 習題202
第15章特徵值和特徵向量205
15.1 特徵值和特徵向量
問題陳述205
15.1.1 特徵值和特徵向量205
15.1.2 特徵值和特徵向量的作用205
15.1.3 特徵方程207
15.2 冪法208
15.2.1 尋找大特徵值208
15.2.2 逆冪法211
15.2.3 移位冪法211
15.3 QR方法212
15.4 Python中特徵值和特徵
向量的求法213
15.5 總結和習題214
15.5.1 總結214
15.5.2 習題214
第16章小二乘回歸216
16.1 小二乘回歸問題陳述216
16.2 小二乘回歸推導
(線性代數) 216
16.3 小二乘回歸推導(多元
微積分) 217
16.4 Python中的小二乘回歸219
16.4.1 使用直接求逆法219
16.4.2 使用偽逆法220
16.4.3 使用numpy.linalg.
lstsq 221
16.4.4 使用scipy中的optimize.
curve_fit 221
16.5 非線性函數的小二乘回歸221
16.5.1 指數函數的對數技巧221
16.5.2 冪函數的對數技巧223
16.5.3 多項式回歸223
16.5.4 使用scipy中的optimize.
curve_fit 224
16.6 總結和習題225
16.6.1 總結225
16.6.2 習題225
第17章插值228
17.1 插值問題陳述228
17.2 線性插值228
17.3 三次樣條插值229
17.4 拉格朗日多項式插值233
17.4.1 使用scipy中的
lagrange函數235
17.5 牛頓多項式插值236
17.6 總結和習題239
17.6.1 總結239
17.6.2 習題239
第18章泰勒級數243
18.1 使用泰勒級數表達函數243
18.2 使用泰勒級數的近似值244
18.3 關於誤差的討論246
18.3.1 泰勒級數的截斷誤差246
18.3.2 估計截斷誤差247
18.3.3 泰勒級數的捨入誤差248
18.4 總結和習題249
18.4.1 總結249
18.4.2 習題249
第19章尋根問題250
19.1 尋根問題陳述250
19.2 公差251
19.3 二分法251
19.4 牛頓–拉夫森算法254
19.5 使用Python求解尋根問題256
19.6 總結和習題256
19.6.1 總結256
19.6.2 習題256
第20章數值微分259
20.1 數值微分問題陳述259
20.2 使用有限差分近似求導259
20.2.1 使用有限差分近似
泰勒級數的導數260
20.3 高階導數的近似265
20.4 帶噪聲的數值微分266
20.5 總結和習題268
20.5.1 總結268
20.5.2 習題268
第21章數值積分272
21.1 數值積分問題陳述272
21.2 黎曼積分272
21.3 梯形法則275
21.4 辛普森法則277
21.5 在Python中計算積分280
21.6 總結和習題282
21.6.1 總結282
21.6.2 習題282
第22章常微分方程初值問題286
22.1 常微分方程初值問題陳述286
22.2 降階288
22.3 歐拉方法289
22.4 數值誤差和不穩定性294
22.5 預測–校正法和龍格–
庫塔法295
22.5.1 預測–校正法295
22.5.2 龍格–庫塔法296
22.6 Python ODE求解器298
22.7 進階專題301
22.7.1 多步法301
22.7.2 剛性常微分方程302
22.8 總結和習題302
22.8.1 總結302
22.8.2 習題302
第23章常微分方程邊值問題310
23.1 常微分方程邊值問題陳述310
23.2 打靶法311
23.3 有限差分法315
23.4 數值誤差和不穩定性319
23.5 總結和習題320
23.5.1 總結320
23.5.2 習題320
第24章傅里葉變換322
24.1 波的基本原理322
24.1.1 使用數學工具對波建模322
24.1.2 波的特性323
24.2 離散傅里葉變換簡介326
24.2.1 離散傅里葉變換327
24.2.2 逆離散傅里葉變換331
24.2.3 離散傅里葉變換的極限331
24.3 快速傅里葉變換332
24.3.1 離散傅里葉變換的
對稱性332
24.3.2 快速傅里葉變換的技巧332
24.4 Python中的快速傅里葉
變換函數336
24.4.1 numpy中的快速傅里葉
變換函數336
24.4.2 scipy中的快速傅里葉
變換函數337
24.4.3 更多例子338
24.5 總結和習題342
24.5.1 總結342
24.5.2 習題343
附錄A 在Windows中使用Python 345