写这个机器学习微积分系列,我给自己定的原则是:不堆推导、不抄教材,只讲机器学习里真正用得上的那部分。前面两篇分别讲完极限和导数,很多读者在评论里催更,还有人直接点题:想看不定期分。说实话,不定积分是微积分里最让人又爱又恨的一块。爱它,是因为一旦掌握,你能顺畅地做很多概率模型和贝叶斯推断的数学推导;恨它,则因为技巧性很强——换元、分部、拆项、凑微分,看着像一门“组合术”,不像求导那样一招一式清清楚楚。我最初也在这里栽过不少跟头,后来在机器学习里反复用到不定积分,才慢慢把它磨成基本功。这篇就把不定积分在机器学习中的实际用途、核心定义、常用计算套路以及常见坑一次性整理出来,给正在补数学基础的朋友做一份可以直接照着走的参考。
1. 不定积分在机器学习中到底解决什么问题:四个必须知道的场景
很多初学机器学习的朋友都会困惑:神经网络训练不是只靠梯度下降吗?梯度下降只要求导,那积分到底用在哪里?这个疑问很合理,但等到接触概率模型、贝叶斯方法、变分推断和统计学习理论之后,你会发现积分几乎无处不在。不定积分在这些场景里,本质上承担的是同一个角色——它是连接“导数视角”和“面积视角”的桥梁。
1.1 概率密度函数的归一化
随便拿一个连续型随机变量来说,它的概率密度函数 p(x) 必须满足:
$$ \int_{-\infty}^{+\infty} p(x) dx = 1 $$
这是概率公理的基本要求——样本落在整个人数轴上的概率是 1。但机器学习里很多模型拿到的并不是现成的概率密度,而是一个正比于概率的“未归一化函数”。比如能量模型、受限玻尔兹曼机,以及很多用神经网络参数化的概率模型,通常只知道一个 f(x),需要先计算归一化常数:
$$ Z = \int f(x) dx $$
然后令 p(x) = f(x)/Z。这里计算 Z 时就必须求出 f(x) 的原函数,或者借助特殊积分技巧,而不定积分正是寻找原函数的基本工具。如果原函数都求不出来,后面所有关于概率、期望、似然的计算都会卡在第一步。
1.2 期望与方差的连续版本
机器学习里几乎所有的目标函数都和期望有关。监督学习的风险函数是损失函数在数据分布下的期望,强化学习的策略评估是折扣回报的期望,贝叶斯推断里的后验预测分布本质上也是一个期望。对于连续型随机变量,期望公式是:
$$ E[X] = \int x p(x) dx $$
当 p(x) 是高斯分布、伽马分布、贝塔分布这类相对规则的密度函数时,这个积分往往可以通过不定积分的方法化简成闭式表达。你在推导参数估计的梯度、变分下界,或者实现某个概率模型的训练算法时,几乎每个关键式子背后都藏着积分的影子。不定积分熟练的人,看一眼式子就能判断该走哪条积分路径;不熟练的人会在这一步反复卡壳。
1.3 分布变换与 KL 散度
KL 散度的连续形式是:
$$ KL(P | Q) = \int p(x) \ln \frac{p(x)}{q(x)} dx $$
变分推断里要反复对这类积分做处理和化简,目标就是找一个接近真实后验的近似分布。算 KL 散度时,不仅要求积分能算出来,还要求你对积分结果做进一步的代数操作。比如在高斯变分推断中,两个高斯分布之间的 KL 散度会化简成关于均值和协方差矩阵的简单表达式,这背后正是先把 log 比展开、再逐项积分的结果。不定积分功底好的同学,能很快意识到哪一项是常数、哪一项可以凑微分、哪一项需要分部积分,整个推导会顺畅很多。
1.4 损失函数与边缘化中的积分视角
还有一些场景更隐蔽。最大似然估计里经常出现:
$$ \ell(\theta) = \sum_{i=1}^n \ln p(x_i; \theta) $$
对连续分布而言,p(x_i; θ) 本身可能就是某个积分的结果。比如高斯混合模型中,观测数据的边缘概率需要对隐变量求和,而在连续隐变量模型里,这个求和会变成积分。你虽然不一定每一步都在手算不定积分,但如果不理解原函数、不定积分、定积分这三者的关系,推导过程中很容易失去方向感,甚至不知道某一项“为什么能提到积分外面”或者“为什么等于 1”。
这四个场景共同说明一件事:不定积分不是数学课上的孤岛,它是处理“连续分布”时最底层的那套手艺。机器学习里的连续世界,躲不开积分这一关。
2. 从原函数到不定积分:定义、记号与两个关键直觉
2.1 原函数就是导数的逆运算
先看定义:如果函数 F(x) 满足 F'(x) = f(x),那么称 F(x) 是 f(x) 的一个原函数。不定积分就是求 f(x) 的所有原函数,记作:
$$ \int f(x) dx = F(x) + C $$
这里的 C 是任意常数。为什么必须加 C?因为常数的导数为零。如果 F'(x) = f(x),那么 (F(x)+1)' = F'(x) = f(x),所以 F(x)+1 也是 f(x) 的原函数。事实上,在同一个连续区间内,f(x) 的任意两个原函数之间只差一个常数。所以不定积分的结果从来不是“一个函数”,而是一族函数,族内成员彼此相差一个常数 C。
这个“一族函数”的观念在解微分方程、处理积分常数与初始条件的关系时非常重要。比如很多物理和工程问题里,C 由边界条件确定;在优化问题里,C 不影响极值点和相对大小,所以经常被忽略,但你不能因为“反正会抵消”就养成丢 C 的习惯。
2.2 几何直觉:由斜率反推曲线
从几何角度看,导数是函数在某一点切线的斜率。不定积分提出的是另一个方向的问题:已知每个位置上的斜率,怎么反推出原来的曲线?可以想象你在一座山上行走,手里拿着一张记录了每一段路程坡度的图纸,目标是复原整条路的海拔函数。坡度完全相同的情况下,出发时的海拔可以任意选择,于是你会得到一族上下平移的曲线。这正是为什么不定积分的结果是一族曲线而不是单一曲线。
这个直觉对机器学习有意义吗?有的。很多优化算法本质上是在“沿着斜率信息反推目标函数的变化轨迹”。理解斜率到原函数之间的非唯一性,能帮助你理解为什么梯度下降只能恢复相对变化、不能恢复全局高度,也能帮助你在分析算法时更清楚地判断一个函数表达式到底是“目标函数”还是“目标函数的导数”。
2.3 不定积分与定积分的关系:微积分基本定理
初学者常被“不定积分”和“定积分”两个名字搞混。简单说,定积分描述的是某个区间上的累积面积,而不定积分描述的是原函数本身。两者的联系由微积分基本定理给出:
$$ \int_a^b f(x) dx = F(b) - F(a) $$
其中 F 是 f 的任意一个原函数。这意味着,要计算定积分,最有效的路径是先找到被积函数的不定积分(也就是原函数),然后代入上下限求差。机器学习里那些“算面积”“算概率质量”的问题,最终都会变成“找原函数”的问题。这也是为什么我们今天这一整篇都在围绕不定积分打转——它不是终点,但它是通往几乎所有连续概率计算的那道门。
3. 基本积分公式与直接积分法:先把最常用的几个长在身上
不定积分的技巧再多,根基还是基本积分公式。换元、分部本质上都是把陌生的积分逐步归化到基本公式。我在机器学习推导中真正高频使用的公式并不多,下面这组基本覆盖了九成场景。
| 场景 | 被积函数 | 不定积分 | 说明 |
|---|---|---|---|
| 幂函数 | $x^n$ | $\frac{x^{n+1}}{n+1}+C$ | $n \neq -1$;$n=-1$ 单独处理 |
| 倒数 | $\frac{1}{x}$ | $\ln|x|+C$ | $x \neq 0$,绝对值不能漏 |
| 指数 | $e^x$ | $e^x+C$ | 最基础的指数积分 |
| 一般指数 | $a^x$ | $\frac{a^x}{\ln a}+C$ | $a>0$ 且 $a \neq 1$ |
| 对数 | $\ln x$ | $x\ln x - x+C$ | $x>0$,需要分部积分得到 |
| 正弦 | $\sin x$ | $-\cos x+C$ | 直接对应导数公式 |
| 余弦 | $\cos x$ | $\sin x+C$ | 直接对应导数公式 |
| 反正切型 | $\frac{1}{1+x^2}$ | $\arctan x + C$ | 在 t 分布相关推导中高频出现 |
| 反正弦型 | $\frac{1}{\sqrt{1-x^2}}$ | $\arcsin x + C$ | 在随机变量变换里出现 |
这些公式不需要死记,因为每条都能通过“对结果求导,看是否还原被积函数”来检验。比如你忘了 $\int \frac{1}{1+x^2}dx$ 的结果,可以试着从常见导数表反推,$\frac{d}{dx}\arctan x = \frac{1}{1+x^2}$,于是积分结果就清楚了。把求导和积分互为逆运算这条线刻在脑子里,公式记忆的压力会小很多。
3.1 线性性:先拆开再分别积分
不定积分有两条非常朴素的运算规则:
$$ \int [f(x)+g(x)] dx = \int f(x)dx + \int g(x)dx $$
$$ \int k f(x) dx = k \int f(x) dx $$
这叫积分的线性性。看到多项式时,基本上就是靠这两条规则把它拆成若干个小块。举个很常见的例子:
$$ \int (3x^2 + 2x + 1) dx = x^3 + x^2 + x + C $$
每一项分别用幂函数公式,三步就完事。这个过程看起来基础,但它在机器学习里的意义比想象中大。比如 L2 正则化项中的 $\lambda w^2$ 如果参与积分运算,你可以直接套 $\int w^2 dw = w^3/3+C$,完全不用犹豫。很多公式推导之所以显得复杂,只是因为前面叠了一些代数符号,把线性结构遮住了。先把线性部分拆干净,后面会轻松很多。
3.2 直接积分的关键:模式识别
直接积分法表面朴素,但它要求你看到结构就能快速匹配公式。看到 $\frac{1}{x^2+1}$ 要马上想到 arctan;看到 $\frac{1}{\sqrt{1-x^2}}$ 要想到 arcsin;看到 $\frac{1}{x\ln x}$ 要想“内外层是导数关系,可以凑微分”。这种模式识别能力需要一定的练习量来培养,但它比死记硬背更可靠——因为积分的世界变化多端,你记不住所有套路,却能训练出“这个结构像什么”的直觉。
我自己的经验是,每次学一个新的积分公式,不只是记公式本身,而是把对应的“结构信号”也一起记下来。比如提到 $\int \frac{1}{x^2 + a^2}dx$,我脑子里的信号是“分母是平方和 → 反正切型”;提到 $\int \frac{1}{\sqrt{a^2 - x^2}}dx$,信号是“根号里是平方差 → 反正弦型”。有了这种信号库,做题的时候其实是先识别再调用,而不是在现场手忙脚乱地翻公式。
4. 换元积分法:链式法则的逆向操作
4.1 原理就是把微分符号当成可操作对象
换元积分法对应的是复合函数求导的链式法则的逆运算。链式法则说:
$$ \frac{d}{dx} F(g(x)) = F'(g(x)) g'(x) $$
如果被积函数恰好长成 $f(g(x)) g'(x)$ 的样子,那么令 $u = g(x)$,于是 $du = g'(x) dx$,可以得到:
$$ \int f(g(x)) g'(x) dx = \int f(u) du = F(u) + C = F(g(x)) + C $$
这个操作被称为“凑微分”。它背后的直觉很简单:你发现被积函数里有一部分是某个函数的导数,而另一部分是这个函数的复合,于是把导数藏进微分符号里,等式右边就变成一个更简单的积分。
4.2 第一类换元:机器学习中最频繁出现的类型
机器学习里最常见的换元例子,是高斯相关积分:
$$ \int x e^{-x^2/2} dx $$
观察结构:外层有 $e^{-x^2/2}$,前面正好有一个因子 x。如果我们令 $u = x^2/2$,则 $du = x dx$,于是:
$$ \int x e^{-x^2/2} dx = \int e^{-u} du = -e^{-u} + C = -e^{-x^2/2} + C $$
这一步就是标准正态分布均值推导的核心。你不需要做任何复杂操作,只需要看出“x 是 x² 的导数(差一个常数因子)”。这个模式在概率分布计算里出现频率极高,因为很多指数族分布的密度函数都是“某个函数的导数 × 指数函数的复合”结构。
再举个例子:$\int \frac{1}{x \ln x} dx$,令 $u = \ln x$,$du = dx/x$,于是结果就是 $\ln|\ln x| + C$。这类“内层函数和外层函数构成导数关系”的模式,是换元法的最大甜区。平时练习时可以刻意训练这种观察力:被积函数里有没有一个因子的导数刚好是外面那个因子?
4.3 第二类换元:三角代换让根号消失
当被积函数里出现平方根、平方和、平方差这类结构,凑微分直接凑不动时,可以考虑主动引入新变量,最常见的套路是三角代换。比如:
$$ \int \sqrt{1 - x^2} dx $$
做代换 $x = \sin t$,则 $dx = \cos t dt$,于是:
$$ \int \sqrt{1 - x^2} dx = \int \cos^2 t dt = \frac{t}{2} + \frac{\sin 2t}{4} + C $$
最后再用 $t = \arcsin x$ 回代。这类代换的核心目的是利用三角恒等式 $1 - \sin^2 t = \cos^2 t$ 消掉根号,把带根号的积分变成三角函数积分,而三角函数积分是基本公式里有现成结果的。
机器学习中三角代换用得不算频繁,但在某些核函数推导、随机变量变换和几何问题的概率计算中会突然冒出来。更常见的是 $\int \frac{1}{a^2 + x^2} dx$ 这种结构,用 $x = a\tan t$ 代换能很快推出 $\frac{1}{a}\arctan\frac{x}{a} + C$。这个结果在 t 分布和 Cauchy 分布相关的计算中经常出现,建议直接记住最终形式,省去每次重新推导的时间。
4.4 回代是最容易出错的环节
换元法做得多了会发现,真正让你丢分的往往不是换元本身,而是算完之后忘了把新变量换回原变量。我在草稿纸上惯用的处理方式是稍微留一行:
换元:$u = x^2/2$;反解:$u = x^2/2$;回代:最终结果 $-e^{-x^2/2} + C$。
这一行看起来机械,但能有效防止“结果里同时混着 x 和 t”这种低级错误。尤其是多步换元的题目,中间变量一多,大脑就容易失焦。另外提醒一句:换元时微分关系的推导也要仔细,比如 $du = 2x dx$ 和 $du = x dx$ 的区别,少写一个系数就会导致最终结果差一个常数倍数,这种错误在求导验证时会立刻暴露,所以平时一定要养成验证的习惯。
5. 分部积分法:处理乘积型被积函数的标准武器
5.1 从乘积求导法则到分部积分公式
分部积分法的来源是乘积求导法则:
$$ (u v)' = u'v + u v' $$
两边同时积分并移项,得到:
$$ \int u dv = uv - \int v du $$
这里 $dv$ 和 $du$ 可以理解为微分形式下的简写。分部积分处理的是两个函数相乘的积分,核心策略是:把比较难积的那一部分,通过“求导转移”给另一个因子,让整体变成更容易求的积分。
一个生活化类比:你想把一床厚被子叠起来,直接用手臂弯折很费劲,但如果能找到一根杆子辅助,把被子对折、压平、翻转,动作就变得有条理了。分部积分就是在找一个合适的“杆子”——这里的杆子就是你对 u 和 dv 的搭配选择。
5.2 怎么选 u:LIATE 经验法则
选择 u 的标准顺序一般总结为:对数(Logarithmic)、反三角(Inverse)、代数(Algebraic)、三角(Trigonometry)、指数(Exponential),简写为 LIATE。越靠前的类型越优先当 u,因为这类函数求导后会变得更简单或至少不再更复杂。比如:
- $\int x e^x dx$:选择 $u = x$,$dv = e^x dx$,因为 x 求导变成 1,而 $e^x$ 积分仍然是 $e^x$。
- $\int x \ln x dx$:选择 $u = \ln x$,$dv = x dx$,因为 $\ln x$ 求导变成 $1/x$,而 $x$ 积分是 $x^2/2$。
套公式后很快得到:
$$ \int x e^x dx = x e^x - \int e^x dx = (x - 1)e^x + C $$
$$ \int x \ln x dx = \frac{x^2}{2}\ln x - \int \frac{x^2}{2}\cdot\frac{1}{x}dx = \frac{x^2}{2}\ln x - \frac{x^2}{4} + C $$
第二个例子里有个小技巧:把 $\ln x$ 看成 $1 \cdot \ln x$,然后用分部积分。很多人第一次看到 $\int \ln x dx$ 会不知道从哪下手,其实就是把 1 当作 dv 的系数。
5.3 机器学习真实场景:指数分布期望的完整推导
机器学习中使用频率极高的指数分布,其密度函数是 $p(x) = \lambda e^{-\lambda x}$。计算它的期望是一个典型的分部积分题目:
$$ E[X] = \int_0^\infty x \lambda e^{-\lambda x} dx $$
选 $u = x$,$dv = \lambda e^{-\lambda x}dx$,则 $du = dx$,$v = -e^{-\lambda x}$。分部积分得到:
$$ \int x \lambda e^{-\lambda x} dx = -x e^{-\lambda x} + \int e^{-\lambda x} dx = -x e^{-\lambda x} - \frac{e^{-\lambda x}}{\lambda} + C $$
代入上下限 0 到 ∞。当 x→∞ 时,$x e^{-\lambda x} \to 0$,因为指数函数衰减速度远快于多项式增长;当 x=0 时,$-x e^{-\lambda x}$ 为 0,$-\frac{e^{-\lambda x}}{\lambda}$ 为 $-1/\lambda$。最终期望正是 $1/\lambda$。
这个过程如果反着选 u 和 dv,会把积分越算越长。这就是为什么 LIATE 法则在实战中这么有用——它不是数学定理,而是一个帮助你快速判断“哪个因子求导后更简单”的经验规则。做得多了你会发现,大部分乘积型积分的选择理由本质上就是“让求导发生在变简单的那一项上,让积分发生在变复杂也认了的那一项上”。
5.4 循环积分:另一种必须知道的玩法
有一种情况很迷惑人:连续用两次分部积分后,积分回到了原来的形式。比如 $\int e^x \sin x dx$,分部两次会得到包含自身的方程,然后可以把原积分当成未知数解出来。这类“循环积分”在信号处理、复指数相关的推导中会出现。第一次遇到可能会愣住,但只要知道这个套路,处理起来其实很机械。关键还是先按 LIATE 选 u 和 dv,然后从容地把重复出现的积分项合并。
6. 有理函数积分、特殊结构与计算工具:减少不必要的体力活
6.1 部分分式分解的思考路径
有理函数就是分子分母都是多项式的函数,在机器学习中的概率计算和信号处理相关推导里并不少见。标准处理路径分三步:先看是不是假分式(分子次数不低于分母次数),是的话先做多项式除法;然后对真分式做部分分式分解;最后逐项积分。
举一个具体例子:
$$ \int \frac{x+1}{x^2 + 3x + 2} dx $$
分母分解成 (x+1)(x+2),于是:
$$ \frac{x+1}{(x+1)(x+2)} = \frac{1}{x+2} $$
积分结果是 $\ln|x+2| + C$。这个例子恰好有公因子,比较简单,但核心思路是通用的:把复杂的分式拆成一堆简单分式的和,而简单分式的积分就是对数函数或反正切函数。这种“拆开再分别处理”的思路,和前面线性性的思路一脉相承。
6.2 三类高频特殊积分:配方法是起手式
除了部分分式,还有几类在概率推导里经常出现的特殊积分,建议单独记住:
- $\int \frac{1}{x^2 + a^2} dx = \frac{1}{a}\arctan\frac{x}{a} + C$
- $\int \frac{1}{x^2 - a^2} dx = \frac{1}{2a}\ln\left|\frac{x-a}{x+a}\right| + C$
- $\int \frac{1}{\sqrt{a^2 - x^2}} dx = \arcsin\frac{x}{a} + C$
这三条分别对应分母是平方和、平方差、根号内平方差的结构。遇到更一般的二次式时,第一反应应该是配方。比如:
$$ x^2 + 2x + 5 = (x+1)^2 + 4 $$
然后就可以用 $\int \frac{1}{(x+1)^2 + 4} dx = \frac{1}{2}\arctan\frac{x+1}{2} + C$。配方法能让你把一个陌生的二次式转化成标准形式,接着套用已知公式。凡是看到二次多项式,先想“能不能配方”,这会省掉很多无谓的尝试。
6.3 查表和计算工具:先有自己的答案再用工具验证
现实工作里,复杂的积分并不需要全部手算。我平时做算法实验时,常用 Python 的 SymPy 符号计算库做初步验证,也会用在线符号计算工具做快速检查。如果只是需要某个积分在代码里的数值,直接用数值积分会更省事。但工具是一把双刃剑,最大的陷阱是它给出的结果往往和你手算的结果长得不一样,有时一个用 arctan,一个用 log 合体,其实两个表达式是等价的,区别只在于积分常数或三角恒等式。
所以我养成了一个固定习惯:用工具之前,先在草稿上写出自己的思路和答案;然后用工具验证;如果结果不一致,绝不是马上照抄工具,而是把两边都求导,看哪个还原被积函数。这个流程通常只要十几秒,却能避免最隐蔽的错误。特别要提醒的是,有些在线工具在处理含参数积分时,会默认某些参数正负,导致结果在特定取值下不适用。自己心里有数,就不会被工具牵着走。
7. 实战:从高斯积分到均值计算的完整推导链路
7.1 场景设定
现在把前面讲到的换元法、不定积分、定积分关系串起来,完成一个机器学习里极其经典的推导。假设有一个服从标准正态分布的随机变量 X,概率密度为:
$$ p(x) = \frac{1}{\sqrt{2\pi}} e^{-x^2/2} $$
我们要验证它的期望确实是 0:
$$ E[X] = \int_{-\infty}^{+\infty} x p(x) dx = \frac{1}{\sqrt{2\pi}} \int_{-\infty}^{+\infty} x e^{-x^2/2} dx $$
7.2 第一步:用换元法求出不定积分
前面已经推导过:
$$ \int x e^{-x^2/2} dx = -e^{-x^2/2} + C $$
这里用到的正是第一类换元,令 $u = x^2/2$。这个不定积分本身在机器学习里也经常出现,比如在推导高斯分布的得分函数时,你需要对 log 密度求导、对某个积分结果再求导,这时候手头有一个清晰的原函数表达式会非常方便。
7.3 第二步:用微积分基本定理算定积分
利用微积分基本定理:
$$ \int_{-\infty}^{+\infty} x e^{-x^2/2} dx = \lim_{b \to +\infty,, a \to -\infty}\left[-e^{-x^2/2}\right]_{a}^{b} $$
代入之后,上下限处指数都趋于 0,因此定积分结果为 0,期望也就是 0。整个过程结构非常清晰:不定积分负责提供原函数,定积分负责代入上下限求差。如果没有前面那步换元求出原函数,你连代入上下限的机会都没有。
7.4 归一化常数背后的思路:没有初等原函数时的替代方案
细心的读者会发现,标准正态分布的归一化常数 $1/\sqrt{2\pi}$ 来自高斯积分 $\int_{-\infty}^{+\infty} e^{-x^2/2} dx = \sqrt{2\pi}$。但这个积分并不能直接用基本公式求出原函数——因为 $e^{-x^2/2}$ 没有初等原函数。它需要用极坐标变换等特殊技巧才能计算。这个现实提醒我们:不定积分的方法虽强,但不是万能的;有些积分没有初等原函数,只能靠特殊函数或数值方法处理。
更一般的例子是伽马函数:
$$ \Gamma(\alpha) = \int_0^\infty x^{\alpha-1} e^{-x} dx $$
伽马分布的概率密度就是靠这个积分定义的。实际应用里,我们通常不需要把 $\Gamma(\alpha)$ 展开成显式表达式,只需要知道递推关系 $\Gamma(\alpha+1) = \alpha \Gamma(\alpha)$ 和特殊值 $\Gamma(1)=1$,就能完成很多参数估计和期望推导。这种“把复杂积分归一到已知特殊函数”的思想,是机器学习高级数学处理里非常核心的策略。当你遇到一个积不出来的积分时,第一反应不一定是“我技巧不行”,而可能是“它根本不存在初等原函数,需要用别的方式表示”。
8. 新手最容易踩的五个坑和过关经验
8.1 坑一:丢掉积分常数 C
这大概是不定积分里出现频率最高的错误。C 不只是形式,它代表一族原函数。在解微分方程时丢掉 C,会直接导致通解缺失;在后续推导中丢掉 C,可能导致等式两边不一致。我习惯在每写完一行不定积分结果后立刻补上 $+C$,把这个动作变成条件反射,而不是等题目全写完再补。
8.2 坑二:忽略定义域和连续性
$\frac{1}{x}$ 的不定积分要写 $\ln|x| + C$,绝对值符号不能省。机器学习很多场景里变量本身是正数,比如速率、方差、时间间隔,这时候可以省略绝对值,但一旦推广到一般区间或边界含参数的推导,漏绝对值就可能得出域错误的结论。此外,被积函数在有间断点的多个区间上积分时,每个连续区间上的积分常数可以不同,不能想当然地把一个 C 贯彻到底。
8.3 坑三:换元之后忘记回代或新旧变量混用
这个坑在前面已经强调过。另一个变体是换元后新旧变量混在一起,最终表达式里同时出现 x 和 t,这算典型的不完整处理。自查方法非常简单:最终结果只应包含原变量,并且对结果求导应该还原被积函数。如果求导后对不上,八成是回代或系数出了问题。
8.4 坑四:盲目信任计算工具
在线符号计算工具和 SymPy 这类库确实强大,但它们给出的结果不一定是最简形式,也可能因为对参数的默认假设而在某些区间失效。工具显示一个 arctan,你手算一个 arcsin,两者可能等价也可能不等价,唯一可靠的判断方法就是对结果求导。我每次用工具验证积分,都会顺手在代码里对它给的原函数求个导,看看能不能还原被积函数。这个过程十几秒,但能帮你省下至少一晚上的排查时间。
| 常见错误 | 典型表现 | 对策 |
|---|---|---|
| 丢 C | 积分结果没有 $+C$ | 每行写完立即补上,形成条件反射 |
| 忽略定义域 | 写 $\ln x$ 而不是 $\ln|x|$ | 检查被积函数定义域和连续性 |
| 回代遗漏 | 结果混有新旧变量 | 对最终结果求导验证 |
| 盲信工具 | 工具结果与手算不一致 | 两边求导对比,确认等价关系 |
| 结构误判 | 乘积型当幂函数积 | 先看结构再选方法 |
8.5 经验:用“结构导航”代替“题海战术”
不确定积分技巧再复杂,落到实操上也就是几步判断。我在练习中总结了一个三步流程:
- 看结构:被积函数是多项式、乘积、复合函数、有理函数还是根式?
- 选方法:多项式用直接公式;复合结构找导数关系用换元;乘积用分部;有理函数做部分分式分解;根式考虑三角代换。
- 验证:对结果求导,确认还原被积函数。
第三步看起来是最不起眼的,却是整个流程里最关键的一环。求导是机械操作,人人都会,用它来反向验证积分结果,几乎零成本却能抓住绝大多数错误。我在做题时经常用这一步来“兜底”,每次验证通过后心里才有底。
8.6 关于练习量的建议
不定积分和单纯记忆不同,它更像肌肉记忆。我建议至少手算三五十道覆盖各种结构的题目,尤其是换元和分部这两类核心方法,最好做到看到结构就能反射出方法。有一段时间我给自己定的任务量是每天五道题,坚持两周之后,再去做变分推断相关的公式推导,明显感觉顺畅很多。不要觉得练题是在绕远路,不定积分这一块投入的时间,会在后面所有算法推导和论文阅读里,以“看式子更快、推公式更稳”的方式回报给你。