动静结合:ODE 解的存在性和唯一性
关于皮卡-林德勒夫(Picard–Lindelöf)定理
微分方程求解的例子
给定方程 \( y'(t)=y(t) \) 以及初始状态 y(0)=a 。
如果我们事先知道 \( e^t \) 的导数是其自身,那么很容易猜测出方程至少有一个解是 \( y(t)=e^t \) 形式,加上 y(0)=a 后修正为 \( y(t)=ae^t \)
“容易的猜测”来自于方程的符号形式和记忆中的函数性质的匹配,当然看到 y'=y 时也许无法联想到 \( e^t \), 但如果把等式的意思默念出来: "y 是一个函数,看作是 f(x) ,它的导数也是 f(x), 什么函数求导后是自身?", 那么很大概率你会想起 \( e^x \) ,之后把它代入方程进行验证和修正。
也就是说我们会扩展等式,对它进行某些符号替换,比如它等价于 f'(x)=f(x) ; 或者进行语义上解释,这些扩展出来的信息更有可能唤醒一些相似的记忆从而促进推理。
如果面对的微分方程是 \( y'(t)=y(t)^2 \) 以及初始状态 y(0)=a (a>0)呢?
除非前几天做过相同的题目,否则基本无法直接通过符号或者“某个函数的导数是其自身平方”的解释来联想到特定函数表达式。
标准做法是从符号的模式识别出它是可分离变量的,于是有:
\[ \frac{dy}{y^2} = dt \] 积分: \[ \int \frac{dy}{y^2} = \int dt \] \[ -\frac{1}{y} = t + C \] 由 \(y(0)=a\) 得 \(C = -\frac{1}{a}\)。所以 \[ -\frac{1}{y} = t - \frac{1}{a} \] \[ y(t) = \frac{1}{\frac{1}{a} - t} = \frac{a}{1-at} \]
分离变量法的解释
分离变量法是微积分基本定理 – 对函数求导和对函数积分是互逆 – 以及求导链式法则共同作用后的结果,解释如下:
\( \frac{dy}{dt}=y^2 \) 分离变量的简写法是 \( \frac{dy}{y^2}=dt \), 然后左边对 y 积分右边对 t 积分得到 A:\( \int \frac{1}{y^2} dy = \int dt \) , 这里把 dt 和 dy 看作了一般的变量,等式两边可以乘以 dt 移向,但 dy/dt 实际是 \( \frac{d}{dt} (y(t)) \) ,是对 y 求导的一个“操作”,类似对 y(t) 求平方的操作,不能把 dt 当作变量往等式两边相乘。
但可以用以下方式证明,这种场景下把 dy,dt 当作变量交换再积分是合理的。
先写成 \( \frac{1}{y^2} \frac{d}{dt}y = 1 \), 两边对 t 积分得到: \( \int \frac{1}{y^2}\frac{d}{dt}ydt=\int dt \), 将它记为等式 B; 我们想论证 B 等式左边和 \( \int \frac{1}{y^2} dy \) 是一样的, 用的方法是对 \( \int \frac{1}{y^2} dy \) 针对变量 t 求导再积分,因为求导和积分是互逆的,其结果是不变的,但对 t 的求导和积分会改变符号形式:
根据链式求导法则,\( \frac{d}{dt} \int \frac{1}{y^2} dy = \frac{d}{dy} (\int \frac{1}{y^2} dy) \frac{d}{dt}y = \frac{1}{y^2} \frac{d}{dt}y \), 也就是 \( \frac{d}{dt} \int \frac{1}{y^2} dy = \frac{1}{y^2} \frac{d}{dt}y \), 再两边对 t 积分,左边对 t 的求导抵消了,得到 \( \int \frac{1}{y^2} dy \), 右边 \( \int \frac{1}{y^2}\frac{d}{dt}ydt \) 就等于等式 B 的左侧,因此分离变量后 \( \int \frac{1}{y^2}dy = \int dt \) 式子是合理的。
唯一性的直觉:从点到线
以上方法是从符号变换的角度进行的,它们基于很高层的抽象,比如分离变量法是对链式求导的一种包装,而链式求导法又是对复合函数导数的符号规律总结,导数则是对瞬时(极限下)变化率的概念包装。
层层抽象和封装中削弱了我们对微分方程丰富意义的理解,比如当问 \( y(t)=e^t \) 就是 \( y'=y, y(0) = 1 \) 的唯一解的问题时,在这种高层符号的框架下很难回答,因为 \( e^t \) 仅仅是我们知道的导数等于自身的一个例子。即便分离变量法,可以通过微积分基本定理来保证积分后的函数只会相差常数 C ,通过初始条件可以解出 C,但对于更复杂的无法进行变量分离甚至无法用符号变换求解的方程(大部分非线性方程,包括神经网络模拟的向量场),其唯一性更无法从符号层面去保证。
因此,要想从通用角度去确保解函数的唯一性,必须回到导数最底层的解释, \( y'=f(y,t) \) 表示函数在当前时间的变化率由当前状态和时间决定,这是对局部的约束,给定特定时间的状态,就得到了这个点极小范围的变化率,但它适用于函数的整个定义域。
而在求解之前,我们对函数唯一确定的只有初始值 y(0)=a, 这又是局部到不能再局部的条件,通过这个初始点,以及对每个点局部的约束,可以像梳理线头一样一点点把整条线(函数)给抽取出来。直觉上看,只要导数这种定义的约束范围足够小,小到只对当前点以及它“唯一的”邻居点之间的关系设立确定性约束,那么从初始点出发只有一种延伸方式,即解函数是唯一的。
问题就在于,实数点并没有所谓唯一的邻居,它是一个连续的统一对象,0 的“下一个点”是一个存在语义错误句子,类似 "现任法国国王的大儿子是谁?"一样。
不过我们还是可以从离散情况的例子中汲取启发:
必然唯一:从点到序列
还以微分方程 \(y' = y^2\) 与初值 \(y(0)=a>0\) 为例。
导数的定义是极限 \(\displaystyle y'(t) = \lim_{\Delta t\to 0} \frac{y(t+\Delta t)-y(t)}{\Delta t}\)。若将时间离散化,取固定的步长 \(\Delta t = 1\)(即不再取极限),则近似有 \[ \frac{y(t+1)-y(t)}{1} \approx y(t)^2, \] 从而得到差分方程 \[ y_{n+1} - y_n = y_n^2, \quad y_0 = a, \]
这是一个递推关系:
\[ y_{n+1} = y_n + y_n^2, \quad y_0 = a, \]
其中 \(y_n\) 表示离散时刻 \(t=n\) 的近似值。这是一个完全确定性的递推关系:已知 \( y_0 = a \),可依次唯一算出
\[ \begin{aligned} y_1 &= a + a^2,\\ y_2 &= y_1 + y_1^2 = a + a^2 + (a+a^2)^2,\\ y_3 &= y_2 + y_2^2 = a + a^2 + (a+a^2)^2 + \bigl(a + a^2 + (a+a^2)^2\bigr)^2,\\ &\quad\vdots \end{aligned}\]
如此,从初始的一个点出发,依靠每一步的局部规则(当前值决定下一值),就能唯一地构造出整个离散序列。
递推关系(差分)通过明确的“下一步”规则唯一地生成了整个序列;
而导数则把 "下一步" 细化到“无穷小步”,通过极限过程同样唯一地限定了函数的行为。
换句话说,连续是离散的极限,唯一性在离散中显然成立,而极限的设计足够符合直觉,在步长趋于零过程中,只要不是真正的 0 ,它仍然是离散的,解就是唯一的,因此连续情况下解也是唯一。
解的唯一性的质疑
以上从离散到连续过程中,解的唯一性被保持的解释看上去非常有说服力,在复杂的需要用数值法近似求解的场景中,这足够了。
但从理论角度,它并不严格,一个经典的例子是:
\[ y' = \sqrt{y}, \qquad y(0) = 0. \]
离散化之后递推关系 \(y_{n+1} = y_n + h \sqrt{y_n}\),初值 \(y_0 = 0\)。由于 \(\sqrt{0}=0\),得 \(y_1=0\),进而 \(y_n \equiv 0\) 对所有 n 成立。所以离散解是唯一的。
但在连续情况下,首先观察出 y(t)=0 是一个解。
但如果用分离变量法: \[ \frac{dy}{\sqrt{y}} = dt. \] 两边积分: \[ \int \frac{dy}{\sqrt{y}} = \int dt \quad \Rightarrow \quad 2\sqrt{y} = t + C. \]
利用初始条件 \(y(0)=0\) 得 \( 0 = 0 + C \),所以 \(C=0\)。于是 \[ 2\sqrt{y} = t \quad \Rightarrow \quad y(t) = \left(\frac{t}{2}\right)^2. \]
但这里要求 \( \frac{dy}{\sqrt{y}} \) 中分母不为 0, 即 t>0 的时候才成立,但 y(0)=0 和这个函数又是一致的,这说明 \( \frac{t^2}{4} \) 也是一个解。
因此该方程解是不唯一的,实际上,它还有无数个解:对于任意 \(c>0\),设 \(y(t)=0\) 当 \(0\le t \le c\),之后按 \((\frac{t-c}{2})^2\) 增长,它们都满足方程和初值。
对比 \( y'=y^2, y(0)=0 \) 使用分离变量法的过程:
\[ \int \frac{dy}{y^2} = \int dt \] \[ -\frac{1}{y} = t + C \]
这里从一开始就假设 y!=0
可以看到,分离变量法只给出了那个“立即开始增长”的解,而遗漏了所有“延迟启动”的解。造成这种现象的根本原因是 \(\sqrt{y}\) 在 \(y=0\) 处不满足Lipschitz条件,导致唯一性丧失。
因此即使离散近似唯一,连续极限也可能丢失唯一性。
\( x^2=2 \) 在 1 附近的唯一解
类比到 \( x^2=2 \) 场景中,这等价于给定了 x 的一个初始范围或近似值,比如在 [1,2] 区间可以证明方程只有一个解就是 \( \sqrt{2} \),
静态方程到动态算法
如果面对的方程是 \( 2x=2 \), 本文不会将它称为静态的,因为看到它之后会联想到明确的符号消融规则,把它变成 \( x=1 \) 从而直接求解。
所以是否静态和个人对公式的联想或注意力水平有关,它是非正式的说法。
拿到方程 \( x^2=2 \) 时,尽管它可以写成 \( x=\sqrt{2} \) 或者更准确地 \( x=\pm \sqrt{2} \), 但 \( \sqrt{2} \) 本质还是一个数加上一个计算符号,更像是对解的一种符号命名,它表示的是那个平方等于 2 的正数。
尽管我能记住 \( \sqrt{2} \) 的前几项是 \( 1.414 \) ,但它并非 x 的准确解,所以对我来说 \( x^2=2 \) 并不是一个能快速求解或化简的式子,因此将其称为静态。
如果想要用十进制或分数表示 \( \sqrt{2} \),就必须谈论无限逼近的过程,这个过程是无止境的,它是动态的。
因此我们得给 \( x^2=2 \) 一个动态的解释,从一些尝试中可以发现 1 和 2 都不是它的解,真正的解是在二者之间,因此一种做法是用二分,把 [1,2] 作为左右端点,选其中点计算后和 2 比较,如果中点平方小于2,说明解在中点右侧,把左端点移到中点;如果大于2,则右端点移到中点。这样反复缩小区间,每一步都让包含解的区间长度减半,无限进行下去,区间会收缩到一个点。
这种方法效率比较低,每次误差缩小为原来的 1/2 ,误差消除的速度(也称收敛速度)比接下来介绍的方法更慢,另外,由于每次要比较结果和 2 的关系再决策,它很难写成一个统一的代数式子去分析性质。
拿这种方法主要是为了展示静态方程可以被解释为一个动态的过程,该过程最终会逼近方程的正确解。
另一种不需要涉及比较判断的方法是 \( x_{n+1}=\frac{1}{2} (x_n + \frac{2}{x_n}) \)
它的解释是,先猜测一个解,比如 a, 用 2 除以它,那么满足 \( a \frac{2}{a} = 2 \),即 a 和 2/a 是 2 的两个因子,这两个因子不可能同时小于或大于 \( \sqrt{2} \), 因此它们的平均值会更接近 \( \sqrt{2} \) 。
这个表达式本身也是算法,因此它相比二分算法有许多数学上的好处:
- 我们只需要选择一个初始值,每次计算完继续代入方程计算就可以,不需要任何比较判断。
- 如果 \( x_{n+1} \) 最终等于 \( x_n \) ,其都等于 x, 那么有 \( x=\frac{1}{2}(x+\frac{2}{x}) \), 整理后就是 \( \frac{1}{2}x = \frac{1}{x} \) 即 \( x^2=2 \), 即这个迭代的代数式子中本身包含了 \( x^2=2 \) 的静态方程。
牛顿法则把这种直观的猜测-计算-求平均的思路总结成一套系统方法,即我们求解的是 \( f(x)=x^2-2 \) 函数的根,即 f(x)=0 的解,通过引入导数切线的概念,可以写成
由于函数 f(x) 是通用概念,它可以扩展到高维函数如 f(x,y), 导数也可以扩展到梯度,因此这种方法可以扩展到多元函数上
延拓到哪里
如果 t 是时间,那么不考虑它为负的场景,定义域就是 \(0 < t < 1/a\),因为在 \(t=1/a\) 处趋近 \(+\infty\)。
从这个点以我们无法事先知道什么时候会遇到无穷的墙,可能是 t=1 函数就无定义了,比如 \( \frac{1}{1-t} \) 也可能是无限远处,例如 \( e^t \) 。
注意 a>0 的场景,在离散情况下,尽管增长速率很快,但理论上还是可以进行无限次迭代,比如当 t=1000 时刻也能计算出一个函数值。
而用分离变量法求出的连续函数,其定义域被限制在了 [0, 1/a] 之间,如果 a 很大,比如是 100, t 只能在一个很窄的区间 [0,1/100] 上。
这个例子体现出微分方程解函数的定义域可能是非常“局部”的。它是由解的连续性以及初始条件共同约束导致的。
y'=y^2 解的唯一性证明
所以我们能证明的解的存在是在一个非常保守的范围内。
因此我们可以比较自由地去证明它可能在某个闭区间 [-d,d] 内只存在唯一解
序列
数理逻辑语言的被采纳使得数学是变成了一种精确但是却很“粗犷”的语言,这是因为它的基础原语很少,比如当我们想表达存在足够小的正实数 e 使得
方程和序列的关系,是静态约束和一个计算历史
函数序列
和实数序列类似,函数序列是非常有“人造印记”的对象,我们几乎从不会关注从某某随机的库里不断产生函数 f[n] 。
它有非常明确的模式,比如是 x^n 这样的幂函数,但更常见的是幂级数,也就是 \( \sum_0^N x^n \),其他则是某种递推或迭代公式所产生的函数序列,它往往来自约束方程,微分方程就是这样约束方程,
欧拉法
考虑一个最简单的微分方程: \[ y' = y, \quad y(0) = 1 \] 用欧拉法求解它在 [0,1] 上的解(的采样),选择步长 h = 0.5, 有 \[ y_{k+1} = y_k + h \cdot y_k = (1+h) y_k \] 起点 \(y_0 = 1\)。
- \(t_0=0,\; y_0=1\)
- \(t_1=0.5,\; y_1 = (1+0.5)\cdot 1 = 1.5\)
- \(t_2=1.0,\; y_2 = 1.5 \cdot 1.5 = 2.25\)
这里我们得到了 3 个离散点 (0,1),(0.5,1.5),(1,2.25) ,这三个点是对解 \( e^t \) 的近似的采样。
它们不会组成某种潜在收敛的序列。
但如果我们分别取不同的步长,将其变成一个步长序列 \(h_n = \frac{1}{n}\),每个 \(h_n\) 做一次欧拉法,得到一组离散点。
对每个 n,将离散点连成折线函数 \(y_n(t)\)(分段线性)。
- \(n=2\)(\(h=0.5\)):折线连接 (0,1)→(0.5,1.5)→(1,2.25)
- \(n=4\)(\(h=0.25\)):4 段折线
- \(n=8\)(\(h=0.125\)):8 段折线
- ……
这样就得到一个函数序列 \(\{y_n(t)\}\),定义在 \([0,1]\) 上。
也就是说,我们可以通过欧拉法,以计算的方式明确地构造出无数个函数(的离散采样点),最终我们可以去论证这些函数会收敛到一个最终结果,也就是 \( e^t \)
但从理论上,这样做有很大的问题,首先我们得到的只是离散采样点,即便将其连成折线,函数表达式也非常复杂,而且不同 h 之间得到的函数在代数上看并没有什么联系,因此我们很难从理论层面(符号规律)层面去讨论则无穷个函数组成的序列的性质,比如是否会收敛,收敛成什么等。
虽然在计算的时候,我们更喜欢从微分形式出发去使用欧拉法,但在理论证明上,我们却会把微分方程变成积分方程,比如 x'=x 变成 \( x(t) = C+\int_0^t x(s) ds \), 加上初始条件 C=1, 就是 \( x(t) = 1+\int_0^t x(s) ds \), 为什么会有这种对偶,即实践计算用微分,理论用积分
我们在想证明积分交换定理之前,实际就是有很多背景目的和对函数的期望的,我们不会莫名其妙去谈论一个函数序列,还去说它是否收敛
积分和极限交换
这本质是两个极限的交换,和无穷级数求和是否可以重排是类似的
给定一个函数序列 \( f_1,f_2,f_3,\dots \) ,如果它们都是可积函数(不一定是连续,但连续一定可积),那么可以对每个函数都在固定区间比如 [a,b] 求积分,得到一个新的序列 \( \int_a^b f_1 ,\int_a^b f_2,\int_a^b f_3,\dots \)
我们想知道的是,假设原始序列有极限是 f, 那么第二个积分序列是否也有极限,并且极限是否就是 \( \int_a^b f \) 如果是的话,我们可以绕过给每个元素求积分再求极限。
这里的回答是,只有 f[n] 序列是一致收敛到 f 的。
如果 f[n] 都是连续函数,那么可以通过三角不等式证明其一致收敛的对象函数 f 也是连续的
但这里给定的条件只是 f[n] 可积,这时候回到积分的更底层定义,即上下积分 如果 f[n] 都是连续函数,那么可以通过三角不等式证明其一致收敛的对象函数 f 也是连续的
在知道 f 可积之后, \( \int_a^b f \) 就是一个合法函数了,现在我们要证明的是
\( \int_a^b f dx = \lim_{n\to \infty} \int_a^b f_n dx \)
这是一个一般的函数收敛问题,即用 e/N 语言证明,这里积分是一个极限,n 也是在求极限,核心在于这两个维度的极限都是收敛的
积分和微分交换
这部分证明 ODE 解唯一性中中不需要用到,它需要更苛刻要求,即 f[n] 的导数是连续且一致收敛的
但我们可以用这个结论去证明 E(x) 即 \( \sum \frac{x^n}{n!} \) 的导数是其自身,之前我们是无法直接用其每个项的导数的极限来表示其自身的导数的
信息视角下的微分和积分
如果我们把 \( x'=x \) 写成积分 \( x(t) = 1+\int_0^t x(s) ds \) 的迭代形式,第一步猜一个最简单的函数 x(t)=1, 然后迭代:
\( x_1 = 1 + \int_0^t 1 ds = 1 + t \) \( x_2 = 1 + \int_0^t (1 + s) ds = 1 + t + \frac{1}{2}t^2 \) \( x_3 = 1 + t + \frac{1}{2}t^2 + \frac{1}{6}t^3 \)
会发现,积分算子自动把多项式的阶数向上推进,这正好是 \( e^t \) 的 Taylor 展开。
但如果用 \( x=x' \) 的方向去迭代,即便你猜测是 \( 1+t+t^2 \) 第一次迭代 \( x_1 = x_0' = 1 + 2t \)。 第二次迭代 \( x_2 = x_1' = 2 \)。 第三次迭代 \( x_3 = x_2' = 0 \)。
最后猜测的内容全部丢失了。
这是微分会丢失信息,比如对于任意常数函数 y=c,微分都把它映射到 0, 你再也不知道之前是什么函数了,
但积分不会,无论如何积分,求它的逆即微分之后还是会得到原始函数,所有信息得到了保留。
如果用变换(算子)的语言来描述,积分和微分都是一种变换,输入一个函数 f(t) 返回一个函数 g(t),如果我们输入和输出空间都是多项式组成的函数,即 \( \sum a_n x^n \) ,那么微分它不是单射,
单射要求任意值域中的对象只有一个原象,也就是两个输入不会碰撞在一起。碰撞意味着信息丢失了,输入 y=1 和 y=2 到微分中,它们都是 y=0, 因此你无法通过输出 y=0 来还原输入是 y=1 还是 y=2 (这里无限个常数函数的信息都丢失了)
这也体现出,级数比一般序列是更有结构的,它包含了之前的所有历史,整个历史给予了它很大的一种“惯性”,因此级数的收敛和发散往往是一种相变级别的,会存在收敛域,而不是零散,这是“历史包袱”所带来的作用。
但在实践中,如果只估计某个单独的解,微分提供了局部操作的指南,给定一个初始值用欧拉法可以很快迭代出近似的解,这个过程中我们核心就是要避免导数为 0 的点,因为进入这个点之后就无法再出来了,但实践中我们有许多方法去避开,因为本身就是求一个近似解。
当使用积分迭代(Picard Iteration)时,每次迭代“构造”出一个新的解析解,这个解比上一次增加更小的误差项,这种积累最终收敛使得得到唯一的函数极限。
Picard 迭代需要能交换极限与积分
Picard 迭代的定义是: \[x_{n+1}(t) = x_0 + \int_{t_0}^t f(s, x_n(s)) ds\]
当我们说迭代收敛时,本质上是取 \( n \to \infty \)。假设序列 \( x_n \) 收敛到一个极限函数 \( x(t) \),我们将极限符号 \( \lim_{n \to \infty} \) 放入方程两边: \[\lim_{n \to \infty} x_{n+1}(t) = x_0 + \lim_{n \to \infty} \int_{t_0}^t f(s, x_n(s)) ds\]
左边是 x(t)。但右边呢?如果不能把极限号丢进积分号里面,就卡住了,只有交换后得到 \( x(t) = x_0 + \int_{t_0}^t \lim_{n \to \infty} f(s, x_n(s)) ds = x_0 + \int_{t_0}^t f(s, x(t)) ds \)。
为什么能看作不动点?
这看上去很巧妙,它说的是,最终静态的对象只是动态变换中的某种平衡点,所以我可以用动态的更大的结构去分析,即便原本这个对象信息量似乎不是很多,但它把它拉成一个无限序列,有足够丰富细节可以去谈论了
无限序列给了我们:
误差估计 收敛性判定 稳定性分析 初始猜测的敏感性
这些在原始静态方程中是看不见的。
而且这种无限迭代序列到不动点的视角完全是人为构造出的,因为一个等式你可以有任意解释,你也可以把解释为一个更大的更复杂的方程在某种符号消融下的化简结果,但无限序列视角则更多是从度量空间里不等式逼近的思路,而不是这种符号化简历史思路。
这是从实数构造里延伸出来的思想,实数本身需要被无限个有理数对象取出来
而且任何优化,找最优点,那个最优点都可以看作不动点,即任何等式都可以看作某种过程或者不等式逼近的理想终点
甚至整个深度学习可以看作这种思想的延伸,它不是编译器或典型计算机科学中的化简思路,而是某种数值空间里的从粗糙到精细毕竟发现过程
不动点实际是一个绝对的数学概念,任何等式方程都可以说是某种不动点,因为等式本身是静态的,数学上最小值实际也是进行梯度下降这个操作下的不动点(再次应用后梯度为0,因此不会变化),当然物理只要能写成公式,它也都是不动点,不管是梯度方法下的不动点还是其他迭代操作的不动点,只要是寻找迭代停止的点,它都是迭代算子的不动点。但物理中它有更多的解释而已
任何等式关系 F(x)=0 都可以写成 x=x+F(x) 的迭代形式,并且原式子是它的不动点。
在数学内部,不动点框架可以包裹几乎所有确定性方程和最优性条件。它不依赖“意义”,只依赖“可重写性”。
不动点,吸引子
很多时候不动点是函数中孤立的对象
但有些不动点会出现吸引的现象,即如果初始值 x 选在不动点 x0 附近,那么不断迭代 P(x),P(P(x)),P(P(P(x)))… 会越来越接近 x0, 这样的不动点又称为吸引子
任何对实数的变换,f(x)=x 都可以写成求解 f(x)-x=0 的根,而根据牛顿法,只要这个解的周围有导数绝对值小于 1 的区间,初始值设定于此就可以找到最优解,这时候吸引子也被看作是压缩映射的结果
而如果导数都大于 1 那么就不会吸引,或者如果它是函数对象或者是离散对象(比如 lambda 演算程序),那么找不动点就非常复杂了,基本是一种启发搜索
度量空间
联通:在有理数集合中,不完备等价于不连同,这是因为有理数集是全序的、稠密的、没有端点的。
在这样的空间中,一个“空隙”(缺失的点)同时导致:
- 不完备:存在柯西列收敛到这个空隙。
- 不连通:空隙左右两侧的开集把空间分割。
但在一般的度量空间里,这种等价不成立, 两个分离的闭区间 [0,1]∪[2,3] 是完备但不连通(没有“空隙”,只是中间缺了一段路)。 开区间 (0,1) 是连通但不完备(没有缺失点,只是端点不在内)。
一个拓扑空间 X 被称为不连通,如果它可以写成两个非空、不相交、开子集的并。
等价说法: X 存在一个非平凡的既开又闭子集。
紧
完备