符号积分 · 为什么难得多

求导是机械的,积分却是一门「艺术」——没有万能规则,有些函数(比如 e^(-x²))根本没有初等原函数,而计算机能证明这一点。这一章讲清这个惊人的不对称、特殊函数从哪来,以及背后那套优雅的判定理论:Risch 算法与 Liouville 定理。

作者 David更新于 第 10 篇(共 18 篇)

符号积分 · 为什么难得多

上一章的符号微分顺得像滑梯:套规则,总能算,还精确。这一章我们撞上它的反面。积分是微积分符号版里最难、也最深刻的一块——难到有些函数根本积不出来,而计算机居然能证明它积不出来。

先看它能做的

integrate 处理常规积分依然漂亮:

from sympy import *
x = symbols('x')

print(integrate(1/(x**2 - 1), x))    # log(x - 1)/2 - log(x + 1)/2
print(integrate(x*exp(x), x))         # (x - 1)*exp(x)      —— 分部积分
print(integrate(exp(-x**2), (x, -oo, oo)))   # sqrt(pi)     —— 精确的定积分!

尤其最后那个——高斯积分 ∫−∞∞e−x2dx=π\int_{-\infty}^{\infty}e^{-x^2}dx=\sqrt\pi,一个精确的结果。看起来积分也不过如此?别急。

求导与积分:刺眼的不对称

同样是微积分的基本操作,求导和积分的「性格」却天差地别:

求导是机械的,积分是「艺术」。

  • 求导:规则有限、确定,套下去一定得到答案。上一章见过了。
  • 积分:没有一套「照着做就行」的万能规则。分部、换元、部分分式…… 每种技巧只对某些形式管用,选哪种、怎么凑,像解谜。更糟的是——有些初等函数,压根没有初等原函数。

这个不对称的根源在于:求导让函数变「简单」(次数降低、结构变规整),积分却常让函数变「复杂」,甚至跳出初等函数的世界。手算积分之所以比求导难得多,不是你的错——是问题本身就难。

惊人之处:有的函数「积不出来」

看这个著名的例子——对 e−x2e^{-x^2}(高斯函数,统计学的心脏)求不定积分:

print(integrate(exp(-x**2), x))       # sqrt(pi)*erf(x)/2
print(integrate(sin(x)/x, x))         # Si(x)

SymPy 没有给出 sin⁡\sin、cos⁡\cos、exp⁡\exp、log⁡\log 这些初等函数组成的答案,而是冒出个 erf、Si。这是什么?

erf(误差函数)、Si(正弦积分)是「特殊函数」——它们的存在,恰恰是因为 e−x2e^{-x^2}、sin⁡xx\frac{\sin x}{x} 没有初等原函数。 这不是 SymPy 偷懒或不够聪明。数学上已经证明:e−x2e^{-x^2} 的原函数,无法用有限个初等函数(多项式、根式、指数、对数、三角)表达出来。 既然写不出来,数学家干脆给这个积分起个名字——把 2π∫0xe−t2dt\frac{2}{\sqrt\pi}\int_0^x e^{-t^2}dt 定义成 erf(x)。所以 SymPy 返回 erf,是在诚实地说:「它没有初等答案,喏,这是用为它专门定义的特殊函数写的结果。」

换句话说,erf 之于积分,就像 2\sqrt2 之于「x2=2x^2=2 的解」——当已有的符号不够用,就造一个新符号精确地承载它。特殊函数,是符号世界对「积不出来」的优雅回应。

如果连特殊函数都凑不出,SymPy 会诚实地把积分原样返回,表示「我确实做不到」:

print(integrate(sin(sin(x)), x))      # Integral(sin(sin(x)), x)  —— 未求值,如实相告

背后的理论:Risch 算法与 Liouville 定理

「计算机怎么知道 e−x2e^{-x^2} 积不出来?」——这是本章最深的问题,答案是符号计算最优美的成就之一:

符号积分的核心是 Risch 算法(1969)——一个「判定算法」。 给定一个初等函数,Risch 算法能判定它的积分是否是初等函数:是,就把它算出来;不是,就确定地回答「不存在初等原函数」。这不是「试了很多方法都没成功」的猜测,而是数学上确定的判决。

它的理论根基是 Liouville 定理:它精确刻画了「一个初等函数的原函数在什么条件下仍是初等的」。Risch 算法把这个定理变成了可执行的判定过程——用的工具是微分代数(把「求导」抽象成代数结构上的运算,在其中做判定)。这就是计算机能「证明某函数积不出来」的底气:它不是没找到,而是证明了不存在。

(实话:完整的 Risch 算法极其复杂,真实 CAS 里是「Risch 主干 + 一大堆启发式与模式匹配」的混合体。但那个「可判定」的理论内核,是符号积分和符号微分最本质的分野。)

定积分:另有乾坤

有意思的是,即便不定积分没有初等形式,定积分却可能有漂亮的闭式——像 ∫−∞∞e−x2dx=π\int_{-\infty}^\infty e^{-x^2}dx=\sqrt\pi。这是因为定积分能借助对称性、留数、特殊函数的已知取值等额外武器。SymPy 对定积分还有一套 Meijer G-函数方法,能算出大量教科书里的经典定积分。「不定积不出、定积却算得漂亮」,是符号积分常见又迷人的一幕。

小结与下一章

符号积分远难于求导:没有万能规则,且有些初等函数没有初等原函数(e−x2→e^{-x^2}\to erf、sin⁡xx→\frac{\sin x}{x}\to Si,特殊函数正是为承载它们而生;实在不行就如实返回未求值的 Integral)。计算机能证明某函数积不出来,靠的是 Risch 判定算法与 Liouville 定理(微分代数)。定积分另有对称性 / 特殊函数等武器,常有闭式。

积分讲的是「求原函数」。还有两类和「无穷逼近」有关的符号操作——极限与级数展开,它们是分析学的符号化身,也支撑着近似与渐近分析。下一章一起看。👉 极限与级数。

参考文献

  • [1] Robert Risch.「The Problem of Integration in Finite Terms.」Trans. AMS, 1969. —— Risch 算法原始论文。
  • [2] Manuel Bronstein.《Symbolic Integration I: Transcendental Functions》—— 符号积分权威专著。
  • [3] SymPy 文档.「Integrals; the risch algorithm.」https://docs.sympy.org/latest/modules/integrals/integrals.html

本页目录