數學知識對程式設計很有用,但是很多寫給程式員的數學書都比較難。我們為什麼不從基礎的數學知識開始學習呢?
程式員的數學基礎 Python實戰

1.本書的重點不在于如何解題,而在于幫助讀者在計算機世界裡如何利用數學解決算法問題,讓程式員更容易了解數學背後的邏輯,進而編寫出更優雅的代碼
2.本書不是一味的讓讀者看書,還會用Python建立一些簡單的程式,讓讀者更直覺的了解程式的工作模式,通過嘗試改變變量值或者改變程式中表達式的某一部分,使讀者對數學有更深入的了解
3.通過具體的案例與實踐幫助讀者把數學知識内化于心
4.本書緻力于把數學變得通俗易懂,加強易懂和可讀性,不僅适合程式員與“程式員預備役”,也同樣适合對人工智能與機器學習感興趣的初學者,即使是數學基礎非常薄弱的讀者也可以看懂
本書盡力在計算機的世界中,告訴大家“數學可以怎樣用”或者“數學可以解決什麼問題”,還嘗試用簡單的 Python 程式來展示實際的效果,幫助大家找到一種“原來如此”的感覺,進而掌握相關的數學知識。本書不僅解釋了數學理論,還解釋了使用 Python 編寫的程式中的計算、證明和理論驗證。
本書的主要目标是讓數學變得易懂!程式員或者是想要成為程式員的高中生、大學生,以及對機器學習和人工智能感興趣的初學者,甚至是數學基礎薄弱的讀者都适合閱讀本書。
如果你想認真學習數學,可能數學教科書是比較合适 的。但你不會為了考試而學習吧。
你可能是程式員或有志于學習程式設計的人。在實際程式設計中,有些人可能會想:“我應該好好學習數學……”你可能買了一本書來學習機器學習或人工智能,但完全不知道上面寫的是什麼!有些人可能已經感到非常沮喪了。是以你一定要準備一本《程式員的數學基礎:Python實戰》。
本書所涉及的知識隻是從國小到高中畢業所學數學的一小部分。與數學教科書不同的是,這本書的重點不在于如何解題,而在于我在學生時代一直有的疑問一這東西哪裡會用到呢?或者這到底有什麼用? 我試圖用“在計算機世界裡,你可以這樣使用它”“可以通過使用它來做這些事情”來回答這些問題。
此外,本書并不是一味地讓讀者看書,還會用Python建立一些簡單的程式,這樣讀者就可以看到程式是如何工作的。通過嘗試改變變量的 值或改變程式中表達式的某一部分,看看結果是如何改變的,讀者會對 數學有更深入的了解。同時,讀者應該能夠摸索出一些在程式中實作數學公式的技巧。
同樣,這也不是一本解決數學問題的書。本書講述的是數學在我們周圍的世界,特别是在計算機世界中的應用,旨在通過具體的例子和實 踐,幫助讀者把數學知識内化于心。從本質上講,數學是一門美麗的學 科,因為它是不含糊的。但本書的主要目标是讓數學變得通俗易懂, 強調的是易懂和可讀性。
本書特點
結合案例了解知識點
Try Python原來如此
淺顯易懂,圖文并茂
詳細目錄
第 1章
計算機與數字 1
1.1 進制計數法 2
1.1.1 十進制計數法 2
1.1.2 0次方 3
1.1.3 二進制計數法 4
1.1.4 十六進制計數法 5
1.2 進制轉換 7
1.2.1 十進制轉二進制 7
1.2.2 十進制轉十六進制 9
1.2.3 二進制或十六進制轉十進制 11
1.3 計算機世界中的數字 13
1.3.1 資料的處理方式 13
1.3.2 能處理的數值是有限的 15
1. 4 負數的處理方式 16
1.4.1 計算x+1=0 17
1.4.2 什麼是二進制補碼 17
1.4.3 用符号位區分正負 19
1.4.4 計算機能處理多大的數 20
1.4.5 二進制補碼與進制轉換 22
1.5 小數的表示方法 23
1.5.1 數位的權重 23
1.5.2 小數的進制轉換 24
1.5.3 計算機如何處理浮點數 26
1.5.4 無法避免的小數誤差 27
1.6 字元與顔色的處理 28
1.6.1 計算機如何處理字元 28
1.6.2 計算機如何處理顔色 30
第 2章
計算機的運算 33
2.1 算術運算:計算機的四則運算 34
2.1.1 表達式的寫法 34
2.1.2 運算優先級 37
2.1.3 如何減小小數誤差 38
2.2 用移位運算做乘除法 39
2.2.1 位的左右移動 40
2.2.2 兩種類型的右移運算:算術和邏輯 43
2.3 計算機特有的位運算 45
2.3.1 什麼是位運算 45
2.3.2 與運算 46
2.3.3 或運算 47
2.3.4 異或運算 48
2.3.5 非運算 49
2.3.6 求二進制補碼 50
2.3.7 用掩碼取出部分位 51
2.3.8 将位用作标志 55
2. 4 計算機用邏輯運算進行判斷 59
2.4.1 比較運算 60
2.4.2 使用True和False的邏輯運算及其真值表 61
2.4.3 邏輯與(AND運算) 62
2.4.4 邏輯或(OR運算) 64
第3章
用圖形描繪方程 67
3.1 用Matplotlib繪制圖形 68
3.2 從方程到圖形 70
3.2.1 方程 71
3.2.2 函數 72
3.2.3 函數和圖形 74
3.3 線性方程 76
3.3.1 連接配接兩點的直線 76
3.3.2 兩條正交直線 79
3.3.3 兩條直線的交點 81
3. 4 比例式與三角函數 82
3.4.1 比例式的性質 82
3.4.2 線段的m:n内分點 83
3.4.3 三角函數與圓 87
3.4.4 三角函數和角度 91
3.5 勾股定理 93
3.5.1 圓的方程 93
3.5.2 兩點之間的距離 96
3.6 常用公式 98
3.6.1 點到直線的距離 98
3.6.2 直線圍成的區域的面積 100
第4章
向量 105
4.1 向量的計算 106
4.1.1 向量與箭頭 106
4.1.2 向量的組成 106
4.1.3 向量的方向 108
4.1.4 向量的大小 110
4.1.5 向量的運算 110
4.1.6 向量的分解 113
4.2 向量方程 115
4.2.1 直線的表示方法 115
4.2.2 兩條直線的交點 117
4.2.3 使用向量的理由 119
4.3 向量的内積 120
4.3.1 計算貢獻度 120
4.3.2 計算功的大小 123
4.3.3 向量的内積 123
4.3.4 兩條直線的夾角 124
4.3.5 内積的性質 127
4. 4 向量的外積 130
4.4.1 法向量 130
4.4.2 求面積 131
第5章
矩陣 135
5.1 什麼是矩陣 136
5.1.1 矩陣的記法 136
5.1.2 矩陣的含義 137
5.2 矩陣的運算 138
5.2.1 加法、減法 138
5.2.2 矩陣與實數相乘 140
5.2.3 乘法 141
5.2.4 乘法法則 143
5.2.5 機關矩陣 145
5.2.6 逆矩陣 146
5.2.7 逆矩陣和方程組 147
5.3 圖形的線性變換 150
5.3.1 向量與矩陣的關系 150
5.3.2 圖形的對稱變換 152
5.3.3 圖形的放大與縮小 155
5.3.4 圖形的旋轉 157
5.3.5 圖形的平移 160
5.3.6 從2×2矩陣到3×3矩陣 161
5.3.7 線性變換的組合 165
第6章
集合與機率 171
6.1 集合 172
6.1.1 集合的特點 172
6.1.2 各種集合 173
6.1.3 集合和資料庫 176
6.2 排列與組合 178
6.2.1 事件數 178
6.2.2 求事件數的方法 179
6.2.3 排列 180
6.2.4 階乘 183
6.2.5 重複排列 185
6.2.6 組合 186
6.3 機率 188
6.3.1 求機率的方法 188
6.3.2 數學機率與統計機率 191
6.3.3 乘法原理與加法原理 192
6.3.4 蒙特卡洛法 194
第7章
統計和随機數 197
7.1 什麼是統計 198
7.1.1 總體與樣本 198
7.1.2 觀察資料的離散程度 200
7.1.3 平均值、中位數和衆數 202
7.1.4 直方圖 204
7.2 衡量離散程度 207
7.2.1 方差和标準差 207
7.2.2 偏內插補點 211
7.3 衡量相關性 214
7.3.1 散點圖 214
7.3.2 協方差和相關系數 216
7. 4 通過資料進行推測 218
7.4.1 移動平均值 219
7.4.2 線性回歸 222
7.5 取随機數 225
7.5.1 随機數 226
7.5.2 使用随機數的注意事項 226
第8章
微積分 229
8.1 曲線與圖像 230
8.1.1 衡量變化的線索 230
8.1.2 衡量變化 234
8.2 什麼是微分 235
8.2.1 變化率 235
8.2.2 微分系數 237
8.2.3 微分 239
8.2.4 微分公式 240
8.2.5 導數的含義 242
8.3 什麼是積分 245
8.3.1 變化的累加 245
8.3.2 積分 247
8.3.3 定積分、不定積分 250
8.3.4 原函數 251
8.3.5 積分公式 254
8.3.6 什麼是積分常數C 257
8. 4 微積分的實際應用 258
8.4.1 曲線的切線 258
8.4.2 提取輪廓 262
8.4.3 圓周長和面積之間的關系 266
8.4.4 圓錐的體積 268
8.4.5 球的體積與表面積的關系 269
附錄A5
軟體安裝指南 273
A.1 Python的版本 273
A.2 安裝Anaconda 273
A.3 确認Python的版本 276
A. 4 使用Python解釋器 277
A.5 如何使用Jupyter Notebook 279