計算物理:數理思想的Python實踐

丁俊飛、祁小四、姚秋石、劉艷輝

商品描述

物理學的內功,很大程度上取決於能否運用計算機解決真實的物理問題。這些問題大到星體軌道演化,小到微觀體系中薛定諤方程的數值求解。圍繞這一核心目標,本書力圖以最清晰的邏輯和“絕不跳步”的嚴密數學推導,系統剖析計算物理中各類核心算法的來龍去脈。全書從級數展開的基本思想出發,系統構建了涵蓋線性方程組與本征值問題、數值微分、求根與極值、插值與擬合、數值積分以及微分方程求解的完整算法體系。書中不僅深入講解了QR算法、快速傅裏葉變換、共軛梯度法、蒙特卡羅積分、貝葉斯統計推斷與人工神經網絡等具有重要影響的經典計算方法,還穿插了氬原子相互作用力計算、球體浸沒深度求解、電磁對抗下的戰術定位、原子彈爆炸極限半徑推斷以及量子諧振子求解等具有代表性的Python實踐案例。

本書極度註重算法背後的數學思想與物理直覺的闡述,力求打造一部真正讓讀者“看得懂、學得通、悟得透”的計算物理專著。本書提供了一條貫通數理思想、算法方法與物理問題求解的系統學習路徑,既適合作為本科高年級至研究生階段計算物理課程的核心教材與自學手冊,也適合作為科學計算與數值模擬相關研究人員的參考書。

目錄大綱

