內容簡介
"《Python套用數值方法——解決工程和科學問題》是為想要學習和套用數值方法來解決工程和科學問題的學生撰寫的。書中提供了足夠豐富的理論知識。如果讀過本書的姊妹篇《工程與科學數值方法的MATLAB實現(第4版)》,就會發現過渡到Python程式是無縫的!不需要事先具有Python編程經驗。
本書以解決問題為導向,強調理論聯繫實際。各章均引入實際的工程和科學問題,提供從相關概念定義、理論分析到算法實現的全套解決方案。每章末尾安排有課後習題,方便讀者在鞏固所學知識的同時,進一步提升自己編寫代碼和解決問題的水平。
"
圖書目錄
目 錄
第 I 部分 建模、計算機和誤差分析
第1章 數學建模、數值方法和問題
求解 3
1.1 一個簡單的數學模型 4
1.2 工程與科學中的守恆定律 9
1.3 本書所涉及的數值方法 11
1.4 案例研究:自由落體 12
習題 14
第2章 Python基礎 24
2.1 Spyder/IPython運行環境 25
2.2 賦值 26
2.2.1 標量 26
2.2.2 數組、向量和矩陣 27
2.2.3 下標和下標的範圍 30
2.2.4 arange、linspace和logspace函式 30
2.2.5 字元串 31
2.3 數學運算 33
2.4 使用內置函式 37
2.5 製圖 41
2.6 其他資源 47
2.7 案例研究:探索性數據分析 48
習題 51
第3章 Python編程 57
3.1 Python腳本檔案 58
3.1.1 Python腳本 58
3.1.2 Python函式 59
3.1.3 變數作用域 61
3.2 輸入和輸出 63
3.3 結構化編程 66
3.3.1 決策流程 66
3.3.2 關於參數的更多信息 70
3.3.3 循環 71
3.4 嵌套和縮進 76
3.5 帶有函式名稱參數的Python函式 79
3.5.1 lambda函式 79
3.5.2 函式-函式 80
3.5.3 參數傳遞 83
3.6 案例研究:蹦極者的速度計算 85
習題 88
第4章 捨入和截斷誤差 100
4.1 誤差 100
4.1.1 準確度和精確度 101
4.1.2 誤差定義 101
4.1.3 疊代計算的計算機算法 104
4.2 捨入誤差 106
4.2.1 計算機中數字的表示法 106
4.2.2 計算機中數字的算術運算 111
4.3 截斷誤差 113
4.3.1 泰勒級數 113
4.3.2 泰勒級數式的餘數 116
4.3.3 使用泰勒級數估計截斷誤差 118
4.3.4 數值微分 118
4.4 總數值誤差 122
4.4.1 數值微分的誤差分析 122
4.4.2 數值誤差的控制 125
4.5 錯誤、模型誤差和數據不確定性 125
4.5.1 錯誤 125
4.5.2 模型誤差 126
4.5.3 數據不確定性 126
習題 126
第Ⅱ部分 求根和最最佳化
第5章 求根:交叉法 133
5.1 工程和科學套用中的求根問題 133
5.2 圖形和試錯法 134
5.3 交叉法和初步猜測 137
5.4 二分法 140
5.5 試位法 146
5.6 案例研究:溫室氣體和雨水 148
習題 152
第6章 根:開型法 159
6.1 不動點疊代 160
6.2 韋格斯坦法 164
6.3 牛頓-拉夫遜法 168
6.4 正割法 174
6.5 布倫特法 175
6.5.1 逆二次插值法 175
6.5.2 布倫特法的算法 177
6.6 Python SciPy函式:brentq 179
6.7 多項式 180
6.8 案例研究:管道摩擦 183
習題 188
第7章 最佳化 198
7.1 背景介紹 199
7.2 一維最佳化 201
7.2.1 黃金分割搜尋 201
7.2.2 拋物線插值 207
7.2.3 Python的SciPy函式:
minimize_scalar 208
7.3 多維最佳化 210
7.4 案例研究:平衡和最小勢能 212
習題 214
第Ⅲ部分 線性方程組
第8章 線性代數方程與矩陣 226
8.1 矩陣代數概述 227
8.1.1 矩陣符號 228
8.1.2 矩陣運算規則 229
8.1.3 用矩陣形式表示線性代數方程 237
8.2 用Python求解線性代數方程 238
8.3 案例研究:電路中的電流和
電壓 240
習題 243
第9章 高斯消元法 249
9.1 求解少量方程 249
9.1.1 圖解法 250
9.1.2 行列式和克萊默法則 251
9.1.3 消除未知數法 253
9.2 樸素高斯消元法 254
9.2.1 Python函式:gaussnaive 256
9.2.2 運算計數 258
9.3 主元 260
9.3.1 Python函式:gausspivot 261
9.3.2 用高斯消元法求行列式 262
9.4 三對角方程組 263
9.5 案例研究:加熱棒模型 265
習題 268
第10章 LU因式分解法 275
10.1 LU分解法概述 275
10.2 LU分解的高斯消元 276
10.2.1 涉及主元消元的LU分解 279
10.2.2 套用Python的LU分解法 281
10.3 喬里斯基分解法 282
10.4 Python的np.linalg.solve函式 284
習題 285
第11章 矩陣的逆和條件 287
11.1 矩陣的逆 287
11.1.1 計算逆矩陣 287
11.1.2 刺激-回響計算 289
11.2 錯誤分析和系統狀態 290
11.2.1 向量和矩陣範數 291
11.2.2 矩陣條件數 292
11.2.3 用Python計算範數和
條件數 293
11.3 案例研究:室內空氣污染 294
習題 297
第12章 疊代法 302
12.1 線性方程組:高斯-賽德爾法 302
12.1.1 收斂性和對角優勢 304
12.1.2 Python函式:gaussseide1 304
12.1.3 鬆弛 306
12.2 非線性系統 307
12.2.1 逐次代換法 307
12.2.2 牛頓-拉夫遜法 309
12.2.3 Python SciPy函式:root 313
12.3 案例研究:化學反應 314
習題 316
第13章 特徵值 321
13.1 特徵值和特徵向量——
基礎知識 322
13.2 特徵值和特徵向量的套用 324
13.2.1 二階微分方程的一階等價
方程 325
13.2.2 特徵值和特徵向量在微分
方程解中的作用 325
13.2.3 特徵值和純振盪的常微分
方程 326
13.3 物理場景-質量-彈簧系統 329
13.4 冪法 331
13.5 Python NumPy函式:eig和
eigvals 333
13.6 案例研究:特徵值與地震 334
習題 338
第Ⅳ部分 曲線擬合
第14章 直線線性回歸 346
14.1 統計學回顧 347
14.1.1 描述性統計 347
14.1.2 常態分配 351
14.1.3 使用Python進行描述性統計 354
14.2 隨機數和模擬 357
14.2.1 均勻分布中的隨機數 357
14.2.2 常態分配中的隨機數 359
14.3 直線最小二乘回歸 361
14.3.1 “最佳”擬合的標準 362
14.3.2 直線的最小二乘擬合 363
14.3.3 繪製直線的“荒島”法 365
14.3.4 線性回歸誤差的量化 365
14.4 非線性關係的線性化 370
14.5 計算機套用 375
14.5.1 Python函式:strlinregr 375
14.5.2 Python NumPy函式:
polyfit和polyval 378
14.6 案例研究:酶動力學 379
習題 382
第15章 一般線性回歸和非線性回歸 393
15.1 多項式回歸 393
15.2 多元線性回歸 397
15.3 一般線性最小二乘回歸 399
15.4 回歸中的模型建立與選擇 403
15.5 非線性回歸 409
15.6 案例研究:擬合實驗數據 414
習題 417
第16章 傅立葉分析 424
16.1 用正弦函式進行曲線擬合 425
16.2 連續傅立葉級數 430
16.3 頻域和時域 432
16.4 傅立葉積分和變換 435
16.5 離散傅立葉變換(DFT) 435
16.5.1 快速傅立葉變換(FFT) 436
16.5.2 Python SciPy函式:fft 437
16.6 功率譜 439
16.7 案例研究:太陽黑子 440
習題 442
第17章 多項式插值法 446
17.1 插值法簡介 447
17.1.1 確定多項式係數 447
17.1.2 Python NumPy函式:
polyfit和polyval 449
17.2 牛頓插值多項式 449
17.2.1 線性插值 449
17.2.2 二次插值 451
17.2.3 牛頓插值多項式的一般形式 452
17.2.4 Python函式Newtint 454
17.3 拉格朗日插值多項式 455
17.4 逆插值 458
17.5 外推法和振盪 458
17.5.1 外推法 458
17.5.2 振盪 461
習題 463
第18章 樣條和分段插值 469
18.1 樣條簡介 469
18.2 線性樣條 471
18.3 二次樣條 477
18.4 三次樣條 478
18.4.1 三次樣條的推導 479
18.4.2 末端條件 482
18.5 Python中的分段插值 483
18.5.1 Python SciPy模組的interpolate
函式:CubicSpline 485
18.5.2 附加的Python SciPy插值函式:
interp1d和PchipInterpolator 487
18.6 多維插值 488
18.6.1 雙線性插值 489
18.6.2 Python中的多維插值 490
18.7 數據序列的平滑 491
18.7.1 三次樣條平滑 491
18.7.2 LOESS平滑法 494
18.8 案例研究:湖中的熱傳導 499
習題 501
第Ⅴ部分 微積分
第19章 數值積分方程 511
19.1 背景簡介 512
19.1.1 什麼是積分 512
19.1.2 工程與科學中的積分 512
19.2 牛頓-科特斯方程 514
19.3 梯形法則 516
19.3.1 梯形法則的誤差 516
19.3.2 複合梯形法則 517
19.3.3 Python函式:trap 520
19.4 辛普森法則 521
19.4.1 辛普森1/3 法則 521
19.4.2 複合辛普森1/3法則 522
19.4.3 辛普森3/8法則 524
19.5 高階牛頓-科特斯方程 526
19.6 不等段積分 526
19.6.1 Python函式:trapuneq 527
19.6.2 Python函式:trapz和
trap_cumulative 528
19.7 開放式方法 530
19.8 多重積分 531
19.9 案例研究:數值積分的計算 533
習題 536
第20章 函式的數值積分 543
20.1 簡介 543
20.2 Romberg積分 544
20.2.1 Richardson外推 544
20.2.2 Romberg積分算法 546
20.3 高斯求積法 548
20.3.1 待定係數法 548
20.3.2 兩點高斯-勒讓德公式的推導 550
20.3.3 高點公式 552
20.4 自適應求積法 553
20.4.1 Python函式:quadadapt 553
20.4.2 Python SciPy積分函式:
quad 555
20.5 案例研究:均方根電流 556
習題 559
第21章 數值導數 565
21.1 背景簡介 566
21.1.1 什麼是導數 566
21.1.2 工程與科學的導數 567
21.2 高精度導數公式 568
21.3 Richardson 外推法 571
21.4 不等間距數據的導數 572
21.5 有誤差數據的導數和積分 573
21.6 偏導數 574
21.7 Python數值求導 574
21.7.1 Python NumPy函式:diff 574
21.7.2 Python NumPy函式:
gradient 577
21.8 案例研究:場的可視化 579
習題 580
第Ⅵ部分 常微分方程
第22章 初值問題 594
22.1 概述 595
22.2 歐拉法 595
22.2.1 歐拉法的誤差分析 597
22.2.2 歐拉法的穩定性 598
22.2.3 Python函式:eulode 599
22.3 改進歐拉法 601
22.3.1 Heun方法 601
22.3.2 中點法 604
22.4 Runge-Kutta方法 605
22.4.1 二階Runge-Kutta法 605
22.4.2 經典四階 Runge-Kutta法 606
22.5 方程組 608
22.5.1 歐拉法 609
22.5.2 Runge-Kutta法 610
22.5.3 Python 函式:rk4sys 611
22.6 案例研究:捕食者—獵物
模型和變體 614
習題 618
第23章 自適應方法和剛性系統 625
23.1 自適應Runge-Kutta方法 625
23.1.1 RKF 4/5算法的Python函式:
rkf45 626
23.1.2 求解IVP ODE的Python函式:
SciPy solve_ivp積分函式 630
23.1.3 事件 633
23.2 多步法 636
23.2.1 非自啟動Heun方法 636
23.2.2 誤差估計 638
23.3 剛度 639
23.4 Python 套用:帶繩的蹦極者 644
23.5 案例研究:普林尼的間歇噴泉 646
習題 649
第24章 邊值問題 659
24.1 背景簡介 660
24.1.1 什麼是邊值問題 660
24.1.2 工程和科學中的邊值問題 660
24.2 打靶法 663
24.2.1 導數邊界條件 665
24.2.2 非線性常微分方程的打靶法 667
24.3 有限差分法 669
24.3.1 導數邊界條件 671
24.3.2 非線性 ODE 的有限差分
方法 673
24.4 Python函式:solve_bvp 674
習題 676
—掃封底二維碼下載以下內容—
附錄A Matplotlib 685
附錄B 三次樣條平滑 705
附錄C Python內置關鍵字:函式、方法、
操作符、類型 710
附錄D 書中用到的Python函式和腳本 713
參考文獻 715
作者簡介
"StevenC.Chapra是塔夫茨大學土木與環境工程系名譽教授和Louis Berger講座教授。他的其他著作包括Surface Water-QualityModeling、《工程數值方法(第6版)》和《工程與科學數值方法的MATLAB實現(第4版)》。Steven博士獲得曼哈頓學院和密西根大學的工程學學位。主要研究方向為地表水質建模和環境工程中的高級計算機套用。Steven是ASCE(美國土木工程學會)的院士和終身會員,並因學術貢獻獲得多個獎項,包括魯道夫·赫林獎以及梅利亞姆·威利傑出作家獎。Steven還被公認為德克薩斯農工大學、科羅拉多大學和塔夫茨大學工程系的傑出教師和顧問。
David E. Clough於1975年加入科羅拉多大學化學與生物工程系。他於2017年從科羅拉多退休,後擔任名譽教授。David博士獲得了凱斯西儲大學和科羅拉多大學的化學工程學位。他在套用計算、過程自動化和各種過程建模方面擁有豐富經驗,重點研究的課題包括聚合、高溫催化反應器、流化床、明渠流、生物醫學儀器和太陽能熱反應器。
"