C語言演算法速查手冊

來源:互聯網
上載者:User

 

 

第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語言的優點和缺點 4
1.2.1 C語言的優點 4
1.2.2 C語言的缺點 6
1.3 演算法概述 7
1.3.1 演算法的基本特徵 7
1.3.2 演算法的複雜度 8
1.3.3 演算法的準確性 10
1.3.4 演算法的穩定性 14

第2章 複數運算 18
2.1 複數的四則運算 18
2.1.1 [演算法1] 複數乘法 18
2.1.2 [演算法2] 複數除法 20
2.1.3 【執行個體5】 複數的四則運算 22
2.2 複數的常用函數運算 23
2.2.1 [演算法3] 複數的乘冪 23
2.2.2 [演算法4] 複數的n次方根 25
2.2.3 [演算法5] 複數指數 27
2.2.4 [演算法6] 複數對數 29
2.2.5 [演算法7] 複數正弦 30
2.2.6 [演算法8] 複數餘弦 32
2.2.7 【執行個體6】 複數的函數運算 34

第3章 多項式計算 37
3.1 多項式的表示方法 37
3.1.1 係數標記法 37
3.1.2 點標記法 38
3.1.3 [演算法9] 係數表示轉化為點表示 38
3.1.4 [演算法10] 點表示轉化為係數表示 42
3.1.5 【執行個體7】 係數標記法與點標記法的轉化 46
3.2 多項式運算 47
3.2.1 [演算法11] 複係數多項式相乘 47
3.2.2 [演算法12] 實係數多項式相乘 50
3.2.3 [演算法13] 複係數多項式相除 52
3.2.4 [演算法14] 實係數多項式相除 54
3.2.5 【執行個體8】 複係數多項式的乘除法 56
3.2.6 【執行個體9】 實係數多項式的乘除法 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章 線性代數方程組的求解 154
5.1 高斯消去法 154
5.1.1 [演算法36] 求解複係數方程組的全選主元高斯消去法 155
5.1.2 [演算法37] 求解實係數方程組的全選主元高斯消去法 160
5.1.3 [演算法38] 求解複係數方程組的全選主元高斯-約當消去法 163
5.1.4 [演算法39] 求解實係數方程組的全選主元高斯-約當消去法 168
5.1.5 [演算法40] 求解大型稀疏係數矩陣方程組的高斯-約當消去法 171
5.1.6 [演算法41] 求解三對角線方程組的追趕法 174
5.1.7 [演算法42] 求解帶型方程組的方法 176
5.1.8 【執行個體21】 解線性實係數方程組 179
5.1.9 【執行個體22】 解線性複係數方程組 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] 病態方程組的求解 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】 解病態方程組 214
5.3.8 【執行個體27】 用迭代法解方程組 215
5.3.9 【執行個體28】 求解托伯利茲方程組 217

第6章 非線性方程與方程組的求解 219
6.1 非線性方程求根的基本過程 219
6.1.1 確定非線性方程實根的初始近似值或根的所在區間 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 求實係數多項式方程全部根的方法 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章 代數插值法 254
7.1 拉格朗日插值法 254
7.1.1 [演算法59] 線性插值 255
7.1.2 [演算法60] 二次拋物線插值 256
7.1.3 [演算法61] 全區間插值 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] 第一類邊界條件的三次樣條函數插值 287
7.5.2 [演算法69] 第二類邊界條件的三次樣條函數插值 292
7.5.3 [演算法70] 第三類邊界條件的三次樣條函數插值 296
7.5.4 【執行個體40】 樣條插值法 301
7.6 連分式插值 303
7.6.1 [演算法71] 連分式插值 304
7.6.2 【執行個體41】 驗證連分式插值的函數 308

第8章 數值積分法 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】 有限區間高斯求積法 342
8.2.7 【執行個體45】 半無限區間內高斯求積法 343
8.2.8 【執行個體46】 無限區間內高斯求積法 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】 歐拉方法求常微分方程數值解 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] 全區間積分的雙邊法 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 矩形地區曲面擬合 419
10.2.1 [演算法97] 矩形地區最小二乘曲面擬合 419
10.2.2 【執行個體55】 二元多項式擬合 428

第11章 特殊函數 430
11.1 連分式級數和指數積分 430
11.1.1 [演算法98] 連分式級數求值 430
11.1.2 [演算法99] 指數積分 433
11.1.3 【執行個體56】 連分式級數求值 436
11.1.4 【執行個體57】 指數積分求值 438
11.2 伽馬函數 439
11.2.1 [演算法100] 伽馬函數 439
11.2.2 [演算法101] 貝塔函數 441
11.2.3 [演算法102] 階乘 442
11.2.4 【執行個體58】 伽馬函數和貝塔函數求值 443
11.2.5 【執行個體59】 階乘求值 444
11.3 不完全伽馬函數 445
11.3.1 [演算法103] 不完全伽馬函數 445
11.3.2 [演算法104] 誤差函數 448
11.3.3 [演算法105] 卡方分布函數 450
11.3.4 【執行個體60】 不完全伽馬函數求值 451
11.3.5 【執行個體61】 誤差函數求值 452
11.3.6 【執行個體62】 卡方分布函數求值 453
11.4 不完全貝塔函數 454
11.4.1 [演算法106] 不完全貝塔函數 454
11.4.2 [演算法107] 學生分布函數 457
11.4.3 [演算法108] 累積二項式分布函數 458
11.4.4 【執行個體63】 不完全貝塔函數求值 459
11.5 貝塞爾函數 461
11.5.1 [演算法109] 第一類整數階貝塞爾函數 461
11.5.2 [演算法110] 第二類整數階貝塞爾函數 466
11.5.3 [演算法111] 變型第一類整數階貝塞爾函數 469
11.5.4 [演算法112] 變型第二類整數階貝塞爾函數 473
11.5.5 【執行個體64】 貝塞爾函數求值 476
11.5.6 【執行個體65】 變型貝塞爾函數求值 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】 第一類勒讓德橢圓函數積分求值 490
11.6.6 【執行個體67】 第二類勒讓德橢圓函數積分求值 492

