从微积分到实分析
微积分课上,我们常常从一道题的式子出发:约分、配方、代入熟悉的公式,最后算出极限、导数或积分。这个过程没有任何问题;它训练的是计算,也确实能解决大量问题。实分析从同一批对象出发,却多问了一句有点让人不自在的话:你刚才每一步凭什么能用?
例如,看到
n+27n−4=7−n+218
你会立刻猜到它的极限是 7。这一步的直觉很可靠,但“分母越来越大,所以分数趋于零”仍是一句需要翻译的话。多大才算“大”?如果我把允许误差从 0.01 改成 10−30,你的理由还接得住吗?实分析并不否定这个答案;它要把答案背后的理由写成谁都能逐行检查的论证。
所以,这门课的变化不是从“会算”变成“不能算”。计算负责发现结构、提出猜想;定义和证明负责说明猜想在什么条件下必定成立。以后你仍会化简式子,只是化简后要能说清它把问题变成了什么,以及哪个已经证明过的结论允许你跨出下一步。
本章先建立读定义、读量词和组织证明的习惯。数列极限、连续、导数和积分的完整严格理论会在后文逐一展开;这里出现的误差语言,是为了让你先看清它为什么必要。
同一个极限,两个不同任务
先把刚才的数列记为
an=n+27n−4,n∈N.
在计算题里,化简已经几乎结束了工作:an=7−18/(n+2),于是答案应为 7。在证明题里,化简恰好才把真正要控制的量露出来:
∣an−7∣=n+
现在假定有人指定了一个误差 ε>0。我们要做的不是挑一项让误差小于 ε,而是找一个整数 N,保证每个 n≥N 都满足误差要求。只要选取自然数 N 使得 N,那么 时便有
∣an−7∣=n+218<
这段话有两个容易被略过的细节。第一,N 可以随 ε 改变;误差要求越严,通常就需要走得越靠后。第二,N 一旦选定,后面是“所有 n≥N”,不是“某个 n≥N”。正是这个“之后再也不跑出去”的要求,把偶然接近和真正趋近分开了。
计算给出猜想,证明给出保证
把两类任务并排放着看,会更清楚。
有限次计算尤其容易让人误判。定义
bn={0,1,n≤
如果只检查前一百项、前一千项,都会觉得它“就是零”。但它从第 5001 项起恒等于 1,因而不可能收敛到 0。这个例子不复杂,作用却很大:全称命题不能用再多的有限样本代替。样本可以帮我们发现规律,不能把规律送进证明。
暂时借用的误差翻译
后面我们会正式定义数列收敛。现在先把下面一句当作一张需要反复练习阅读的翻译卡:
an→L⟺∀ε>0, ∃N∈N
它不是“an 最后等于 L”。比如 1/n 从来不等于 0,却可以无限接近 0。它也不是“前面有很多项靠近 L”。它说的是:无论你把 周围允许的范围缩得多窄,数列总能找到一个尾部,整个尾部都留在这个范围里。
你可以把它想成一场有顺序的问答。对方先报出 ε,你才能根据它选择 N;不能先固定一个 N,再要求所有误差都适合它。量词顺序一换,句子的意思就彻底变了。
先把数学句子读准确
实分析的难处经常不在某个长公式,而在一句看似普通的话里藏了几个范围。开始写证明前,先问三个问题很有用:对象是什么?它满足哪些条件?这句话究竟要求对谁成立?
集合告诉我们对象从哪里来
集合就是一批对象组成的整体。若 x 是集合 S 的成员,写作 x∈S;若不是,写作 x∈/S。大括号加竖线的写法把“对象”与“条件”分开:
S={x∈R:x2<5}.
这不是说 S 里有一个叫作 x 的特殊数;它说的是,所有实数中平方小于 5 的那些数一起组成 S。因此 2∈S,因为 22;而 ,因为 。
同一个对象集可以有不同描述。比如
T={x∈R:∣x−1∣<2}=(−1,3).
左边用距离描述:x 离 1 的距离小于 2。右边用区间描述:x 严格落在 −1 和 3 之间。证明中把一种描述换成另一种,必须给出等价的理由;不能只因为“看起来差不多”。
若集合 A 的每个成员也都是 B 的成员,就说 A 是 B 的子集,写作 A⊆B。要证明两个集合相等,最稳妥的办法是分两个方向证明:A⊆B 与 。这里的“两个方向”不是格式装饰;它对应“成员完全相同”这件事的全部含义。
命题、条件和结论
命题是有明确真假的陈述。下面这句是命题:
对每个实数 x,若 ∣x∣<1,则 x2<1。
它的条件是 ∣x∣<1,结论是 x2<1。证明很短:∣x∣<1 两边平方,得到 ;而 。不过短并不等于可以省略条件。若只写“”,没有说明 从哪里来,这句话对 就是错的。
“若 P,则 Q”写作 P⇒Q。它只承诺:当 P 成立时,Q 必须成立。它没有承诺 Q⇒P。例如
x=4⇒x2=16
正确,但 x2=16 还允许 x=−4。把一个命题的逆命题当成原命题,是初学证明时很常见的漏步。
量词不是符号装饰
符号 ∀ 读作“对所有”,符号 ∃ 读作“存在”。把它们译成自然语言时,范围一定要一并读出来。
∀x∈R, ∃y∈R, y>x
说的是“每给定一个实数,都能找到比它大的实数”。对指定的 x,取 y=x+1 就够了。它并不等于
∃y∈R, ∀x∈R, y>x.
后一条要求有一个固定的实数大于所有实数,这显然不可能;给出这个 y 后,再取 x=y+1 就反驳了它。前后两个式子用了相同的词,交换量词顺序后却从真变成假。
对于极限语言,顺序更值得逐字读:
∀ε>0∃N∈N∀n≥N.
先出现的 ε 是任意的,它像读者提出的精度要求;N 允许依赖于这个要求;最后的 n 则是任意的尾部指标。读到定义时,先用铅笔圈出每个量词和它管辖的变量,往往比急着背公式更有效。
否定时要把量词翻过来
证明“某命题不成立”不是在句首加一个“不”就结束。否定“对所有”会变成“存在一个”,否定“存在一个”会变成“对所有”。例如,“an 收敛到 L”的误差表述被否定后是:
∃ε0>0, ∀N∈N, ∃n≥N使得∣
这句话很有画面:存在一个怎么也摆脱不掉的正误差 ε0;不论你把尾部从哪里开始,总能在尾部里找到一项仍离 L 至少这么远。
考虑 cn=(−1)n。它为什么不可能收敛到任何实数 L?偶数指标给出 1,奇数指标给出 −1,而任何尾部里都有奇数和偶数。由三角不等式,
2=∣1−(−1)∣≤∣1−L∣+∣−1−L∣.
所以 ∣1−L∣ 与 ∣−1−L∣ 至少有一个不小于 1。取 ε0,不论从哪个 开始,总能在尾部选到使误差不小于 的那种奇偶性。因此它对任何候选 都不满足收敛定义。这里真正起作用的不是“图像在跳”,而是量词否定后给出的可检查结构。
遇到“任意”“存在”“充分大”“充分接近”这些词,先不要凭语感改写。把量词顺序和变量所属的集合写出来,再开始计算。很多错误不是算错,而是把“某一次能做到”偷换成“以后每一次都能做到”。
定义、定理与反例怎样协作
定义不是对一个词的文学解释,而是一条判定规则。它规定我们在本课程里如何使用一个名称。定理则是在若干定义和已知事实之上证明出来的结论;证明负责连接前提与结论;反例负责指出一个陈述在哪个地方越界了。
用距离代替含糊的“接近”
实数 x 与 y 的距离定义为 ∣x−y∣。这一定义很朴素,却给“接近”提供了统一尺度。绝对值满足三角不等式:
∣u+v∣≤∣u∣+∣v∣.
若把 u=x−y、v=y−z 代入,就得到
∣x−z∣≤∣x−y∣+∣y−z∣.
它说的是:从 x 到 z 的直线距离,不会超过绕经 y 的两段距离之和。这个不等式会反复出现在极限的估计里。还有一个常用变形:
∣x∣−∣y∣≤∣x−
它不是新规则。由 ∣x∣=∣(x−y)+y∣≤∣x−y∣+∣y∣ 可得 ;交换 再得 ,两句合在一起就是上式。
这类推导展示了证明的一个基本习惯:不要把熟悉结论当作可以随意搬运的口号。先把想用的结论写清,再把当前式子准确匹配到它的条件上。
如何读一个定义
读定义时可以固定做四件事。
- 找对象和定义域。是所有实数、某个区间里的点,还是从 N 取值的数列?
- 找需要已知的条件。定义是否要求某点属于定义域,是否排除了 0,是否限定端点?
- 按顺序读量词。哪些量可以在看到前面数据后再选,哪些必须对全部对象成立?
- 把最后的不等式译成一句话,检查它控制的到底是哪种距离。
例如,若后来定义函数在点 c 连续,正式句子会涉及 c 的定义域和 x 能取到的附近点。仅说“图像一笔画完”不能承担这些条件。函数
f(x)={x2,3,x
在屏幕缩小后看上去几乎就是抛物线,但当 x 靠近 0 时函数值靠近 0,而 f(0)=3。视觉可以帮助你猜测问题在哪儿,不能替代定义给出的核查。
反例不是唱反调
下面三个短句都很像正确的话,却分别少了一个关键条件。
- “有界数列一定收敛。”错。(−1)n 永远在 −1 与 1 之间,因而有界,却不收敛。
- “无界数列一定没有极限。”若极限指有限实数,这句话对数列有意义;但一旦使用扩充的无穷远记号,n 的行为常被简写成趋向 +∞。先说明讨论的是哪一种极限,才不会把记号和实数混在一起。
- “有理数在实数中很密,所以它没有缺口。”错。稠密只表示任意两个不同实数之间都能找到有理数;它不表示每个应该出现的极限本身都是有理数。 就不是有理数。
第三句会在下一章成为重点。先记住它要纠正的直觉:数轴上点“挤得很密”和所有有界逼近过程“都有落点”是两回事。后者才是完备性要处理的问题。
证明不是把想到的式子排成一列
一份可读的证明应该让读者知道每一步从哪里来、要到哪里去。它不需要故意写得很长,但不能把关键条件藏在“显然”“容易”后面。
一个完整的误差证明
我们回到开头的数列,正式展示一次写法。这里先把“自然数总能超过任意给定的正实数”作为实数系统的基本事实使用;下一章会解释它与实数的结构有什么关系。
命题。 数列 an=(7n−4)/(n+2) 趋向 7。
先固定任意的 ε>0。不能先假定某个方便的误差,因为要处理的是每一种正误差。
计算需要控制的误差:∣a。由这个式子反推,只要分母足够大,误差就会小于 。
注意这里的 N 不是唯一答案。任何更大的自然数都可用。证明题通常不是在寻找唯一的阈值,而是在构造一个确实有效的阈值。
四种常用路线
直接证明从条件出发,一步步到结论。例如由 ∣x−2∣<1 得 −1<x−2<1,再加 2 得 ,所以尤其有 。
逆否证明用于“若 P 则 Q”。它改证等价的“若非 Q 则非 P”。例如要证“若整数 m 的平方是偶数,则 m 是偶数”,可以先证明:若 m 是奇数,写成 ,则
m2=(2k+1)2=4k2+
也是奇数。于是平方偶数不可能来自奇数 m,故 m 必为偶数。
反证法先假设目标结论不成立,再从假设推出无法同时成立的两句话。它适合“没有这样的对象”“不可能相等”之类的结论。使用时要把矛盾的两端写出来;“得到矛盾”四个字本身不是推理。
构造法处理存在性:若要证明“存在一个对象”,就直接给出对象并逐项核对。上面 ∀x∈R∃y>x 的证明之所以完整,是因为构造了 y=x+1,并验证了它确实在实数中且确实大于 x。
这些路线可以混用。误差证明就是构造法的一种:给定 ε 后,我们构造 N;集合相等证明则常常由两次直接证明组成。选择路线之前,先看结论的语法,通常比盯着式子更快。
证明前的一张小清单
动笔前可以先在草稿上写下:
- 已知条件是什么,变量属于哪个集合?
- 目标的定义或可调用定理是什么?
- 最后希望得到的不等式、等式或成员关系是哪一句?
- 若目标含“存在”,能否直接构造;若含“所有”,能否任取一个对象?
- 自己有没有悄悄使用尚未证明的结论,或把结论反过来用了?
这不是机械模板。它的目的只是防止最常见的三种漏洞:对象跑出定义域、量词范围丢失、关键定理没有检查假设。
归纳法:把无限多个整数命题接起来
本课程约定
N={1,2,3,…}.
当需要用到 0 时,我们会明确写 N0={0,1,2,…}。这个小约定值得认真看待:归纳法的第一步在哪里,取决于命题的指标从哪里开始。
归纳法处理的是一串命题 P(1),P(2),P(3),…。如果我们已经证明:
- 起点 P(1) 为真;
- 对每个 n∈N,P(n) 为真能推出 P(n+1) 为真;
那么所有 P(n) 都为真。直觉上像一排多米诺骨牌,但正式内容比比喻更重要:起点给了第一块骨牌,归纳步骤保证任意一块倒下时下一块也倒下。两部分缺一不可。
例题:归纳法验证一个和式
猜想对每个 n∈N,有
k=1∑n(3k+1)=2n(3
先强调一个常被忽略的事实:归纳法的任务是验证这条公式,不负责凭空发现它。你可以先算前几项、观察系数,或从别的恒等变形中猜到右边;一旦公式写出,才轮到归纳法。
验证起点 n=1:左边是 4,右边是 1⋅8/2=4,所以 成立。
于是公式对所有正整数 n 成立。写归纳步骤时,最好显式写出“假设 P(n)”与“证明 P(n+1)”这两个标记。很多看似差一行的归纳证明,问题正是指标没有真的从 n 变成 n+1。
起点不一定是 1
有些结论从较晚的指标才开始成立。例如,对 n≥4,我们有
2n≥n2.
起点取 n=4,因为 24=16=42。若对某个 n≥4 已有 ,则
2n+1=2⋅2n≥2n2.
而 n≥4 时
2n2−(n+1)2=n2−2n−
因此 2n+1>(n+1)2。归纳法就从 4 推到了所有更大的整数。这里如果把结论写成“对所有 n∈N”,立刻会在 失败;起点本身就是命题的一部分。
强归纳何时需要
有时证明 P(n+1) 时,不只需要 P(n),还需要前面多个结论。这时可用强归纳:先验证起点;再假设 P(n0),P 全部成立,并由此推出 。
例如,证明每个 n≥12 都可写成 4a+5b,其中 a,b∈N0。先直接检查:
12=4⋅3,13=4⋅2+5,14=4+5⋅
再假定从 12 到 n 的所有整数都能这样表示,其中 n≥15。那么 n−3≥12,归纳假设给出 n−;于是
n+1=(n−3)+4=4(a+1)+5b.
所以 n+1 也能表示。这个例子实际上只用到了较早的一项 n−3,正好说明了为什么普通的“只知道 P(n)”有时信息不够。
只证明“P(n) 能推出 P(n+1)”还不够。若没有正确的起点,整串命题可能一项也没有被启动。归纳法不会替你修复一个错误的猜想,也不会自动补上缺失的初始情形。
实数的地基,先知道它在回答什么
后面所有误差、距离和阈值都在实数里发生,因此有必要先辨认几块地基。现在不急着把每一条都证明完;下一章会把完备性作为主角细讲。
运算、次序与绝对值
实数能够相加、相乘、取相反数和非零数的倒数;这些性质让我们可以合法地展开、因式分解、约分。实数还能够比较大小,并且比较与运算相容:同一边加数不改变不等号方向,乘以正数不改变方向,乘以负数则翻转方向。
这些规则是计算中的背景,不是无需说明的魔法。例如从 a<b 推出 ac<bc 前,必须知道 c>0;若 c<0,正确结论是 。许多极限估计看起来只是“把式子压小”,实质上正是在反复使用这些次序规则。
上界和“刚好挡住”的数
设 S⊆R。若对所有 x∈S 都有 x≤M,则 M 是 S 的上界。上界通常不止一个。对
S=(−2,3)
而言,3、4、100 都是上界。
最大值要求更强:它必须属于 S,并且不小于 S 的每一个成员。集合 (−2,3) 没有最大值,因为 3 不在里面;但它有最小的上界,即上确界 3。上确界不需要属于集合,它的工作是精确描述“能从右边挡住集合的最靠左位置”。类似地,下确界描述最靠右的下界。
下一章会把“每个非空且有上界的实数集合都有上确界”写成严格的完备性原理,并用它证明存在性。现在先别混淆三个词:上界可以很多个,最大值必须被集合取到,上确界是全部上界中最小的那个。
稠密不等于没有缺口
有理数 Q 在实数中很密:任何开区间里都有有理数。无理数也同样密。因此在数轴上随便放大一个小区间,都会同时看到这两类数。
可密并不能填补完备性的缺口。以
A={q∈Q:q>0, q2<2}
为例,它有许多有理数成员,如 1,7/5,141/100;也有有理上界,如 2。它想逼近的边界是 2,但 。所以“每个小区间都有有理数”不能推出“有理数中每个有界集合都有上确界”。这正是实数比有理数多出的保证。
无穷远不是一个普通实数
我们有时写 n→+∞,这描述的是指标没有上界地增大;它不表示 n 最后取到了一个名为 ∞ 的实数。为了简化某些表述,人们会在实数之外添加 +∞ 与 −∞ 作为扩充记号,但不能因此把一切四则运算都当成有意义。例如
∞−∞,0⋅∞,∞∞
都没有由符号本身确定的值。微积分里把它们叫作未定式,是因为不同的具体函数或数列可以产生完全不同的结果;以后遇到它们,仍要回到原表达式做分析。
带着什么进入下一章
到这里,你不必已经能熟练写出每一种证明。更实际的目标是形成一套会反复使用的动作:先分清对象和定义域,再读量词顺序;先由计算提出猜想,再用定义或定理验证;若一句话看上去过于顺手,就主动寻找它遗漏的条件和反例。
下一章会把这里预告的实数地基展开。我们将区分有界、最大值与上确界,认真解释为什么有理数的稠密无法补上 2 的缺口,并把“逼近过程有落点”变成可用于证明的完备性原理。等这些地基放稳之后,数列极限中的 N 为什么总能找到、连续性为何能推出全局结论,才有可靠的落脚处。
小练习
练习 1:设
U={x∈R:∣2x−1∣<3}.
把 U 写成开区间,并判断 −1、0、2 是否属于 U。
由 ∣2x−1∣<3 得
−3<2x−1<3.三边同时加 1,再同时除以正数 ,得到 ,所以 。 和 都是端点,不属于开区间; 满足 ,所以 。也可直接核对:。
练习 2:比较下列两个句子,并判断真伪:
∀x∈R, ∃y∈R, x+y=0;
∃y∈R, ∀x∈R, x+y=0.
第一句为真。给定任意 x,取 y=−x,便有 x+y=0。第二句为假。若存在一个固定的 y 对所有 x 都成立,分别取 与 ,会得到 与 ,矛盾。差别正来自 与 的次序:第一句允许 随 改变,第二句不允许。
练习 3:证明数列
dn=5+2n+111
趋向 5。
给定任意 ε>0,选取 N∈N 使 N>11/(2ε)。若 n≥N,则 ,所以
练习 4:说明下面的推理为什么不能证明“对所有 n∈N,n2+n 是偶数”:
已知 n2+n 是偶数。于是 (n+1)2+(n+1 也是偶数。所以结论成立。
然后把它改成完整的归纳证明。
原推理只给出了归纳步骤,没有验证起点;归纳假设也应说明针对一个固定的 n 使用。虽然这个命题恰好为真,证明的结构仍不完整。
令 P(n) 表示“n2+n 是偶数”。起点 P(1) 成立,因为 。现假设某个 的 成立,即 是偶数。则
练习 5:令 S=(−4,1)。分别指出一个上界、最大值(若有)、上确界、一个下界、最小值(若有)和下确界,并说明理由。
1 是上界,也是 S 的上确界,因为所有 x∈S 都有 x<1,而任何小于 1 的数都不能挡住整个区间;但 S 没有最大值,因为 。 是下界,也是下确界; 没有最小值,因为 。例如 也是上界, 也是下界,这说明上下界本身通常不唯一;上确界与下确界才是精确的边界数。