作 者:(美)保羅·奧蘭德 著 百度KFive 譯
定 價:129.8
出 版 社:人民郵電出版社
出版日期:2021年12月01日
頁 數:536
裝 幀:平裝
ISBN:9787115576491
1.500餘幅圖片,本書以圖文結合的方式幫助你用Python代碼解決程序設計中的數學問題。2.300餘個練習,通過邊學邊練,你會發現線性代數和微積分的重要概念躍然紙上、印在腦中。3.提供配套源代碼和本書彩色圖片下載。數學擁有無窮的力量。它既幫助遊戲開發工程師建模物理世界,也幫助量化金融分析師賺取利潤,還幫助音頻處理工程師制作音樂。在數據科學和機器學習領域,數學知識更是不可或缺的。有人熱愛數學,將它比作詩歌,為之著迷一生;有人很難領會數學的妙處,受困於“數學焦慮癥”。本書正是為了幫助程等
●第1章通過代碼學數學1
1.1使用數學和軟件解決商業問題2
1.1.1預測金融市場走勢2
1.1.2尋找優質交易4
1.1.3構建三維圖形和動畫6
1.1.4對物理世界建模8
1.2如何高效學習數學9
1.2.1Jane想學習數學9
1.2.2在數學課本中苦苦掙扎10
1.3用上你訓練有素的左腦11
1.3.1使用正式的語言11
1.3.2構建你自己的計算器12
1.3.3用函數建立抽像概念13
1.4小結14
第一部分向量和圖形
第2章二維向量繪圖16
2.1二維向量繪圖16
2.1.1如何表示二維向量18
2.1.2用Python繪制二維圖形20
2.1.3練習23
2.2平面向量運算25
2.2.1向量的分量和長度28
2.2.2向量與數相乘29
2.2.3減法、位移和距離31
2.2.4練習34
2.3平面上的角度和三角學41
2.3.1從角度到分量42
2.3.2Python中的三角學和弧度46
2.3.3從分量到角度47
2.3.4練習50
2.4向量集合的變換57
2.4.1組合向量變換59
2.4.2練習60
2.5用Matplotlib繪圖61
2.6小結62
第3章上升到三維世界63
3.1在三維空間中繪制向量64
3.1.1用坐標表示三維向量66
3.1.2用Python進行三維繪圖66
3.1.3練習68
3.2三維空間中的向量運算70
3.2.1添加三維向量70
3.2.2三維空間中的標量乘法72
3.2.3三維向量減法72
3.2.4計算長度和距離73
3.2.5計算角度和方向74
3.2.6練習75
3.3點積:測量向量對齊78
3.3.1繪制點積78
3.3.2計算點積80
3.3.3點積的示例82
3.3.4用點積測量角度83
3.3.5練習85
3.4向量積:測量定向區域88
3.4.1在三維空間中確定自己的朝向88
3.4.2找到向量積的方向89
3.4.3求向量積的長度91
3.4.4計算三維向量的向量積92
3.4.5練習93
3.5在二維平面上渲染三維對像96
3.5.1使用向量定義三維對像97
3.5.2二維投影98
3.5.3確定面的朝向和陰影99
3.5.4練習101
3.6小結102
第4章變換向量和圖形103
4.1變換三維對像105
4.1.1繪制變換後的對像105
4.1.2組合向量變換107
4.1.3繞軸旋轉對像110
4.1.4創造屬於你自己的幾何變換113
4.2線性變換117
4.2.1向量運算的不變性117
4.2.2圖解線性變換119
4.2.3為什麼要做線性變換121
4.2.4計算線性變換124
4.2.5練習127
4.3小結132
第5章使用矩陣計算變換134
5.1用矩陣表示線性變換135
5.1.1把向量和線性變換寫成矩陣形式135
5.1.2矩陣與向量相乘136
5.1.3用矩陣乘法組合線性變換138
5.1.4實現矩陣乘法140
5.1.5用矩陣變換表示三維動畫141
5.1.6練習142
5.2不同形狀矩陣的含義148
5.2.1列向量組成的矩陣149
5.2.2哪些矩陣可以相乘151
5.2.3將方陣和非方陣視為向量函數152
5.2.4從三維到二維的線性映射投影154
5.2.5組合線性映射156
5.2.6練習157
5.3用矩陣平移向量163
5.3.1線性化平面平移163
5.3.2尋找做二維平移的三維矩陣167
5.3.4在四維世界裡平移三維對像170
5.4小結174
第6章高維泛化176
6.1泛化向量的定義177
6.1.1為二維坐標向量創建一個類178
6.1.3使用同樣的方法定義三維向量179
6.1.4構建向量基類180
6.1.5定義向量空間182
6.1.6對向量空間類測試185
6.2探索不同的向量空間188
6.2.1枚舉所有坐標向量空間188
6.2.2識別現實中的向量190
6.2.3將函數作為向量處理192
6.2.4將矩陣作為向量處理194
6.2.5使用向量運算來操作圖像195
6.2.6練習198
6.3尋找更小的向量空間205
6.3.1定義子空間205
6.3.2從單個向量開始207
6.3.3生成更大的空間207
6.3.4定義“維度”的概念209
6.3.5尋找函數向量空間的子空間210
6.3.6圖像的子空間212
6.3.7練習214
6.4小結220
第7章求解線性方程組222
7.1設計一款街機遊戲223
7.1.1遊戲建模223
7.1.2渲染遊戲224
7.1.3發射激光225
7.1.4練習226
7.2找到直線的交點227
7.2.1為直線選擇正確的公式227
7.2.2直線的標準形式方程229
7.2.3線性方程組的矩陣形式231
7.2.4使用NumPy求解線性方程組233
7.2.6識別不可解方程組234
7.2.7練習236
7.3將線性方程泛化到更高維度240
7.3.1在三維空間中表示平面240
7.3.2在三維空間中求解線性方程組243
7.3.4計算維數、方程和解245
7.3.5練習246
7.4通過解線性方程來改變向量的基253
7.4.1在三維空間中求解255
7.4.2練習256
7.5小結257
第二部分微積分和物理仿真
第8章理解變化率261
8.1根據體積計算平均流速262
8.1.1實現average_flow_rate函數263
8.1.2用割線描繪平均流速264
8.1.3負變化率265
8.1.4練習266
8.2繪制隨時間變化的平均流速266
8.2.1計算不同時間段內的平均流速267
8.2.2繪制間隔流速圖268
8.2.3練習270
8.3瞬時流速的近似值271
8.3.1計算小割線的斜率272
8.3.2構建瞬時流速函數274
8.3.3柯裡化並繪制瞬時流速函數277
8.4體積變化的近似值278
8.4.1計算短時間間隔內的體積變化279
8.4.2將時間分割成更小的間隔280
8.4.3在流速圖上繪制體積變化的圖形280
8.4.4練習283
8.5繪制隨時間變化的體積圖283
8.5.1計算隨時間變化的體積283
8.5.2繪制體積函數的黎曼和285
8.5.3提升近似結果的準確度286
8.5.4定積分和不定積分288
8.6小結290
第9章模擬運動的對像291
9.1模擬勻速運動291
9.1.1給小行星設置速度292
9.1.2更新遊戲引擎,讓小行星運動292
9.1.3保持小行星在屏幕上293
9.1.4練習295
9.2模擬加速295
9.3深入研究歐拉方法296
9.3.1手動計算歐拉方法297
9.3.2使用Python實現算法298
9.4用更小的時間步執行歐拉方法300
9.5小結305
第10章使用符號表達式306
10.1用計算機代數繫統計算準確的導數309
10.2.1將表達式拆分成若干部分310
10.2.3使用Python語言實現表達式樹311
10.2.4練習313
10.3符號表達式的應用315
10.3.1尋找表達式中的所有變量317
10.3.3表達式展開319
10.3.4練習321
10.4求函數的導數323
10.4.1冪的導數324
10.4.2變換後函數的導數324
10.4.3一些特殊函數的導數326
10.4.4乘積與組合的導數327
10.4.5練習328
10.5自動計算導數330
10.5.1實現表達式的導數方法330
10.5.2實現乘積法則和鏈式法則332
10.5.4練習334
10.6符號化積分函數335
10.6.1積分作為反導數335
10.6.2SymPy庫介紹336
10.6.3練習337
10.7小結338
第11章模擬力場339
11.1用向量場對引力建模339
11.2引力場建模342
11.2.1定義一個向量場343
11.2.2定義一個簡單的力場344
11.3把引力加入小行星遊戲345
11.3.1讓遊戲中的對像感受到引力346
11.3.2練習349
11.4引入勢能350
11.4.1定義勢能標量場351
11.4.2將標量場繪制成熱圖352
11.4.3將標量場繪制成等高線圖354
11.5.1用橫截面測量陡度354
11.5.2計算偏導數356
11.5.3用梯度求圖形的陡度357
11.5.4用勢能的梯度計算力場359
11.5.5練習361
11.6小結364
第12章優化物理繫統365
12.1測試炮彈模擬器367
12.1.1用歐拉方法建立模擬器368
12.1.2測量彈道的屬性369
12.1.3探索不同的發射角度370
12.1.4練習371
12.2計算很好射程373
12.2.1求炮彈射程關於發射角的函數373
12.2.2求優選射程376
12.2.3確定優選值和最小值378
12.2.4練習379
12.3增強模擬器381
12.3.1添加另一個維度381
12.3.2在炮彈周圍建立地形模型383
12.3.4練習386
12.4利用梯度上升優化範圍388
12.4.1繪制射程與發射參數的關繫圖388
12.4.2射程函數的梯度389
12.4.3利用梯度尋找上坡方向390
12.4.4實現梯度上升392
12.4.5練習395
12.5小結399
第13章用傅裡葉級數分析聲波400
13.1聲波的組合和分解401
13.2用Python播放聲波402
13.2.1產生第一個聲音402
13.2.2演奏音符405
13.2.3練習406
13.3把正弦波轉化為聲音406
13.3.1用正弦函數制作音頻406
13.3.2改變正弦函數的頻率408
13.3.3對聲波進行采樣和播放409
13.3.4練習411
13.4組合聲波得到新的聲波412
13.4.1疊加聲波的樣本來構造和弦412
13.4.2兩個聲波疊加後的圖形413
13.4.3構造正弦波的線性組合414
13.4.4用正弦波構造一個熟悉的函數416
13.4.5練習419
13.5將聲波分解為傅裡葉級數419
13.5.1用內積確定向量分量420
13.5.2定義周期函數的內積421
13.5.3實現一個函數來計算傅裡葉繫數423
13.5.4求方波的傅裡葉繫數424
13.5.5其他波形的傅裡葉繫數424
13.5.6練習426
13.6小結428
第三部分機器學習的應用
第14章數據的函數擬合431
14.1衡量函數的擬合質量433
14.1.1計算數據與函數的距離434
14.1.2計算誤差的平方和436
14.1.3計算汽車價格函數的代價440
14.2探索函數空間441
14.2.1繪制通過原點的直線的代價442
14.2.2所有線性函數的空間443
14.2.3練習445
14.3使用梯度下降法尋找很好擬合線445
14.3.1縮放數據445
14.3.2找到並繪制很好擬合線446
14.3.3練習447
14.4非線性函數擬合448
14.4.1理解指數函數的行為448
14.4.2尋找很好擬合的指數函數451
14.5小結453
第15章使用logistic回歸對數據分類455
15.1用真實數據測試分類函數456
15.1.1加載汽車數據457
15.1.2測試分類函數458
15.1.3練習458
15.2繪制決策邊界460
15.2.1繪制汽車的向量空間460
15.2.2繪制更好的決策邊界461
15.2.3實現分類函數462
15.2.4練習463
15.3將分類問題構造為回歸問題464
15.3.1縮放原始汽車數據464
15.3.2衡量汽車的“寶馬性”465
15.3.3sigmoid函數467
15.3.4將sigmoid函數與其他函數組合468
15.3.5練習470
15.4探索可能的logistic函數471
15.4.1參數化logistic函數472
15.4.2衡量logistic函數的擬合質量472
15.4.3測試不同的logistic函數474
15.4.4練習475
15.5尋找很好logistic函數477
15.5.1三維中的梯度下降法477
15.5.2使用梯度下降法尋找很好擬合478
15.5.3測試和理解很好logistic分類器479
15.5.4練習481
15.6小結483
第16章訓練神經網絡484
16.1用神經網絡對數據進行分類485
16.2手寫數字圖像分類486
16.2.1構建64維圖像向量487
16.2.2構建隨機數字分類器488
16.2.3測試數字分類器的表現489
16.2.4練習490
16.3設計神經網絡491
16.3.1組和連接492
16.3.2神經網絡數據流492
16.3.3計算激活值495
16.3.4用矩陣表示法計算激活值498
16.4用Python構建神經網絡499
16.4.1用Python實現MLP類500
16.4.2評估MLP502
16.4.3測試MLP的分類效果503
16.4.4練習504
16.5使用梯度下降法訓練神經網絡504
16.5.1將訓練構造為最小化問題505
16.5.3使用scikit-learn自動訓練507
16.6使用反向傳播計算梯度509
16.6.1根據最後一層的權重計算代價509
16.6.2利用鏈式法則計算最後一層權重的偏導數510
16.6.3練習512
16.7小結513
附錄A準備Python(圖靈社區下載)
附錄BPython技巧和竅門(圖靈社區下載)
附錄C使用OpenGL和PyGame加載和渲染三維模型(圖靈社區下載)
附錄D數學符號參考(圖靈社區下載)
代碼和數學是相知相惜的好伙伴,它們基於共同的理性思維,數學公式的推導可以自然地在編寫代碼的過程中展開。本書帶領程序員使用自己熟知的工具,即代碼,來理解機器學習和遊戲設計中的數學知識。通過Python代碼和200多個小項目,讀者將掌握二維向量、三維向量、矩陣變換、線性方程、微積分、線性回歸、logistic回歸、梯度下降等知識。