
第一次在《数学分析》课堂上看到狄利克雷函数时我是有点懵的一个在每个点都没有极限、图像根本画不出来的函数凭什么被写进教材里后来我才明白这类“反常识”的构造恰恰是数学分析里最值得认真对待的东西。说句实话数学分析中的特例与反例比很多同学想象中重要得多。它不是教材角落里打发时间的趣味题而是用来给定理“画边界”的尺子。连续函数一定可积但可积函数却不一定有原函数收敛的函数数列极限和积分却不一定能交换顺序。这些看上去矛盾的结论全都靠一个又一个精心构造的例证来支撑。如果你正在学数学分析、准备考研或者教这门课我强烈建议你专门腾出时间把经典反例一个一个亲手验证一遍收益会超出你的预期。1. 特例与反例数学分析里最容易被低估的主角1.1 为什么“凭直觉做题”在分析里行不通人脑的几何直观在数学分析面前经常失灵。你想象一条连续曲线它当然应该有切线但Weierstrass构造出处处连续、处处不可导的函数直接把“连续曲线就该有切线”的直觉打了脸。你想象可导函数的导数应该比较“规矩”但一个在闭区间上可导的函数其导函数可以无界甚至在每点的邻域内剧烈振荡。逻辑上看数学分析里大量定理都是“单向蕴含”可导蕴含连续一致收敛蕴含逐点收敛绝对收敛蕴含收敛。但是当你试图反过来用的时候就会发现处处是坑。很多初学者把由A推出B当成“A和B差不多”一做题就默认B也能推出A这种错误几乎都是因为脑子里没有反例库。特例与反例存在的意义就是逼你把“充分条件”和“必要条件”彻底分开。1.2 特例、反例别混为一谈特例和反例经常被放在一起说但它们的作用并不相同。概念作用典型例子学习价值特例说明某类对象“存在”或展示一个极端但合法的形态常函数是最平凡的连续、可导、可积函数巩固定义建立“最简状态”反例推翻某个命题或说明某个定理条件不可去掉f(x)1/x在(0,1)上连续但不一致连续界定定理适用范围防止误用举个例子学习“闭区间上的连续函数必一致连续”时直接背结论当然容易但如果你见过 f(x)1/x 在 (0,1) 上连续却不一致连续就会真正明白“闭区间”三个字不是装饰品。这就是反例的力量它把定理的每个条件都变成了有意义的“关卡”。1.3 把反例当成记忆定理的锚点我读书时背定理总是忘后来发现一个办法给每个定理配套一个“反例钥匙”。比如可导函数不一定导数连续钥匙是 x^2 sin(1/x)。黎曼可积函数不一定有原函数钥匙是黎曼函数。有原函数的函数不一定是黎曼可积的钥匙是 x^2 sin(1/x^2) 的导函数它会告诉你无界会造成什么问题。条件收敛级数重排后可以收敛到任意实数钥匙是交错调和级数。这些成对的案例比死记硬背高效得多。你只要把反例记牢定理成立需要哪些条件自然就带出来了。2. 经典反例库逐个拆解那些“教科书级”构造2.1 连续、可导之间的“真空地带”先从最基础也最经典的开始。第一个例子是绝对值函数 f(x)|x|。它在0处连续但左导数为-1右导数为1两边不相等所以不可导。这是个“最小反例”简单到不能再简单却是理解“可导比连续强得多”的第一步。第二个例子稍微进阶一点$$ f(x)\begin{cases}x^2\sin\frac{1}{x}, x\neq 0\0, x0\end{cases} $$它在0处可导因为$$ f(0)\lim_{h\to 0}\frac{h^2\sin(1/h)}{h}\lim_{h\to0}h\sin\frac1h0. $$但是在 x≠0 处$$ f(x)2x\sin\frac1x-\cos\frac1x, $$当 x→0 时第二项 cos(1/x) 在-1和1之间剧烈振荡没有极限。于是 f(x) 在0处不连续。这个例子告诉你函数可导不代表导函数连续。第三个例子是$$ g(x)\begin{cases}x^2\sin\frac{1}{x^2}, x\neq 0\0, x0\end{cases} $$它在 [0,1] 上是可导的g(0)0但 x≠0 时$$ g(x)2x\sin\frac1{x^2}-\frac{2}{x}\cos\frac1{x^2}, $$后一项当 x→0 时无界所以导函数在闭区间 [0,1] 上无界。如果再往上走还有 Weierstrass 函数那种“处处连续、处处不可导”的极端构造。它说明连续与可导之间的距离不是一堵墙而可能是一道深不见底的峡谷。2.2 看起来“到处都是间断”却可积的反例间断点与可积性的关系是初学时的重灾区。狄利克雷函数$$ D(x)\begin{cases}1, x\in\mathbb{Q}\0, x\notin\mathbb{Q}\end{cases} $$它在任意区间上的上确界都是1下确界都是0所以无论怎么分割区间达布上和总是1达布下和总是0。因此狄利克雷函数不是黎曼可积的。它同时也说明一个函数的图像画不出来不代表它“不存在”。真正精彩的是黎曼函数也叫 Thomae 函数$$ R(x)\begin{cases}\frac1q, x\frac pq,\ p,q\text{互质},\ q0\0, x\notin\mathbb{Q}\end{cases} $$这个函数在无理点连续在有理点间断。但它居然黎曼可积且积分等于0。证明思路是对任意 ε0只考虑 q 足够大、函数值小于 ε 的点而分母不超过某个界的有理点是有限的所以可以用有限个小区间包住这些“高点”剩下的区间上和与下和之差都小于 ε。这两个函数放一起看你会对“可积性”有完全不同的理解。一个有界函数黎曼可积本质上要求它“看起来”足够像连续函数间断点集合要足够“小”。更深刻的 Lebesgue 判据说有界函数黎曼可积当且仅当其间断点集合的测度为零。黎曼函数正好满足这个条件狄利克雷函数不满足。2.3 一致连续、一致收敛别让“一致”变成空话f(x)1/x 在 (0,1) 上连续但不一致连续。取两个点列 x_n1/ny_n1/(2n)它们的距离趋于0但函数值之差 f(x_n)-f(y_n)n 不趋于0。这就直接破坏了“只要自变量靠得够近函数值之差就可以任意小”的一致连续要求。问题出在开区间 (0,1) 不是闭区间函数在端点附近“加速度”太大了。函数项级数里最经典的反例是$$ f_n(x)x^n,\quad x\in[0,1]. $$它在 [0,1] 上逐点收敛到$$ f(x)\begin{cases}0, 0\le x1\1, x1\end{cases} $$每个 f_n 都连续但极限函数不连续。连续函数的一致收敛极限一定连续所以 f_n 不可能一致收敛。这个例子在考研题里反复出现它可以用来解释 Dini 定理单调函数序列在紧集上逐点收敛到连续函数时才一定是一致收敛的。上面的 x^n 序列单调递减但极限函数不连续所以 Dini 定理的条件一个都不能少。还有一个积分换序的经典例子$$ f_n(x)nxe^{-nx^2},\quad x\in[0,1]. $$对每个固定 xf_n(x) 都趋于0但$$ \int_0^1 f_n(x),dx\frac{1-e^{-n}}{2}\to\frac12, $$极限与积分显然不等。这说明“逐点收敛”根本不足以支撑积分号下取极限一致收敛是很自然的补强条件。2.4 级数重排条件收敛到底有多“拧巴”交错调和级数$$ \sum_{n1}^{\infty}\frac{(-1)^{n-1}}{n}\ln2 $$是收敛的但取绝对值后得到调和级数发散。这种“条件收敛”的级数有一个惊人的性质通过重排项的顺序可以让它收敛到任意给定的实数也可以让它发散。这就是黎曼重排定理。相比之下绝对收敛级数的和与项的顺序无关。这个反差非常深刻条件收敛级数之所以能收敛很大程度上依赖正负项的“互相抵消”一旦打乱顺序这种精妙的平衡就被破坏了。我在教这一节时经常和学生说条件收敛就像走钢丝每一步都很稳但随便换动作顺序就可能摔数学上则要用“绝对收敛”来保证真正安全。3. 怎么构造反例三条我用得最多的路线3.1 从“撕掉定理条件”入手构造反例最直接的思路是盯着一个定理把它的每个条件都试一遍“如果去掉会发生什么”。以“闭区间上连续函数必一致连续”为例去掉“闭区间”只取开区间得到 f(x)1/x 在 (0,1) 上不一致连续。去掉“连续”可以取 f(x)sin(1/x)在 [-1,1] 上令 f(0)0。它在0处间断在0附近振动频率无限加快同样不一致连续。再比如中值定理要求 f 在 [a,b] 上连续、在 (a,b) 内可导。如果你尝试去掉连续性构造一个只在一个点跳跃的函数罗尔定理的结论可能就不成立。每撕掉一个条件你都会更清楚这个条件到底在保护什么。这个方法在科研里也很好用拿到一个新题目先不要急着证明先盘点“如果少了哪个假设结论会怎样变”很多边界条件就是这么试出来的。3.2 用振荡因子控制“破坏程度”sin(1/x)、cos(1/x) 这类函数在0附近无限振荡是制造反例的利器。关键在于前面乘上什么样的“衰减因子”。口诀可以概括成一句话幂次每提高一档函数就多恢复一分光滑性。x sin(1/x) 在0处连续但不可导。x^2 sin(1/x) 在0处可导但导函数不连续。x^3 sin(1/x) 在0处可导且导函数连续但二阶导数可能出问题。x^2 sin(1/x^2) 导数无界。这个规律背后的原因很简单求导一次会把 sin(1/x) 变成 -(1/x^2)cos(1/x)多出一个负幂次前面的 x^m 至少要提供足够的“衰减”来抵消它。想控制到哪一阶光滑就让幂次相应升高。构造时先想清楚“我要破坏到哪一步”再反推幂次往往比瞎试快得多。3.3 利用稠密集合“做手脚”有理数在实数中稠密无理数也是这是构造反例的另一个大金矿。狄利克雷函数就是在有理数、无理数上分别赋不同的值。稍微改一下可以得到“只在一点连续”的函数$$ f(x)x\cdot D(x) $$当 x→0 时无论 x 是有理数还是无理数|f(x)|≤|x| 都趋于0所以 f 在0处连续。但在任意非零处有理点处函数值接近 x无理点处函数值接近0可取一列有理数和一列无理数都逼近该点得到不同的极限因此不连续。这类例子对理解极限的“局部性”特别有帮助。3.4 拼接、复制、局部修正有些反例不需要从头造而是把已有反例“平移”“压缩”“粘贴”到不同位置。比如想把某个函数的奇性同时放到一串趋于某点的点上可以用分段定义$$ f(x)\begin{cases}\text{在区间 }[1/(n1),1/n]\text{ 上的某种振荡块}\0,\quad \text{其余位置}\end{cases} $$这种方法在分析里非常常用。它背后的思想是很多性质具有“局部性”可以在一段小区间里做手脚而不影响其他区域的宏观表现。科研里构造更复杂的反例时也常常是先用简单函数做“骨架”再用光滑函数做“缓冲”让拼接点足够光滑避免引入额外的奇性。4. 反例在实战中的用法从作业题到科研4.1 判断命题真假先试反例再想证明我在做研究时有个习惯面对一个待证的命题第一件事不是拿起笔写证明而是花十分钟找反例。如果反例存在就不用白费力气如果找不到再顺着“为何找不到”去提炼证明思路。判断“f在[a,b]上可导则f在[a,b]上有界”这个命题去看看 x^2 sin(1/x^2) 的导函数立刻就知道是假的。判断“连续函数列的逐点极限一定连续”看 x^n 就知道不一定。反例就像探雷器能帮你把明显错误的猜想快速筛掉然后把精力留给真正值得证明的方向。4.2 学习和备考反例是最高效的“概念体检”准备考研数学分析的同学一定要建立一个自己的反例清单。选择题里经常考“以下命题正确的是”四个选项往往就是把定理的某个条件去掉。比如“f在[a,b]上可积则|f|在[a,b]上可积”——这是真的因为|f|的振荡受控于f。“f在[a,b]上可积则f有界”——如果是黎曼积分这也是真的无界函数不能黎曼可积。“f在某点可导则f在该点的某个邻域内连续”——是假的可导只保证该点连续不保证邻域内连续可以用 x^2D(x) 之类的函数构造在除0外都不连续的可导等一下这个例子要谨慎。 x^2 D(x) 在0可导且连续, 其他点不连续? It is differentiable at 0: limit (h^2D(h))/h hD(h)→0, yes. At nonzero points? If q? For rational nonzero, function x^2, limit along irrationals 0, function tends x^2 not 0, discontinuous. It is not continuous at nonzero, so definitely not continuous in neighborhood. Good. 这个例子可以用。反过来可导在该点一定连续但在邻域可以一团糟。建议你自己做一张表左栏写命题右栏写真假和给出的反例。做完这张表你对数学分析的理解会比刷十套题都扎实。4.3 科研中好反例本身就是好成果很多人以为只有证明定理才算数学研究其实反例同样重要。一个干净、反直觉的反例往往能帮整个领域搞清楚“现有方法能做到什么程度”。特别是遇到“新定义的函数空间”“新提出的收敛模式”第一件事就是找几个经典反例去测试它的边角是否合理。如果你的新概念能避开所有经典反例那这个概念才值得继续做下去如果被经典反例直接击穿那通常说明定义还需要修正。构造反例也要讲究美感。能用三个例子说清楚的事就不要堆十个能用初等函数表达的就不要搬出高级工具。好的反例要像一把手术刀准确切中最薄弱的环节而不是用一堆复杂构造把读者绕晕。5. 容易踩的坑构造反例时一定要过的五个检查5.1 先看函数是否有界黎曼可积有一个容易忽略的前置条件函数必须在区间上有界。很多人拿“有原函数但导函数无界”的例子来说明“可积不一定有原函数”这没问题但如果你要说明“有原函数但不可积”必须把语境限定在常义黎曼积分下同时讲清楚无界是原罪。在广义积分框架下规则完全不一样。所以构造反例前先问一句我讨论的是常义积分、反常积分还是勒贝格积分不同积分理论下同一句话可能是两个意思。5.2 分段函数别忘了定义关键点处理 x^2 sin(1/x) 这类函数时x0 处必须单独写定义。很多初学者只写 x≠0 的表达式然后拿着“极限式”当函数值用这在逻辑上是缺了一块的。定义 f(0)0才能讨论连续性这个值取多大、取多少会直接影响可导性。每写一个分段函数都回头检查分界点是否都有定义。5.3 区间开闭一变结论天地之差[0,1] 和 (0,1) 差了两个端点但在分析里可能差出一条定理。闭区间上连续函数才有最值定理、一致连续性开区间上这些都会失效。构造完反例再看一眼你的定义域是开、闭、半开半闭还是无界区间很多时候反例“失效”不是思路错而是定义域没选对。5.4 判断一致收敛别靠“看起来”x^n 在 [0,1] 上的图像对前几个 n 看起来似乎很接近极限函数但画图永远代替不了上确界计算。判断 f_n 是否一致收敛要算$$ \sup_{x\in I}|f_n(x)-f(x)|, $$如果这个上确界不趋于0就不一致收敛。对于 x^n在 x_n1-1/n 时f_n(x_n) 并不会趋于0严格计算能立刻暴露问题。5.5 用软件验证反例数值结果可能骗你我偶尔用 Python 或 Mathematica 画一些分析反例但心里始终有根弦数值采样是有限的间断点附近的剧烈行为很容易被漏掉。比如狄利克雷函数在程序里表现取决于你采样哪些点一旦采到无理数函数值就是0画出来“看起来”像常函数0完全掩盖了真实行为。更危险的是数值积分在振荡剧烈的函数上积分结果可能对采样方式极其敏感。反例最终必须靠纸笔严格验证软件只能提供辅助直觉。在我自己教数学分析这些年里最大的感受是一个真正被亲手验证过的反例比背十遍定理都管用。它会在你快要误用定理时猛然跳出来拦住你。如果你是初学者不要只满足于看懂这些例子拿一张纸把每个步骤重新算一遍尤其是极限、上确界、达布和这些细节。算过之后你才算真正拥有了这些反例。