为什么放编程分类
这篇不是大学数学课本的目录——而是程序员的数学工具书。做技术博客分类时,我没把它放进「数学/科学」大类,而是放在「编程」下面,理由有三:
- 公式不是用来考试——是写代码时查表用的。看到
Σ、∂、lim就知道在写什么,看到T(n) = O(n²)就能在 code review 里挑出性能 bug - 数学是计算机的母语——所有算法、数据结构、机器学习、图形学、密码学底层都是这一套符号 + 公式。不会这套符号就读不懂 RFC、论文、源码注释
- 学习路径配套——本站点「算法 / 数据结构」「机器学习」「密码学」「游戏开发」等分类的前置知识就是这一页。先建索引,再深入分支
所以这篇的定位是:
放办公桌的"数学速查表"——遇到不熟的符号翻 30 秒,回到 IDE 继续写代码。
下面这张表汇总了 5 个最常见的工程场景对应的数学分支,方便按需跳转:
| 场景 | 用到的数学 | 跳转 |
|---|---|---|
| 哈希表 / 布隆过滤器 | 概率、模运算 | 哈希 |
| 密码学 / RSA | 数论、模逆、欧拉函数 | 数论基础 |
| 数据校验 / CRC | 异或、有限域 | CRC / 校验 |
| 图像 / 音视频处理 | 三角函数、傅里叶 | 三角恒等式 |
| 机器学习 / 深度学习 | 线性代数、概率、梯度 | 线性代数 / 概率统计 |
常用数学符号
| 符号 | 含义 |
|---|---|
| $\in$ | 属于 |
| $\notin$ | 不属于 |
| $\subseteq$ | 子集 |
| $\cup$ | 并集 |
| $\cap$ | 交集 |
| $\emptyset$ | 空集 |
| $\forall$ | 全称量词(任意) |
| $\exists$ | 存在量词(存在) |
| $\nexists$ | 不存在 |
| $\Rightarrow$ | 推出 |
| $\Leftrightarrow$ | 等价 |
| $\sum$ | 求和 |
| $\prod$ | 求积 |
| $\int$ | 积分 |
| $\partial$ | 偏导数 |
| $\nabla$ | 梯度 / 散度 |
| $\infty$ | 无穷 |
| $\approx$ | 约等于 |
| $\equiv$ | 恒等于 |
| $\propto$ | 成正比 |
集合与逻辑
集合运算律
- 交换律:$A \cup B = B \cup A$,$A \cap B = B \cap A$
- 结合律:$(A \cup B) \cup C = A \cup (B \cup C)$
- 分配律:$A \cap (B \cup C) = (A \cap B) \cup (A \cap C)$
- 德摩根:$\overline{A \cup B} = \overline{A} \cap \overline{B}$
命题逻辑
| 命题 | 符号 | 含义 |
|---|---|---|
| 合取 | $P \land Q$ | P 且 Q |
| 析取 | $P \lor Q$ | P 或 Q |
| 否定 | $\neg P$ | 非 P |
| 蕴含 | $P \Rightarrow Q$ | P 蕴含 Q |
| 等价 | $P \Leftrightarrow Q$ | P 等价 Q |
初等代数
乘法公式
$$(a \pm b)^2 = a^2 \pm 2ab + b^2$$$$(a + b)(a - b) = a^2 - b^2$$$$(a \pm b)^3 = a^3 \pm 3a^2 b + 3ab^2 \pm b^3$$$$a^3 \pm b^3 = (a \pm b)(a^2 \mp ab + b^2)$$一元二次方程 $ax^2 + bx + c = 0$
- 判别式:$\Delta = b^2 - 4ac$
- 根:$x = \frac{-b \pm \sqrt{\Delta}}{2a}$
- 韦达:$x_1 + x_2 = -\frac{b}{a}$,$x_1 x_2 = \frac{c}{a}$
指数
$$a^m \cdot a^n = a^{m+n}$$$$\frac{a^m}{a^n} = a^{m-n}$$$$(a^m)^n = a^{mn}$$$$a^{-n} = \frac{1}{a^n}$$$$a^0 = 1 \quad (a \neq 0)$$对数
$$\log_a(xy) = \log_a x + \log_a y$$$$\log_a \frac{x}{y} = \log_a x - \log_a y$$$$\log_a x^n = n \log_a x$$$$\log_a b = \frac{\ln b}{\ln a}$$$$\ln e = 1, \quad \log_{10} 10 = 1$$三角恒等式
基本关系:
$$\sin^2 x + \cos^2 x = 1$$$$\tan x = \frac{\sin x}{\cos x}$$和差角:
$$\sin(\alpha \pm \beta) = \sin\alpha \cos\beta \pm \cos\alpha \sin\beta$$$$\cos(\alpha \pm \beta) = \cos\alpha \cos\beta \mp \sin\alpha \sin\beta$$二倍角:
$$\sin 2x = 2 \sin x \cos x$$$$\cos 2x = \cos^2 x - \sin^2 x = 1 - 2\sin^2 x = 2\cos^2 x - 1$$半角:
$$\sin^2 \frac{x}{2} = \frac{1 - \cos x}{2}$$$$\cos^2 \frac{x}{2} = \frac{1 + \cos x}{2}$$和差化积:
$$\sin \alpha + \sin \beta = 2 \sin \frac{\alpha + \beta}{2} \cos \frac{\alpha - \beta}{2}$$$$\cos \alpha + \cos \beta = 2 \cos \frac{\alpha + \beta}{2} \cos \frac{\alpha - \beta}{2}$$解三角形
- 正弦定理:$\frac{a}{\sin A} = \frac{b}{\sin B} = \frac{c}{\sin C} = 2R$
- 余弦定理:$c^2 = a^2 + b^2 - 2ab \cos C$
- 三角形面积:$S = \frac{1}{2}ab \sin C = \frac{abc}{4R}$
解析几何
直线
- 点斜式:$y - y_0 = k(x - x_0)$
- 斜截式:$y = kx + b$
- 一般式:$Ax + By + C = 0$
- 两点距离:$d = \sqrt{(x_2-x_1)^2 + (y_2-y_1)^2}$
- 点到直线:$d = \frac{|Ax_0 + By_0 + C|}{\sqrt{A^2 + B^2}}$
圆
- 标准:$(x-a)^2 + (y-b)^2 = r^2$
- 一般:$x^2 + y^2 + Dx + Ey + F = 0$
- 圆心:$(-\frac{D}{2}, -\frac{E}{2})$,$r = \frac{\sqrt{D^2 + E^2 - 4F}}{2}$
椭圆 $\frac{x^2}{a^2} + \frac{y^2}{b^2} = 1$
- $a > b > 0$
- 离心率 $e = c/a = \sqrt{1 - b^2/a^2}$
- 焦点 $F_1(-c, 0)$,$F_2(c, 0)$
双曲线 $\frac{x^2}{a^2} - \frac{y^2}{b^2} = 1$
- 离心率 $e = c/a = \sqrt{1 + b^2/a^2}$
- 渐近线 $y = \pm \frac{b}{a} x$
抛物线 $y^2 = 2px$
- 焦点 $(\frac{p}{2}, 0)$,准线 $x = -\frac{p}{2}$
微积分
极限
$$\lim_{x \to 0} \frac{\sin x}{x} = 1$$$$\lim_{x \to 0} \frac{1 - \cos x}{x^2} = \frac{1}{2}$$$$\lim_{x \to \infty} \left(1 + \frac{1}{x}\right)^x = e$$常用导数
| $f(x)$ | $f’(x)$ |
|---|---|
| $c$ | $0$ |
| $x^n$ | $nx^{n-1}$ |
| $e^x$ | $e^x$ |
| $a^x$ | $a^x \ln a$ |
| $\ln x$ | $1/x$ |
| $\log_a x$ | $\frac{1}{x \ln a}$ |
| $\sin x$ | $\cos x$ |
| $\cos x$ | $-\sin x$ |
| $\tan x$ | $\sec^2 x$ |
| $\arcsin x$ | $\frac{1}{\sqrt{1-x^2}}$ |
| $\arctan x$ | $\frac{1}{1+x^2}$ |
常用积分
| $f(x)$ | $\int f(x) , dx$ |
|---|---|
| $0$ | $C$ |
| $x^a$ | $\frac{x^{a+1}}{a+1} + C$ |
| $1/x$ | $\ln |
| $e^x$ | $e^x + C$ |
| $\sin x$ | $-\cos x + C$ |
| $\cos x$ | $\sin x + C$ |
| $\sec^2 x$ | $\tan x + C$ |
| $\frac{1}{\sqrt{1-x^2}}$ | $\arcsin x + C$ |
| $\frac{1}{1+x^2}$ | $\arctan x + C$ |
微分中值定理
- 罗尔:$f(a) = f(b)$,$\exists \xi \in (a, b)$,$f’(\xi) = 0$
- 拉格朗日:$\exists \xi$,$f’(\xi) = \frac{f(b)-f(a)}{b-a}$
- 柯西:$\exists \xi$,$\frac{f’(\xi)}{g’(\xi)} = \frac{f(b)-f(a)}{g(b)-g(a)}$
泰勒公式
$$f(x) = \sum_{n=0}^{\infty} \frac{f^{(n)}(x_0)}{n!}(x - x_0)^n$$常用展开:
$$e^x = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \cdots$$$$\sin x = x - \frac{x^3}{3!} + \frac{x^5}{5!} - \cdots$$$$\cos x = 1 - \frac{x^2}{2!} + \frac{x^4}{4!} - \cdots$$$$\ln(1+x) = x - \frac{x^2}{2} + \frac{x^3}{3} - \cdots$$$$\frac{1}{1-x} = 1 + x + x^2 + x^3 + \cdots$$线性代数
矩阵
- 行列式(2x2):$\begin{vmatrix} a & b \ c & d \end{vmatrix} = ad - bc$
- 矩阵乘法:$(AB){ij} = \sum_k A{ik} B_{kj}$
- 矩阵转置:$(A^T){ij} = A{ji}$
- 矩阵求逆:$A^{-1} = \frac{1}{\det A} A^$($A^$ 是伴随矩阵)
特征值与特征向量
$$A \mathbf{v} = \lambda \mathbf{v}$$$$\det(A - \lambda I) = 0$$重要矩阵
- 单位矩阵 $I$:对角线 1
- 零矩阵 $O$:全 0
- 对角矩阵 $\text{diag}(d_1, d_2, \ldots, d_n)$
- 对称矩阵 $A^T = A$
- 正交矩阵 $A^T A = I$
概率统计
概率公式
- 条件概率:$P(A|B) = \frac{P(AB)}{P(B)}$
- 全概率:$P(A) = \sum_i P(B_i) P(A|B_i)$
- 贝叶斯:$P(B_j|A) = \frac{P(B_j) P(A|B_j)}{\sum_i P(B_i) P(A|B_i)}$
常见分布
| 分布 | 期望 | 方差 |
|---|---|---|
| 0-1 (B(1, p)) | $p$ | $p(1-p)$ |
| 二项 B(n, p) | $np$ | $np(1-p)$ |
| 泊松 P(λ) | $λ$ | $λ$ |
| 指数 Exp(λ) | $1/λ$ | $1/λ^2$ |
| 正态 N(μ, σ²) | $μ$ | $σ^2$ |
| 均匀 U(a, b) | $(a+b)/2$ | $(b-a)^2/12$ |
期望 / 方差性质
- $E(c) = c$,$E(aX + b) = aE(X) + b$
- $D(c) = 0$,$D(aX + b) = a^2 D(X)$
- 独立:$E(XY) = E(X)E(Y)$,$D(X+Y) = D(X) + D(Y)$
离散数学
集合
- $|A \cup B| = |A| + |B| - |A \cap B|$
- $|A \cup B \cup C| = |A|+|B|+|C| - |A \cap B| - |B \cap C| - |A \cap C| + |A \cap B \cap C|$
排列组合
- 排列:$P(n, k) = \frac{n!}{(n-k)!}$
- 组合:$C(n, k) = \binom{n}{k} = \frac{n!}{k!(n-k)!}$
- 性质:$C(n, k) = C(n, n-k)$,$C(n+1, k) = C(n, k) + C(n, k-1)$
鸽巢原理
把 $n+1$ 个物品放入 $n$ 个盒子,至少有一个盒子包含至少 2 个物品。
程序员常用
浮点数(IEEE 754)
- 单精度:32 位(1 符号 + 8 指数 + 23 尾数)
- 双精度:64 位(1 符号 + 11 指数 + 52 尾数)
- 精度:$2^{-23} \approx 1.19 \times 10^{-7}$(单精度)
- 舍入模式:最近偶数舍入(默认)
哈希
- 期望冲突:$\frac{k(k-1)}{2n}$($k$ 个 key,$n$ 个 slot)
- 生日悖论:50% 冲突需要 $\approx 1.18\sqrt{n}$ 个 key
复杂度
- 主定理:$T(n) = aT(n/b) + f(n)$
- 若 $f(n) = O(n^{\log_b a - \epsilon})$,$T(n) = \Theta(n^{\log_b a})$
- 若 $f(n) = \Theta(n^{\log_b a})$,$T(n) = \Theta(n^{\log_b a} \log n)$
- 若 $f(n) = \Omega(n^{\log_b a + \epsilon})$,$T(n) = \Theta(f(n))$
在 5 个工程场景的应用
这一节给上面零散的公式穿上工程外衣——每个场景都对应到具体的代码 / 库 / 工具,让公式不再停留在纸面。
场景 1:哈希表与布隆过滤器
哈希函数的核心是把任意 key 映射到 [0, n) 的 slot:
| |
布隆过滤器用 k 个哈希函数 + m 位数组,假阳率:
$$P_{fp} = \left(1 - e^{-kn/m}\right)^k$$场景 2:密码学 / RSA
RSA 依赖三个数论核心:
| |
关键定理:欧拉定理 $a^{\phi(n)} \equiv 1 \pmod n$、费马小定理 $a^{p-1} \equiv 1 \pmod p$(p 是质数)。
场景 3:CRC / 校验和
CRC(Cyclic Redundancy Check)= 多项式除法的余数。以太网、ZIP、PNG 全用它。
| |
关键数学:有限域 GF(2⁸) 上的多项式模 2 除法。
场景 4:图像 / 音视频处理
旋转、缩放、JPEG 压缩、音频 EQ——全是三角函数 + 傅里叶变换。
| |
关键公式:
- 欧拉公式:$e^{i\theta} = \cos\theta + i\sin\theta$
- 离散傅里叶:$X_k = \sum_{n=0}^{N-1} x_n \cdot e^{-2\pi i kn/N}$
场景 5:机器学习 / 深度学习
ML/DL 整个底层都依赖线性代数 + 概率 + 微积分。
| |
关键概念:
- 链式法则:$\frac{\partial L}{\partial x} = \frac{\partial L}{\partial y} \cdot \frac{\partial y}{\partial x}$(autograd 的数学基础)
- Softmax:$\sigma(z_i) = \frac{e^{z_i}}{\sum_j e^{z_j}}$(多分类概率化)
- 交叉熵:$H(p, q) = -\sum_i p_i \log q_i$(分类损失)
场景 6(赠送):素数判定
密码学、哈希、布隆过滤器都依赖大素数:
| |
上面 6 个场景的代码没有一个是"为了学数学而学数学"——全都是生产代码里会碰到的真实问题。数学不是装饰品,是工具。
下一步
- 微积分体系,看 2017-09-15《高等数学知识体系》
- 算法 / 数据结构,看 2012-08-17《常见排序算法完全指南》
参考资料
- 《数学手册》高等教育出版社
- 程序员数学入门:https://math.erucireu.dev/
- Wolfram MathWorld:https://mathworld.wolfram.com/