第1章 Python計算物理基礎 001
1.1 Python的核心思想 001
1.2 Python的處理對象 002
1.2.1 數值對象 003
1.2.2 字符串對象 004
1.2.3 列表 005
1.2.4 字典 007
1.2.5 其他核心內置類型 008
1.3 Python的加工流程 009
1.3.1 順序執行 009
1.3.2 條件執行:根據“判斷”選擇路徑 010
1.3.3 循環:重覆的“加工步驟”(for與while) 011
1.4 Python的快速工具:函數、類和模塊 012
1.4.1 函數 012
1.4.2 類與對象 016
1.4.3 模塊與包 019
1.5 Python的常用庫 023
1.5.1 NumPy 023
1.5.2 Matplotlib 027
1.5.3 其他常用的庫 033
1.5.4 Python科學計算工具小結 037
1.6 數值計算的誤差 038
1.6.1 二進制的轉換 038
1.6.2 IEEE 754浮點表示法 039
1.6.3 截斷誤差 041
1.6.4 誤差的度量 042
第2章 級數 043
2.1 泰勒級數 046
2.2 傅裏葉級數 049
2.3 廣義級數與線性空間 052
2.3.1 線性空間 053
2.3.2 範數與內積 054
2.3.3 空間基底與廣義級數 056
2.4 勒讓德多項式 058
2.4.1 勒讓德多項式的正交化推導 058
2.4.2 勒讓德多項式的生成函數、遞推關系與靜電勢展開 065
2.4.3 函數的勒讓德級數展開 072
2.5 切比雪夫多項式 075
2.5.1 第一類切比雪夫多項式 076
2.5.2 第二類切比雪夫多項式 083
2.6 正交多項式 084
2.6.1 正交多項式的三項遞推關系 085
2.6.2 函數展開範式:廣義傅裏葉級數 087
第3章 矩陣 089
3.1 矩陣基礎 091
3.1.1 特殊矩陣的基本概念 091
3.1.2 矩陣的相似變換 094
3.1.3 格拉姆-施密特正交化 098
3.1.4 特殊矩陣的性質 100
3.2 線性方程組的解 102
3.2.1 正向代入法 103
3.2.2 算法的時間覆雜度 104
3.2.3 反向代入法 106
3.2.4 高斯消元法 107
3.2.5 LU方法求解線性方程組 111
3.2.6 列主元高斯消元法 117
3.2.7 雅可比疊代法 121
3.3 疊代法求解特定特征值 127
3.3.1 冪法 129
3.3.2 反冪法 139
3.3.3 移位反冪法 142
3.3.4 瑞利商疊代法 143
3.4 QR算法求解全譜特征值 144
3.4.1 矩陣的QR分解 145
3.4.2 特征值問題的三角化理論 149
3.4.3 同時疊代法 153
3.4.4 QR法 161
3.4.5 Hessenberg形式的QR算法 164
第4章 微分 191
4.1 有限差分法 192
4.1.1 基礎一階差分方法 193
4.1.2 中心差分法 196
4.2 誤差特性分析 197
4.2.1 誤差的傳播 197
4.2.2 有限差分法的誤差特性 202
4.3 導數的高階近似 205
4.4 二次導數近似 208
4.5 理查森外推法 210
4.6 實踐:算氬原子之間的相互作用力 215
第5章 求根 220
5.1 條件數、收斂階和終止準則 220
5.1.1 條件數 221
5.1.2 收斂階 222
5.1.3 終止準則 223
5.2 單變量方程的求根 225
5.2.1 不動點法 225
5.2.2 二分法 230
5.2.3 牛頓法 232
5.2.4 弦截法 239
5.2.5 實踐:求球體的浸沒深度 242
5.3 多項式求根的矩陣方法 245
5.4 非線性方程組的解 250
5.4.1 牛頓法 253
5.4.2 離散牛頓法 256
5.4.3 布羅伊登方法 258
5.4.4 布羅伊登好方法 265
5.4.5 實踐:電磁對抗環境下的戰術定位求解 269
5.5 一維函數極值數值求解 275
5.5.1 導數信息已知的一維極值問題求解 276
5.5.2 黃金分割法求解一維函數的極值 278
5.6 多維函數的極值求解 282
5.6.1 梯度下降法 284
5.6.2 多維極值牛頓法 287
5.6.3 共軛梯度法 289
5.6.4 Powell方法 300
第6章 函數插值與擬合 304
6.1 多項式插值 309
6.1.1 單項式插值 311
6.1.2 拉格朗日插值 312
6.1.3 重心拉格朗日插值 314
6.1.4 拉格朗日插值誤差分析 316
6.1.5 埃爾米特插值 319
6.2 三次樣條插值 322
6.2.1 三節點的三次樣條插值 323
6.2.2 多節點樣條插值 325
6.3 三角多項式插值 329
6.3.1 離散三角多項式插值 330
6.3.2 離散傅裏葉變換 336
6.4 快速傅裏葉變換 340
6.4.1 庫利-圖基的基2分解算法 341
6.4.2 多項式乘法視角下的FFT計算 343
6.5 最小二乘法擬合 349
6.5.1 統計量 350
6.5.2 最小二乘法的線性擬合 352
6.5.3 最小二乘法一般函數擬合 357
6.5.4 實踐:原子彈爆炸半徑推斷 362
6.6 參數的線性統計推斷 367
6.6.1 概率與統計基礎 367
6.6.2 最大似然估計 373
6.6.3 貝葉斯線性回歸 383
6.7 非線性最小二乘法擬合 396
6.7.1 高斯-牛頓法 397
6.7.2 人工神經網絡算法擬合 400
第7章 數值積分 409
7.1 牛頓-科特斯積分 410
7.1.1 矩形法 412
7.1.2 梯形法 416
7.1.3 辛普森法 418
7.1.4 牛頓-科特斯積分總結 423
7.2 加倍面板法 424
7.3 龍貝格積分 427
7.4 高斯積分 431
7.4.1 節點分布 432
7.4.2 權重的計算 437
7.4.3 積分區間變換 439
7.4.4 誤差分析 441
7.4.5 其他高斯積分 442
7.5 蒙特卡羅積分 444
7.5.1 隨機數 445
7.5.2 一維蒙特卡羅積分 448
7.5.3 非均勻分布蒙特卡羅積分 453
7.5.4 多維蒙特卡羅積分 459
第8章 微分方程 472
8.1 初始值微分方程 474
8.1.1 歐拉法 474
8.1.2 二階顯式龍格-庫塔方法 481
8.1.3 二階隱式龍格-庫塔法 486
8.1.4 四階龍格-庫塔方法 488
8.1.5 自適應方法 491
8.1.6 聯立微分方程組 496
8.2 邊值問題 498
8.2.1 打靶法 499
8.2.2 矩陣法 500
8.3 特征值問題 501
8.3.1 打靶法 502
8.3.2 矩陣法 504
8.4 偏微分方程 510
8.4.1 有限差分法 511
8.4.2 譜方法 513
致謝 517
參考文獻 520