Python應用數值方法——解決工程和科學問題 Applied Numerical Methods with Python for Engineers and Scientists

[美]史蒂文·C.查布拉(Steven C. Chapra),[法]戴維·E.克盧(David E. Clough)著 張建廷 王一 呂亞飛 侯文君 譯

  • Python應用數值方法——解決工程和科學問題-preview-1
  • Python應用數值方法——解決工程和科學問題-preview-2
  • Python應用數值方法——解決工程和科學問題-preview-3
Python應用數值方法——解決工程和科學問題-preview-1

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

商品描述

《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