本書用
C語言編寫了科研和工程中最常用的166個
算法,這些算法包括復數(shù)運算、多項式的計算、矩陣運算、線性代數(shù)方程組的求解、非線性方程與方程組的求解、代數(shù)插值法、數(shù)值積分法、常微分方程(組)初值問題的求解、擬合與逼近、特殊函數(shù)、極值問題、隨機數(shù)產(chǎn)生與統(tǒng)計描述、查找、排序、數(shù)學變換與濾波等。同時結合這些算法列舉了將近100個應用實例,對其進行驗證和分析。.
本書適用于C語言算法的初學者,也可以作為高等院校師生的學習參考用書。...
?
目錄
第1章 緒論. 1
1.1 程序設計語言概述 1
1.1.1 機器語言 1
1.1.2
匯編語言 2
1.1.3 高級語言 2
1.1.4 C語言 3
1.2 C語言的優(yōu)點和缺點 4
1.2.1 C語言的優(yōu)點 4
1.2.2 C語言的缺點 6
1.3 算法概述 7
1.3.1 算法的基本特征 7
1.3.2 算法的復雜度 8
1.3.3 算法的準確性 10
1.3.4 算法的穩(wěn)定性 14
第2章 復數(shù)運算 18
2.1 復數(shù)的四則運算 18
2.1.1 [算法1] 復數(shù)乘法 18
2.1.2 [算法2] 復數(shù)除法 20
2.1.3 【實例5】 復數(shù)的四則運算 22
2.2 復數(shù)的常用函數(shù)運算 23
.2.2.1 [算法3] 復數(shù)的乘冪 23
2.2.2 [算法4] 復數(shù)的n次方根 25
2.2.3 [算法5] 復數(shù)指數(shù) 27
2.2.4 [算法6] 復數(shù)對數(shù) 29
2.2.5 [算法7] 復數(shù)正弦 30
2.2.6 [算法8] 復數(shù)余弦 32
2.2.7 【實例6】 復數(shù)的函數(shù)運算 34
第3章 多項式計算 37
3.1 多項式的表示方法 37
3.1.1 系數(shù)表示法 37
3.1.2 點表示法 38
3.1.3 [算法9] 系數(shù)表示轉化為點表示 38
3.1.4 [算法10] 點表示轉化為系數(shù)表示 42
3.1.5 【實例7】 系數(shù)表示法與點表示法的轉化 46
3.2 多項式運算 47
3.2.1 [算法11] 復系數(shù)多項式相乘 47
3.2.2 [算法12] 實系數(shù)多項式相乘 50
3.2.3 [算法13] 復系數(shù)多項式相除 52
3.2.4 [算法14] 實系數(shù)多項式相除 54
3.2.5 【實例8】 復系數(shù)多項式的乘除法 56
3.2.6 【實例9】 實系數(shù)多項式的乘除法 57
3.3 多項式的求值 59
3.3.1 [算法15] 一元多項式求值 59
3.3.2 [算法16] 一元多項式多組求值 60
3.3.3 [算法17] 二元多項式求值 63
3.3.4 【實例10】 一元多項式求值 65
3.3.5 【實例11】 二元多項式求值 66
第4章 矩陣計算 68
4.1 矩陣相乘 68
4.1.1 [算法18] 實矩陣相乘 68
4.1.2 [算法19] 復矩陣相乘 70
4.1.3 【實例12】 實矩陣與復矩陣的乘法 72
4.2 矩陣的秩與行列式值 73
4.2.1 [算法20] 求矩陣的秩 73
4.2.2 [算法21] 求一般矩陣的行列式值 76
4.2.3 [算法22] 求對稱正定矩陣的行列式值 80
4.2.4 【實例13】 求矩陣的秩和行列式值 82
4.3 矩陣求逆 84
4.3.1 [算法23] 求一般復矩陣的逆 84
4.3.2 [算法24] 求對稱正定矩陣的逆 90
4.3.3 [算法25] 求托伯利茲矩陣逆的Trench方法 92
4.3.4 【實例14】 驗證矩陣求逆算法 97
4.3.5 【實例15】 驗證T矩陣求逆算法 99
4.4 矩陣分解與相似變換 102
4.4.1 [算法26] 實對稱矩陣的LDL分解 102
4.4.2 [算法27] 對稱正定實矩陣的Cholesky分解 104
4.4.3 [算法28] 一般實矩陣的全選主元LU分解 107
4.4.4 [算法29] 一般實矩陣的QR分解 112
4.4.5 [算法30] 對稱實矩陣相似變換為對稱三對角陣 116
4.4.6 [算法31] 一般實矩陣相似變換為上Hessen-Burg矩陣 121
4.4.7 【實例16】 對一般實矩陣進行QR分解 126
4.4.8 【實例17】 對稱矩陣的相似變換 127
4.4.9 【實例18】 一般實矩陣相似變換 129
4.5 矩陣特征值的計算 130
4.5.1 [算法32] 求上Hessen-Burg矩陣全部特征值的QR方法 130
4.5.2 [算法33] 求對稱三對角陣的全部特征值 137
4.5.3 [算法34] 求對稱矩陣特征值的雅可比法 143
4.5.4 [算法35] 求對稱矩陣特征值的雅可比過關法 147
4.5.5 【實例19】 求上Hessen-Burg矩陣特征值 151
4.5.6 【實例20】 分別用兩種雅克比法求對稱矩陣特征值 152
第5章 線性代數(shù)方程組的求解 154
5.1 高斯消去法 154
5.1.1 [算法36] 求解復系數(shù)方程組的全選主元高斯消去法 155
5.1.2 [算法37] 求解實系數(shù)方程組的全選主元高斯消去法 160
5.1.3 [算法38] 求解復系數(shù)方程組的全選主元高斯-約當消去法 163
5.1.4 [算法39] 求解實系數(shù)方程組的全選主元高斯-約當消去法 168
5.1.5 [算法40] 求解大型稀疏系數(shù)矩陣方程組的高斯-約當消去法 171
5.1.6 [算法41] 求解三對角線方程組的追趕法 174
5.1.7 [算法42] 求解帶型方程組的方法 176
5.1.8 【實例21】 解線性實系數(shù)方程組 179
5.1.9 【實例22】 解線性復系數(shù)方程組 180
5.1.10 【實例23】 解三對角線方程組 182
5.2 矩陣分解法 184
5.2.1 [算法43] 求解對稱方程組的LDL分解法 184
5.2.2 [算法44] 求解對稱正定方程組的Cholesky分解法 186
5.2.3 [算法45] 求解線性最小二乘問題的QR分解法 188
5.2.4 【實例24】 求解對稱正定方程組 191
5.2.5 【實例25】 求解線性最小二乘問題 192
5.3 迭代方法 193
5.3.1 [算法46] 病態(tài)方程組的求解 193
5.3.2 [算法47] 雅克比迭代法 197
5.3.3 [算法48] 高斯-塞德爾迭代法 200
5.3.4 [算法49] 超松弛方法 203
5.3.5 [算法50] 求解對稱正定方程組的共軛梯度方法 205
5.3.6 [算法51] 求解托伯利茲方程組的列文遜方法 209
5.3.7 【實例26】 解病態(tài)方程組 214
5.3.8 【實例27】 用迭代法解方程組 215
5.3.9 【實例28】 求解托伯利茲方程組 217
第6章 非線性方程與方程組的求解 219
6.1 非線性方程求根的基本過程 219
6.1.1 確定非線性方程實根的初始近似值或根的所在區(qū)間 219
6.1.2 求非線性方程根的精確解 221
6.2 求非線性方程一個實根的方法 221
6.2.1 [算法52] 對分法 221
6.2.2 [算法53] 牛頓法 223
6.2.3 [算法54] 插值法 226
6.2.4 [算法55] 埃特金迭代法 229
6.2.5 【實例29】 用對分法求非線性方程組的實根 232
6.2.6 【實例30】 用牛頓法求非線性方程組的實根 233
6.2.7 【實例31】 用插值法求非線性方程組的實根 235
6.2.8 【實例32】 用埃特金迭代法求非線性方程組的實根 237
6.3 求實系數(shù)多項式方程全部根的方法 238
6.3.1 [算法56] QR方法 238
6.3.2 【實例33】 用QR方法求解多項式的全部根 240
6.4 求非線性方程組一組實根的方法 241
6.4.1 [算法57] 梯度法 241
6.4.2 [算法58] 擬牛頓法 244
6.4.3 【實例34】 用梯度法計算非線性方程組的一組實根 250
6.4.4 【實例35】 用擬牛頓法計算非線性方程組的一組實根 252
第7章 代數(shù)插值法 254
7.1 拉格朗日插值法 254
7.1.1 [算法59] 線性插值 255
7.1.2 [算法60] 二次拋物線插值 256
7.1.3 [算法61] 全區(qū)間插值 259
7.1.4 【實例36】 拉格朗日插值 262
7.2 埃爾米特插值 263
7.2.1 [算法62] 埃爾米特不等距插值 263
7.2.2 [算法63] 埃爾米特等距插值 267
7.2.3 【實例37】 埃爾米特插值法 270
7.3 埃特金逐步插值 271
7.3.1 [算法64] 埃特金不等距插值 272
7.3.2 [算法65] 埃特金等距插值 275
7.3.3 【實例38】 埃特金插值 278
7.4 光滑插值 279
7.4.1 [算法66] 光滑不等距插值 279
7.4.2 [算法67] 光滑等距插值 283
7.4.3 【實例39】 光滑插值 286
7.5 三次樣條插值 287
7.5.1 [算法68] 第一類邊界條件的三次樣條函數(shù)插值 287
7.5.2 [算法69] 第二類邊界條件的三次樣條函數(shù)插值 292
7.5.3 [算法70] 第三類邊界條件的三次樣條函數(shù)插值 296
7.5.4 【實例40】 樣條插值法 301
7.6 連分式插值 303
7.6.1 [算法71] 連分式插值 304
7.6.2 【實例41】 驗證連分式插值的函數(shù) 308
第8章 數(shù)值積分法 309
8.1 變步長求積法 310
8.1.1 [算法72] 變步長梯形求積法 310
8.1.2 [算法73] 自適應梯形求積法 313
8.1.3 [算法74] 變步長辛卜生求積法 316
8.1.4 [算法75] 變步長辛卜生二重積分方法 318
8.1.5 [算法76] 龍貝格積分 322
8.1.6 【實例42】 變步長積分法進行一重積分 325
8.1.7 【實例43】 變步長辛卜生積分法進行二重積分 326
8.2 高斯求積法 328
8.2.1 [算法77] 勒讓德-高斯求積法 328
8.2.2 [算法78] 切比雪夫求積法 331
8.2.3 [算法79] 拉蓋爾-高斯求積法 334
8.2.4 [算法80] 埃爾米特-高斯求積法.. 336
8.2.5 [算法81] 自適應高斯求積方法 337
8.2.6 【實例44】 有限區(qū)間高斯求積法 342
8.2.7 【實例45】 半無限區(qū)間內高斯求積法 343
8.2.8 【實例46】 無限區(qū)間內高斯求積法 345
8.3 連分式法 346
8.3.1 [算法82] 計算一重積分的連分式方法 346
8.3.2 [算法83] 計算二重積分的連分式方法 350
8.3.3 【實例47】 連分式法進行一重積分 354
8.3.4 【實例48】 連分式法進行二重積分 355
8.4 蒙特卡洛法 356
8.4.1 [算法84] 蒙特卡洛法進行一重積分 356
8.4.2 [算法85] 蒙特卡洛法進行二重積分 358
8.4.3 【實例49】 一重積分的蒙特卡洛法 360
8.4.4 【實例50】 二重積分的蒙特卡洛法 361
第9章 常微分方程(組)初值問題的求解 363
9.1 歐拉方法 364
9.1.1 [算法86] 定步長歐拉方法 364
9.1.2 [算法87] 變步長歐拉方法 366
9.1.3 [算法88] 改進的歐拉方法 370
9.1.4 【實例51】 歐拉方法求常微分方程數(shù)值解 372
9.2 龍格-庫塔方法 376
9.2.1 [算法89] 定步長龍格-庫塔方法 376
9.2.2 [算法90] 變步長龍格-庫塔方法 379
9.2.3 [算法91] 變步長基爾方法 383
9.2.4 【實例52】 龍格-庫塔方法求常微分方程的初值問題 386
9.3 線性多步法 390
9.3.1 [算法92] 阿當姆斯預報校正法 390
9.3.2 [算法93] 哈明方法 394
9.3.3 [算法94] 全區(qū)間積分的雙邊法 399
9.3.4 【實例53】 線性多步法求常微分方程組初值問題 401
第10章 擬合與逼近 405
10.1 一元多項式擬合 405
10.1.1 [算法95] 最小二乘擬合 405
10.1.2 [算法96] 最佳一致逼近的里米茲方法 412
10.1.3 【實例54】 一元多項式擬合 417
10.2 矩形區(qū)域曲面擬合 419
10.2.1 [算法97] 矩形區(qū)域最小二乘曲面擬合 419
10.2.2 【實例55】 二元多項式擬合 428
第11章 特殊函數(shù) 430
11.1 連分式級數(shù)和指數(shù)積分 430
11.1.1 [算法98] 連分式級數(shù)求值 430
11.1.2 [算法99] 指數(shù)積分 433
11.1.3 【實例56】 連分式級數(shù)求值 436
11.1.4 【實例57】 指數(shù)積分求值 438
11.2 伽馬函數(shù) 439
11.2.1 [算法100] 伽馬函數(shù) 439
11.2.2 [算法101] 貝塔函數(shù) 441
11.2.3 [算法102] 階乘 442
11.2.4 【實例58】 伽馬函數(shù)和貝塔函數(shù)求值 443
11.2.5 【實例59】 階乘求值 444
11.3 不完全伽馬函數(shù) 445
11.3.1 [算法103] 不完全伽馬函數(shù) 445
11.3.2 [算法104] 誤差函數(shù) 448
11.3.3 [算法105] 卡方分布函數(shù) 450
11.3.4 【實例60】 不完全伽馬函數(shù)求值 451
11.3.5 【實例61】 誤差函數(shù)求值 452
11.3.6 【實例62】 卡方分布函數(shù)求值 453
11.4 不完全貝塔函數(shù) 454
11.4.1 [算法106] 不完全貝塔函數(shù) 454
11.4.2 [算法107] 學生分布函數(shù) 457
11.4.3 [算法108] 累積二項式分布函數(shù) 458
11.4.4 【實例63】 不完全貝塔函數(shù)求值 459
11.5 貝塞爾函數(shù) 461
11.5.1 [算法109] 第一類整數(shù)階貝塞爾函數(shù) 461
11.5.2 [算法110] 第二類整數(shù)階貝塞爾函數(shù) 466
11.5.3 [算法111] 變型第一類整數(shù)階貝塞爾函數(shù) 469
11.5.4 [算法112] 變型第二類整數(shù)階貝塞爾函數(shù) 473
11.5.5 【實例64】 貝塞爾函數(shù)求值 476
11.5.6 【實例65】 變型貝塞爾函數(shù)求值 477
11.6 Carlson橢圓積分 479
11.6.1 [算法113] 第一類橢圓積分 479
11.6.2 [算法114] 第一類橢圓積分的退化形式 481
11.6.3 [算法115] 第二類橢圓積分 483
11.6.4 [算法116] 第三類橢圓積分 486
11.6.5 【實例66】 第一類勒讓德橢圓函數(shù)積分求值 490
11.6.6 【實例67】 第二類勒讓德橢圓函數(shù)積分求值 492
第12章 極值問題 494
12.1 一維極值求解方法 494
12.1.1 [算法117] 確定極小值點所在的區(qū)間 494
12.1.2 [算法118] 一維黃金分割搜索 499
12.1.3 [算法119] 一維Brent方法 502
12.1.4 [算法120] 使用一階導數(shù)的Brent方法 506
12.1.5 【實例68】 使用黃金分割搜索法求極值 511
12.1.6 【實例69】 使用Brent法求極值 513
12.1.7 【實例70】 使用帶導數(shù)的Brent法求極值 515
12.2 多元函數(shù)求極值 517
12.2.1 [算法121] 不需要導數(shù)的一維搜索 517
12.2.2 [算法122] 需要導數(shù)的一維搜索 519
12.2.3 [算法123] Powell方法 522
12.2.4 [算法124] 共軛梯度法 525
12.2.5 [算法125] 準牛頓法 531
12.2.6 【實例71】 驗證不使用導數(shù)的一維搜索 536
12.2.7 【實例72】 用Powell算法求極值 537
12.2.8 【實例73】 用共軛梯度法求極值 539
12.2.9 【實例74】 用準牛頓法求極值 540
12.3 單純形法 542
12.3.1 [算法126] 求無約束條件下n維極值的單純形法 542
12.3.2 [算法127] 求有約束條件下n維極值的單純形法 548
12.3.3 [算法128] 解線性規(guī)劃問題的單純形法 556
12.3.4 【實例75】 用單純形法求無約束條件下N維的極值 568
12.3.5 【實例76】 用單純形法求有約束條件下N維的極值 569
12.3.6 【實例77】 求解線性規(guī)劃問題 571
第13章 隨機數(shù)產(chǎn)生與統(tǒng)計描述 574
13.1 均勻分布隨機序列 574
13.1.1 [算法129] 產(chǎn)生0到1之間均勻分布的一個隨機數(shù) 574
13.1.2 [算法130] 產(chǎn)生0到1之間均勻分布的隨機數(shù)序列 576
13.1.3 [算法131] 產(chǎn)生任意區(qū)間內均勻分布的一個隨機整數(shù) 577
13.1.4 [算法132] 產(chǎn)生任意區(qū)間內均勻分布的隨機整數(shù)序列 578
13.1.5 【實例78】 產(chǎn)生0到1之間均勻分布的隨機數(shù)序列 580
13.1.6 【實例79】 產(chǎn)生任意區(qū)間內均勻分布的隨機整數(shù)序列 581
13.2 正態(tài)分布隨機序列 582
13.2.1 [算法133] 產(chǎn)生任意均值與方差的正態(tài)分布的一個隨機數(shù) 582
13.2.2 [算法134] 產(chǎn)生任意均值與方差的正態(tài)分布的隨機數(shù)序列 585
13.2.3 【實例80】 產(chǎn)生任意均值與方差的正態(tài)分布的一個隨機數(shù) 587
13.2.4 【實例81】 產(chǎn)生任意均值與方差的正態(tài)分布的隨機數(shù)序列 588
13.3 統(tǒng)計描述 589
13.3.1 [算法135] 分布的矩 589
13.3.2 [算法136] 方差相同時的t分布檢驗 591
13.3.3 [算法137] 方差不同時的t分布檢驗 594
13.3.4 [算法138] 方差的F檢驗 596
13.3.5 [算法139] 卡方檢驗 599
13.3.6 【實例82】 計算隨機樣本的矩 601
13.3.7 【實例83】 t分布檢驗 602
13.3.8 【實例84】 F分布檢驗 605
13.3.9 【實例85】 檢驗卡方檢驗的算法 607
第14章 查找 609
14.1 基本查找 609
14.1.1 [算法140] 有序數(shù)組的二分查找 609
14.1.2 [算法141] 無序數(shù)組同時查找最大和最小的元素 611
14.1.3 [算法142] 無序數(shù)組查找第M小的元素 613
14.1.4 【實例86】 基本查找 615
14.2 結構體和磁盤文件的查找 617
14.2.1 [算法143] 無序結構體數(shù)組的順序查找 617
14.2.2 [算法144] 磁盤文件中記錄的順序查找 618
14.2.3 【實例87】 結構體數(shù)組和文件中的查找 619
14.3 哈希查找 622
14.3.1 [算法145] 字符串哈希函數(shù) 622
14.3.2 [算法146] 哈希函數(shù) 626
14.3.3 [算法147] 向哈希表中插入元素 628
14.3.4 [算法148] 在哈希表中查找元素 629
14.3.5 [算法149] 在哈希表中刪除元素 631
14.3.6 【實例88】 構造哈希表并進行查找 632
第15章 排序 636
15.1 插入排序 636
15.1.1 [算法150] 直接插入排序 636
15.1.2 [算法151] 希爾排序 637
15.1.3 【實例89】 插入排序 639
15.2 交換排序 641
15.2.1 [算法152] 氣泡排序 641
15.2.2 [算法153] 快速排序 642
15.2.3 【實例90】 交換排序 644
15.3 選擇排序 646
15.3.1 [算法154] 直接選擇排序 646
15.3.2 [算法155] 堆排序 647
15.3.3 【實例91】 選擇排序 650
15.4 線性時間排序 651
15.4.1 [算法156] 計數(shù)排序 651
15.4.2 [算法157] 基數(shù)排序 653
15.4.3 【實例92】 線性時間排序 656
15.5 歸并排序 657
15.5.1 [算法158] 二路歸并排序 658
15.5.2 【實例93】 二路歸并排序 660
第16章 數(shù)學變換與濾波 662
16.1 快速傅里葉變換 662
16.1.1 [算法159] 復數(shù)據(jù)快速傅里葉變換 662
16.1.2 [算法160] 復數(shù)據(jù)快速傅里葉逆變換 666
16.1.3 [算法161] 實數(shù)據(jù)快速傅里葉變換 669
16.1.4 【實例94】 驗證傅里葉變換的函數(shù) 671
16.2 其他常用變換 674
16.2.1 [算法162] 快速沃爾什變換 674
16.2.2 [算法163] 快速哈達瑪變換 678
16.2.3 [算法164] 快速余弦變換 682
16.2.4 【實例95】 驗證沃爾什變換和哈達瑪?shù)暮瘮?shù) 684
16.2.5 【實例96】 驗證離散余弦變換的函數(shù) 687
16.3 平滑和濾波 688
16.3.1 [算法165] 五點三次平滑 689
16.3.2 [算法166] α-β-γ濾波 690
16.3.3 【實例97】 驗證五點三次平滑 692
16.3.4 【實例98】 驗證α-β-γ濾波算法... 693
?
評論
查看更多