导数与微分:变化有多快,局部能不能当成直线
WARNING
🧪 Beta公测版本提示:教程主体已完成,正在优化细节,欢迎大家提Issue反馈问题或建议。
微积分不是一堆求导表。它只讲一件事:光滑的弯曲,在足够小的窗口里看起来像直线。 这条直线的斜率叫导数;用这条直线代替曲线去算「再走一小步会变多少」,叫微分。积分是下一章的累加。领域地图:数学基础。后面的 线性代数 处理的是「已经是直线」的变换;优化 里的梯度,就是本章思想抬到多变量。
一、函数是一台机器,导数问「此刻转多快」
函数
几何上是连接
把
不必先啃

图解说明:左是宽窗口的平均变化率;中是两点靠近;右是切线,旁边的小三角形就是微分
。底栏:导数是速度,微分是局部直线。
动画说明:
,锚点 。 从 0.85 收到 0.04,割线斜率贴近切线 。

图解说明:窗口从宽到窄,割线转到切线。旁边小三角形就是微分
。
保姆级数字例。
| 割线斜率 | ||
|---|---|---|
| — |
窗口越小越接近
逐步推导:从平均变化率到 (点击展开)
对
展开
令
不可导:若曲线有尖角,左右两边极限不同(如
二、微分:认真对待「局部直线」
导数是一个数(斜率)。微分是一次线性替换:
右边是切线。
弯曲的世界里,每走一小步,只用乘一次斜率。
这比「背求导公式」更根本。后面几乎所有运算法则,都可以从「两条直线怎么合成」推出来,而不是从极限式里硬算。
- 和:两台机器并排,斜率相加。
- 乘积:矩形的宽
、高 。两边各胀一截,面积多出来的是 ;角上那一小块 在「足够小」时扔掉——这就是乘积法则。 - 复合(链式法则):先
再 。第一台把 放大 倍,第二台再放大 倍,总放大倍数相乘:
神经网络的反向传播,就是这条链从输出往输入逆着乘。本章只要求看见「变化率相乘」;具体下山见 优化与梯度。

图解说明:宽
高 的矩形胀一圈:多出来的是 ,角上 扔掉。
逐步推导:乘积法则与链式法则都来自「局部直线」(点击展开)
乘积。
两边除以
矩形图里那一小块角就是
链式。
多层神经网络:每一层是一次
商法则(备查)。

图解说明:左:乘积是矩形的两边增量;中:复合是两台齿轮转速相乘;右:多变量时沿一个轴切一刀叫偏导,最陡的箭头叫梯度。
多元只记一句:固定其他变量、只动
三、C++ 怎么给「公式」求导
公式进了程序,有三条路。教学代码三条都写了,对照同一条
| 路 | 你在干什么 | 优点 | 坑 |
|---|---|---|---|
| 多项式系数 | {0,-2,0,1},逐项 | 精确(有理系数时) | 只覆盖多项式 |
| 对偶数(自动微分) | 每个量带一对 | 写一遍公式,值和导数一起出来 | 要给初等函数写导数规则 |
| 中心差分 | 不用解析式 |
1. 多项式:符号的最小可用子集
C++ 里就是循环:q.c[i-1] = i * p.c[i]。这不是完整的符号计算(不会化简
2. 对偶数:把微分法则写进类型
引入
代码里用结构体 Dual { double v, d; }。自变量种子是 {x, 1},常数是 {c, 0}。乘法必须写乘积法则,不能只乘
inline Dual operator*(Dual a, Dual b) {
return Dual{a.v * b.v, a.v * b.d + a.d * b.v};
}然后你照常写 x*x*x - 2.0*x,f.v 是值,f.d 是导数。sin / exp 只要按链式法则给
可选 Eigen 在这里帮不上忙:这不是矩阵库的事。
3. 数值差分:不会公式也能摸斜率
中心差分比单侧 (f(x+h)-f(x))/h 准一阶。demo 的误差曲线会先下降再上升:double 的舍入支配。所以「公式微分」能解析就解析(多项式 / 对偶数),差分留给黑盒仿真。
cd docs/math/derivative/code
python demo.py
g++ -std=c++17 demo.cpp -o deriv_demo

C++ 还会印 sin(x)exp(x) 在
四、小结
| 概念 | 一句话 |
|---|---|
| 平均变化率 | 割线;窗口里的平均速度 |
| 导数 | 窗口缩没时切线的斜率 |
| 微分 | 用切线代替曲线: |
| 链式法则 | 复合机器的变化率相乘 |
| 对偶数 | 值与导数绑在一起走四则运算 |
| 下游 | 积分、梯度下降、反向传播 |
下一章 积分与基本定理:把薄片叠回去,并看到「求导」和「累加」是一对逆运算。
📥 Code
| File | View | Download |
|---|---|---|
| demo.py | Open | Download |
| dual.hpp | — | Download |
| demo.cpp | — | Download |
| exercise.py | Open | Download |
参考
- Thompson, Calculus Made Easy(「加一点点」的微分叙事)
- 3Blue1Brown, Essence of calculus
- Griewank & Walther, Evaluating Derivatives(自动微分)