第12章 極值問題 494
12.1 一維極值求解方法 494
12.1.1 [演算法117] 確定極小值點所在的區間 494
12.1.2 [演算法118] 一維黃金分割搜尋 499
12.1.3 [演算法119] 一維Brent方法 502
12.1.4 [演算法120] 使用一階導數的Brent方法 506
12.1.5 【執行個體68】 使用黃金分割搜尋法求極值 511
12.1.6 【執行個體69】 使用Brent法求極值 513
12.1.7 【執行個體70】 使用帶導數的Brent法求極值 515
12.2 多元函數求極值 517
12.2.1 [演算法121] 不需要導數的一維搜尋 517
12.2.2 [演算法122] 需要導數的一維搜尋 519
12.2.3 [演算法123] Powell方法 522
12.2.4 [演算法124] 共軛梯度法 525
12.2.5 [演算法125] 准牛頓法 531
12.2.6 【執行個體71】 驗證不使用導數的一維搜尋 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] 解線性規劃問題的單純形法 556
12.3.4 【執行個體75】 用單純形法求無約束條件下N維的極值 568
12.3.5 【執行個體76】 用單純形法求有約束條件下N維的極值 569
12.3.6 【執行個體77】 求解線性規劃問題 571

第13章 隨機數產生與統計描述 574
13.1 均勻分布隨機序列 574
13.1.1 [演算法129] 產生0到1之間均勻分布的一個隨機數 574
13.1.2 [演算法130] 產生0到1之間均勻分布的隨機數序列 576
13.1.3 [演算法131] 產生任意區間內均勻分布的一個隨機整數 577
13.1.4 [演算法132] 產生任意區間內均勻分布的隨機整數序列 578
13.1.5 【執行個體78】 產生0到1之間均勻分布的隨機數序列 580
13.1.6 【執行個體79】 產生任意區間內均勻分布的隨機整數序列 581
13.2 常態分佈隨機序列 582
13.2.1 [演算法133] 產生任意均值與方差的常態分佈的一個隨機數 582
13.2.2 [演算法134] 產生任意均值與方差的常態分佈的隨機數序列 585
13.2.3 【執行個體80】 產生任意均值與方差的常態分佈的一個隨機數 587
13.2.4 【執行個體81】 產生任意均值與方差的常態分佈的隨機數序列 588
13.3 統計描述 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] 有序數組的二分尋找 609
14.1.2 [演算法141] 無序數組同時尋找最大和最小的元素 611
14.1.3 [演算法142] 無序數組尋找第M小的元素 613
14.1.4 【執行個體86】 基本尋找 615
14.2 結構體和磁碟檔案的尋找 617
14.2.1 [演算法143] 無序結構體數組的順序尋找 617
14.2.2 [演算法144] 磁碟檔案中記錄的順序尋找 618
14.2.3 【執行個體87】 結構體數組和檔案中的尋找 619
14.3 雜湊尋找 622
14.3.1 [演算法145] 字串雜湊函數 622
14.3.2 [演算法146] 雜湊函數 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] 計數排序 651
15.4.2 [演算法157] 基數排序 653
15.4.3 【執行個體92】 線性時間排序 656
15.5 歸併排序 657
15.5.1 [演算法158] 二路歸併排序 658
15.5.2 【執行個體93】 二路歸併排序 660

第16章 數學變換與濾波 662
16.1 快速傅裡葉變換 662
16.1.1 [演算法159] 複資料快速傅裡葉變換 662
16.1.2 [演算法160] 複資料快速傅裡葉逆變換 666
16.1.3 [演算法161] 實資料快速傅裡葉變換 669
16.1.4 【執行個體94】 驗證傅裡葉變換的函數 671
16.2 其他常用變換 674
16.2.1 [演算法162] 快速沃爾什變換 674
16.2.2 [演算法163] 快速哈達瑪變換 678
16.2.3 [演算法164] 快速餘弦變換 682
16.2.4 【執行個體95】 驗證沃爾什變換和哈達瑪的函數 684
16.2.5 【執行個體96】 驗證離散餘弦變換的函數 687
16.3 平滑和濾波 688
16.3.1 [演算法165] 五點三次平滑 689
16.3.2 [演算法166] α-β-γ濾波 690
16.3.3 【執行個體97】 驗證五點三次平滑 692
16.3.4 【執行個體98】 驗證α-β-γ濾波演算法 693

 

這是一本不錯的書,從網上找了原始碼,地址如下:http://download.csdn.net/source/2280042

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.