数学知识对编程很有用,但是很多写给程序员的数学书都比较难。我们为什么不从基础的数学知识开始学习呢?
本书尽力在计算机的世界中,告诉大家“数学可以怎样用”或者“数学可以解决什么问题”,还尝试用简单的 Python 程序来展示实际的效果,帮助大家找到一种“原来如此”的感觉,从而掌握相关的数学知识。本书不仅解释了数学理论,还解释了使用 Python 编写的程序中的计算、证明和理论验证。
本书的主要目标是让数学变得易懂!程序员或者是想要成为程序员的高中生、大学生,以及对机器学习和人工智能感兴趣的初学者,甚至是数学基础薄弱的读者都适合阅读本书。
1.本书的重点不在于如何解题,而在于帮助读者在计算机世界里如何利用数学解决算法问题,让程序员更容易理解数学背后的逻辑,进而编写出更优雅的代码
2.本书不是一味的让读者看书,还会用Python创建一些简单的程序,让读者更直观的理解程序的工作模式,通过尝试改变变量值或者改变程序中表达式的某一部分,使读者对数学有更深入的理解
3.通过具体的案例与实践帮助读者把数学知识内化于心
4.本书致力于把数学变得通俗易懂,加强易懂和可读性,不仅适合程序员与“程序员预备役”,也同样适合对人工智能与机器学习感兴趣的初学者,即使是数学基础非常薄弱的读者也可以看懂
谷尻香织:
同志社大学文学部毕业。他致力于编程语言和机器人的教学。
郭海娇:
程序员,摄影爱好者。旅居日本 10 年,曾任日本某大型企业软件工程师。译有《深
度学习入门与实战:基于 TensorFlow》《Jupyter Notebook 数据分析入门与实战》等。
目 录
第 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
A.5.1 创建程序 280
A.5.2 重命名并保存 281
A.5.3 关闭Jupyter Notebook 282