书接上回:
拓扑与拓扑的基(1)
分析学与实数完备性
上一篇文章的结尾,我们构造了一个定义在 $\mathbb{Q}$ 上的函数,它在某点处的差商极限是无理数——在 $\mathbb{Q}$ 中做微积分,这个导数不存在,只有把数系放宽到 $\mathbb{R}$,导数才”存在”。结论是:微积分必须建立在实数上,因为极限的产物会逃出有理数域.
但”逃逸”的不只是导数.在写下那个结论之后,一个更基本的问题浮现出来:连续性本身,会不会也依赖数域?
这个猜想不是凭空来的.回忆微积分最基本的定理:可导必连续.那么,如果可导性会随着数域的更换而改变(上一篇已经证明了这一点),作为它的推论的连续性,会不会也一起翻转?
推理链是这样的:假如存在一个函数,在 $\mathbb{Q}$ 上可导——那么它必然在 $\mathbb{Q}$ 上连续;而同一个函数在 $\mathbb{R}$ 上不可导——不可导虽然不必然推出不连续,却给了”不连续”以可能.于是我们猜测:可能存在一类函数,在 $\mathbb{Q}$ 上连续,却在 $\mathbb{R}$ 上不连续.
这个猜想一旦成立,结论是颠覆性的:连续性不再是函数自身的属性,而是”函数 + 数域”这个组合的属性.同一个函数规则,换一个数域去看,连续性可以面目全非.
答案比预想的还要干脆.能证明这一点的,甚至不需要上篇那种精心构造的函数——一个教科书上早就存在的、简单到近乎荒谬的函数就足够了.这就是 Dirichlet 函数.
它只有两条规则:有理数取 $1$,无理数取 $0$.接下来我们将在 $\mathbb{Q}$ 和 $\mathbb{R}$ 上分别用连续性的定义验证它,并由此引出拓扑学对”连续”的重新表述——以及子空间拓扑这个自然的概念.
先回顾连续性的定义
在微积分中,函数 $f$ 在点 $x_0$ 处连续的定义是:
对任意 $\varepsilon > 0$,存在 $\delta > 0$,使得当 $|x – x_0| < \delta$ 时,有 $|f(x) – f(x_0)| < \varepsilon$.
这个定义埋着一个不显眼的假设:“当 $|x – x_0| < \delta$”中的 $x$,到底可以在哪里取?在微积分的默认语境里,$x$ 当然在整个 $\mathbb{R}$ 上取——定义域是 $\mathbb{R}$时,由于$|x – x_0| < \delta$,邻域 $(x_0 – \delta, x_0 + \delta)$ 里的点都要被条件$|f(x) – f(x_0)| < \varepsilon$考察.
但如果定义域换成 $\mathbb{Q}$,事情就微妙了:函数只定义在有理数上,”当 $|x – x_0| < \delta$”就只考察 $x \in \mathbb{Q}$ 的那些点,邻域也变成了 $(x_0 – \delta, x_0 + \delta) \cap \mathbb{Q}$.同一个定义,同一个 $\varepsilon-\delta$ 规则,但考察对象的范围不同了.这个差别,正是下面那个反直觉例子能够成立的根源.
Dirichlet 函数:同一个规则,两种命运
定义:
$$D(x) = \begin{cases} 1, & x \in \mathbb{Q} \\ 0, & x \notin \mathbb{Q} \end{cases}$$
先看它在 $\mathbb{Q}$ 上的表现.取任意一点 $x_0 \in \mathbb{Q}$,用 $\varepsilon-\delta$ 定义验证连续性.对任意 $\varepsilon > 0$,任取 $\delta > 0$(比如 $\delta = 1$):当 $x \in \mathbb{Q}$ 且 $|x – x_0| < \delta$ 时,$x$ 是有理数,$D(x) = 1 = D(x_0)$,于是
$$|D(x) – D(x_0)| = 0 < \varepsilon$$
$D$ 在 $\mathbb{Q}$ 上处处连续.注意这里发生了什么:$\delta$ 无论取多小,只要 $x$ 是有理数,$D$ 的值就不变——因为在 $\mathbb{Q}$ 中,$x_0$ 的邻域内根本没有”别的种类的点”.事实上 $D$ 限制在 $\mathbb{Q}$ 上就是常值函数 $1$,它甚至一致连续、处处可导(读者自证),比”连续”还要强得多.
再看它在 $\mathbb{R}$ 上的表现.取任意一点 $x_0 \in \mathbb{R}$——无论它是有理数还是无理数.取 $\varepsilon_0 = 0.9$,对任意 $\delta > 0$,由于$\mathbb{Q}$与$\mathbb{R} – \mathbb{Q}$都在$\mathbb{R}$上稠密,区间 $(x_0 – \delta, x_0 + \delta)$ 内同时含有有理数和无理数.
$|x – x_0| < \delta$即$x \in (x_0 – \delta, x_0 + \delta)$时,我们分类讨论:
- 若 $x_0$ 是有理数,取该区间内的无理数 $x’$,则 $D(x’) = 0$,$|D(x’) – D(x_0)| = |0 – 1| = 1 > 0.9 = \varepsilon_0$
- 若 $x_0$ 是无理数,取该区间内的有理数 $x’$,则 $D(x’) = 1$,$|D(x’) – D(x_0)| = |1 – 0| = 1 > 0.9 = \varepsilon_0$
无论 $\delta$ 缩得多小,总能找到与 $x_0$ 距离小于 $\delta$、却让 $D$ 跳动 $1$ 的点.连续性定义失效.
$D$ 在 $\mathbb{R}$ 上处处不连续. 这里用到的工具是稠密性:有理数和无理数都在 $\mathbb{R}$ 中稠密,任何小区间都躲不开这两类点.
同一个函数规则,在 $\mathbb{Q}$ 上看完全”正常”,在 $\mathbb{R}$ 上看支离破碎.连续性,果然不只是函数的事.
从度量到拓扑:连续性的真正原料
上面两个证明,表面上一个靠“常值”、一个靠“稠密“,实际上用的是同一种东西——邻域. $\varepsilon-\delta$ 定义中真正起作用的,不是 $\varepsilon$ 和 $\delta$ 这两个数字,而是不等式 $|x – x_0| < \delta$ 圈出的那个集合:
$$B(x_0, \delta) = \{x : |x – x_0| < \delta\}$$
它叫以 $x_0$ 为中心、$\delta$ 为半径的开球.连续性说的是:对任意 $\varepsilon$,存在 $\delta$,使得 $x_0$ 的 $\delta$-开球内的所有点,其函数值都落在 $f(x_0)$ 的 $\varepsilon$-开球内.换句话说,连续性 = 开球的像被开球控制.
而 D 的例子告诉我们,关键在于:开球 $\cap$ 定义域里,到底有哪些点.在 $\mathbb{Q}$ 上,$B(x_0, \delta) \cap \mathbb{Q}$ 里全是”同类点”;在 $\mathbb{R}$ 上,$B(x_0, \delta)$ 里什么点都有.
于是自然要问:如果我只告诉你”每个点有哪些邻居”,而不是距离——还能定义连续吗?这就要从度量抽象出更一般的结构:拓扑.
拓扑空间的定义
设 $X$ 是一个非空集合,$\mathcal{T}$ 是 $X$ 的子集构成的族.若 $\mathcal{T}$ 满足:
- $\emptyset \in \mathcal{T}$,$X \in \mathcal{T}$;
- $\mathcal{T}$ 中任意多个成员的并仍在 $\mathcal{T}$ 中(任意并封闭);
- $\mathcal{T}$ 中有限多个成员的交仍在 $\mathcal{T}$ 中(有限交封闭);
则称 $\mathcal{T}$ 是 $X$ 上的一个拓扑,$(X, \mathcal{T})$ 称为拓扑空间,$\mathcal{T}$ 中的成员称为开集.
这三个条件不是任意的.第 1 条给出边界,第 2、3 条保证”开集”像我们熟悉的开区间那样行为合理:开区间(开集)的任意并还是开集,有限个开区间(开集)的交还是开集.闭区间就做不到这两条——这正是”开”和”闭”的实质区别.
先看两个极端的例子,感受”拓扑”这个概念的弹性.
离散拓扑:令 $\mathcal{T} = \mathcal{P}(X)$ ,即每个子集都是开集.三条公理显然成立:空集和 $X$ 都在其中,任意并、有限交的子集仍是子集.在这个拓扑下,每个单点集 $\{x\}$ 都是开集,每个点都是孤立点——没有任何”邻居”需要被靠近.这是”邻居关系”最稀薄的一种拓扑.
平凡拓扑:令 $\mathcal{T} = \{\emptyset, X\}$,只有两个开集.三条公理同样成立.在这个拓扑下,任意两个点都是”邻居”(任何非空开集都包含所有点),谁也无法被分开.这是”邻居关系”最浓稠的一种拓扑.
这两个例子说明:同一个集合 $X$,可以在其上构造出截然不同的拓扑,而”连续性”随之完全改变.度量不是开集的唯一来源——它只是最常见的一种.后面我们还会用到一个:$\{0, 1\}$ 上的离散拓扑,那是 Dirichlet 函数值域的自然拓扑.
度量拓扑:从距离到开集
但我们最早熟悉的拓扑,毕竟来自度量.设 $(X, d)$ 是度量空间,定义开球
$$B(x, \varepsilon) = \{y \in X : d(x, y) < \varepsilon\}$$
然后这样定义开集:称 $U \subseteq X$ 为开集,若 $U$ 的每个点都是它的内点——即对任意 $x \in U$,存在 $\varepsilon > 0$ 使 $B(x, \varepsilon) \subseteq U$(这实际上和拓扑的基有关,读者可自行查阅).
验证这确实构成拓扑,逐条来:
- $\emptyset$ 与 $X$ 是开集:先看 $\emptyset$——它没有点,”对每个 $x \in U$ 都存在开球”这类全称命题对空集自动成立,称为空真.再看 $X$:任取 $x \in X$ 和任意 $\varepsilon > 0$,开球 $B(x, \varepsilon)$ 按定义就是 $X$ 的子集,故 $B(x, \varepsilon) \subseteq X$,$x$ 是内点.
- 任意并封闭:设 $\{U_\alpha\}_{\alpha \in I}$ 是一族开集,要证 $\bigcup_\alpha U_\alpha$ 是开集.任取 $x \in \bigcup_\alpha U_\alpha$,则 $x$ 至少属于其中一个成员,记为 $U_{\alpha_0}$.因为 $U_{\alpha_0}$ 是开集,$x$ 是它的内点(即$x \in U_{\alpha_0}$),故存在 $\varepsilon > 0$ 使 $B(x, \varepsilon) \subseteq U_{\alpha_0}$.而 $U_{\alpha_0} \subseteq \bigcup_\alpha U_\alpha$,所以 $x \in B(x, \varepsilon) \subseteq \bigcup_\alpha U_\alpha$,所以$x \in \bigcup_\alpha U_\alpha$(即 $x$ 是并集的内点).由于 $x$ 任意,并集是开集. 注意这个证明对任意多个(甚至不可数个)成员都成立:每个点只需要自己的那个 $\varepsilon$,不需要对全体成员做任何统一控制.这正是”任意并”能被接纳进公理的原因.
- 有限交封闭:设 $U_1, \ldots, U_n$ 是有限个开集,要证 $\bigcap_{k=1}^n U_k$ 是开集.任取 $x \in \bigcap_{k=1}^n U_k$.对每个 $k$,$U_k$ 是开集,$x$ 是它的内点,故各任有一个 $\varepsilon_k > 0$ 使 $B(x, \varepsilon_k) \subseteq U_k$.取 $$0 < \varepsilon \le \min\{\varepsilon_1, \ldots, \varepsilon_n\}$$ 有限个正数的最小值仍是正数.对任意 $k$,$\varepsilon \le \varepsilon_k$,于是 $B(x, \varepsilon) \subseteq B(x, \varepsilon_k) \subseteq U_k$(开球随半径单调包含).故 $x \in B(x, \varepsilon) \subseteq \bigcap_{k=1}^n U_k$,$x$ 是交集的内点.$x$ 任意,交集是开集. 这里”有限”两个字是必要的规定.例子:$\bigcap_{n=1}^{\infty}\left(-\frac{1}{n}, \frac{1}{n}\right) = \{0\}$,单点集 $\{0\}$ 在欧几里得拓扑中不是开集,因为不存在一个$\varepsilon > 0$使得$B(0, \varepsilon) \subseteq \{0\}$.无限交会逃出开集族,所以公理只承诺有限交.
这个拓扑称为度量拓扑.开球自身确实是开集:若 $y \in B(x, \varepsilon)$,取 $\varepsilon’ = \varepsilon – d(x, y) > 0$,对任意 $z \in B(y, \varepsilon’)$,由三角不等式
$$d(x, z) \le d(x, y) + d(y, z) < d(x, y) + \varepsilon’ = \varepsilon$$
故 $z \in B(x, \varepsilon)$,即 $B(y, \varepsilon’) \subseteq B(x, \varepsilon)$——开球有”自我敞开”的性质:球内的每个点,都带着一个属于自己的小球待在原地.(和拓扑基关系很大)
在 $\mathbb{R}$ 上取度量 $d(x, y) = |x – y|$,开球就是开区间 $(x – \varepsilon, x + \varepsilon)$,度量拓扑正是欧几里得拓扑(因为一维的$\mathbb{R}$或$\mathbb{Q}$上$|| \cdot ||_p = || \cdot ||_q = || \cdot ||_2 = | \cdot |$)——$\varepsilon-\delta$ 的一切都建立在它上面.在 $\mathbb{Q}$ 上取同样的度量,开球变为 $(x – \varepsilon, x + \varepsilon) \cap \mathbb{Q}$,得到的拓扑与后面定义的子空间拓扑一致——这也印证了前面那句”邻域的含义变了”.
一个集合带上拓扑,就能定义邻域:若存在开集 $U$ 使得 $x \in U \subseteq A$,则称 $A$ 是 $x$ 的邻域.开球 $B(x_0, \delta)$ 天然是 $x_0$ 的邻域,且它自己就是开集.
子空间拓扑:邻域从哪来
设 $(X, \mathcal{T})$ 是拓扑空间,$Y \subseteq X$.定义
$$\mathcal{T}_Y = \{Y \cap U : U \in \mathcal{T}\}$$
即 $Y$ 中那些能写成”$X$ 的开集与 $Y$ 相交”的子集,构成 $Y$ 上的拓扑 $\mathcal{T}_Y$,称为子空间拓扑(或相对拓扑),$(Y, \mathcal{T}_Y)$ 是 $X$ 的子空间.
证明 $\mathcal{T}_Y$ 确实是 $Y$ 上的拓扑. 逐条验证三条公理:
- $\emptyset$ 与 $Y$ 都是开集:$\emptyset = Y \cap \emptyset$,而 $\emptyset \in \mathcal{T}$;同理 $Y = Y \cap X$,而 $X \in \mathcal{T}$.故 $\emptyset, Y \in \mathcal{T}_Y$.
- 任意并封闭:设 $\{Y \cap U_\alpha\}_{\alpha \in I}$ 是 $\mathcal{T}_Y$ 中任意一族成员($U_\alpha \in \mathcal{T}$).由集合运算的分配律, $$\bigcup_{\alpha} (Y \cap U_\alpha) = Y \cap \left( \bigcup_{\alpha} U_\alpha \right)$$ 而 $\bigcup_\alpha U_\alpha \in \mathcal{T}$($\mathcal{T}$ 对任意并封闭),故上述并集形如”$Y$ 与 $X$ 的开集相交”,属于 $\mathcal{T}_Y$.
- 有限交封闭:设 $Y \cap U_1, \ldots, Y \cap U_n \in \mathcal{T}_Y$.同样由分配律, $$\bigcap_{k=1}^{n} (Y \cap U_k) = Y \cap \left( \bigcap_{k=1}^{n} U_k \right)$$ 而 $\bigcap_{k=1}^n U_k \in \mathcal{T}$($\mathcal{T}$ 对有限交封闭),故该交集属于 $\mathcal{T}_Y$.
三公理全部成立.注意证明中没有用到 $Y$ 的任何特殊性质——任何子集 $Y \subseteq X$ 都能从 $X$ 的拓扑继承出一个子空间拓扑.这正是”子空间”这个名字的由来:拓扑这种结构,被 $Y$ 从 $X$ 中继承下来.
它回答了我们前面的疑问:定义域换成 $\mathbb{Q}$ 后,邻域到底是什么?——就是在 $X$ 的邻域上切一刀,只留下 $\mathbb{Q}$ 里的点:
$$B(x_0, \delta) \cap \mathbb{Q}$$
这正是连续性证明里”只考察有理数”的严格表述.$\mathbb{Q}$ 作为 $\mathbb{R}$ 的子空间,它的”邻居关系”是 $\mathbb{R}$ 的邻居关系限制出来的.
用开集重新定义连续
有了拓扑,连续性有了一个干净到极致的表述:
设 $(X, \mathcal{T}_X)$、$(Y, \mathcal{T}_Y)$ 是拓扑空间.函数 $f: X \to Y$ 连续,若对 $Y$ 的每个开集 $V$,原像 $f^{-1}(V)$ 是 $X$ 的开集.
在度量空间(如 $\mathbb{R}$)里,这个定义与 $\varepsilon-\delta$ 定义等价.这里给出完整证明.
证明(设 $X, Y$ 为度量空间,$f: X \to Y$).
$\varepsilon-\delta$ 连续 ⟹ 拓扑连续:
设 $f$ 在每一点满足 $\varepsilon-\delta$ 定义.任取 $Y$ 的开集 $V$,要证 $f^{-1}(V)$ 是 $X$ 的开集.取 $x_0 \in f^{-1}(V)$,即 $f(x_0) \in V$.由于 $V$ 是开集,存在 $\varepsilon > 0$ 使开球 $B(f(x_0), \varepsilon) \subseteq V$.由 $f$ 在 $x_0$ 处的 $\varepsilon-\delta$ 连续性,存在 $\delta > 0$ 使得
$$f(B(x_0, \delta)) \subseteq B(f(x_0), \varepsilon) \subseteq V$$
即 $B(x_0, \delta) \subseteq f^{-1}(V)$.于是 $x_0$ 是 $f^{-1}(V)$ 的内点.由于 $x_0$ 任意,$f^{-1}(V)$ 的每点都是内点,故 $f^{-1}(V)$ 是开集.
拓扑连续 ⟹ $\varepsilon-\delta$ 连续:
设 $f$ 满足开集原像定义.取定 $x_0 \in X$,对任意 $\varepsilon > 0$,开球 $B(f(x_0), \varepsilon)$ 是 $Y$ 的开集,故其原像 $f^{-1}(B(f(x_0), \varepsilon))$ 是 $X$ 的开集.而 $x_0$ 属于它(因为 $f(x_0)$ 属于自己的开球),由开集的定义,存在 $\delta > 0$ 使 $B(x_0, \delta) \subseteq f^{-1}(B(f(x_0), \varepsilon))$,即
$$|x – x_0| < \delta \implies |f(x) – f(x_0)| < \varepsilon$$
这正是 $\varepsilon-\delta$ 连续性.
两个方向都成立,两种定义等价.注意:$(1)$ 用到了”开球是开集、开集的点有开球邻域”——即度量拓扑的基本事实;而$(2)$ 只用到”开球是开集”这一条.整体来看,$\varepsilon-\delta$ 语言是开集语言的实例:距离无非是生成开球、开球生成开集的一台机器.
脱离度量:连续性的普适形态
等价性证明的另一面是:如果根本没有距离,连续性照样可以定义.开集原像的定义不依赖任何度量——它只需要”哪些集合是开集”这个信息.这正是拓扑空间的全部:一个集合 $X$,加一个开集族 $\mathcal{T}$,就可以谈论连续性.
这意味着度量空间只是拓扑空间的特例:度量生成拓扑,拓扑承载连续.反过来,拓扑远比度量丰富——同一个集合上可以放很多不同的拓扑,连续性随之改变.
回到 Dirichlet 函数:开集语言下的两种命运
现在用开集定义重新看 Dirichlet 函数.值域 $\{0, 1\}$ 取离散拓扑,则 $\{1\}$ 是开集.于是:
$$D^{-1}(\{1\}) = \mathbb{Q}$$
在 $\mathbb{R}$ 中:$\mathbb{Q}$ 不是开集(无论哪个有理点附近都有无理数,无法用开区间包含),故 $D$ 作为 $\mathbb{R} \to \{0,1\}$ 的映射不连续.
在 $\mathbb{Q}$ 中:子空间拓扑 $\mathcal{T}_{\mathbb{Q}} = \{\mathbb{Q} \cap U : U \text{ 是 } \mathbb{R} \text{ 的开集}\}$,而 $\mathbb{Q} = \mathbb{Q} \cap \mathbb{R}$,$\mathbb{R}$ 自身是开集,故 $\mathbb{Q} \in \mathcal{T}_{\mathbb{Q}}$——$\mathbb{Q}$ 在它自己的子空间拓扑里是开集.于是 $D^{-1}(\{1\}) = \mathbb{Q}$ 是开集,$D$ 作为 $\mathbb{Q} \to \{0,1\}$ 的映射连续.
同一个原像 $\mathbb{Q}$,在 $\mathbb{R}$ 中不开、在 $\mathbb{Q}$ 的子空间拓扑中开——开与不开,全看拓扑.这个对照比 $\varepsilon-\delta$ 的两个证明更简洁,因为开集语言把”考察范围”内嵌在了定义里:连续与否,只取决于开集被怎么划分.
一个警告:序列不再是万能的
在度量空间里,连续性与序列收敛完全对应:$f$ 连续当且仅当对任意收敛序列 $x_n \to x_0$,有 $f(x_n) \to f(x_0)$.但脱离度量后这个对应可能失效——拓扑空间的邻域不必有可数基(第一可数性),序列太”稀疏”,探测不到某些邻域结构.于是出现了只有网(Moore-Smith 收敛)或滤子才能描述的情形.这提醒我们:序列是度量空间的工具,开集才是一般拓扑的语言.
(co-work with deepseek-v4-flash-0731)