基础拓扑学的入门
简介
本期博客把泛函和拓扑放在一起讲,这两块内容本身就挨着,放在一起学理解得会快很多。先把几个名词摆出来:
- 泛函:函数的函数,即对函数进行特殊的映射
泛函分析听着吓人,入手点其实很小:把函数当成一个个“点”,研究由函数组成的空间,以及作用在这些点上的映射。平时算最值,自变量是一个数;到了变分问题里,自变量是一整条函数曲线,问的是哪条曲线能让某个量最小,这种以函数为自变量的映射就是泛函。
在很早很早之前,我在高中时期已经短暂地学过一段泛函分析,只不过当时并不知道精髓,感兴趣可以考古一下:https://blog.minloha.cn/posts/002546cb19867b2022042515.html
拓扑与泛函
对于函数的认知,我们从高中就已经建立起来了,映射的概念也跟着一起进来了。平时计算里用得最多的平面直角坐标系,其实就是建立在二维欧氏空间上的。那么问题来了:怎么定义一个空间?空间有什么特征,能让我们把它和其他空间区分开、描述清楚?
比如欧氏空间,对于n维的欧氏空间来讲可以有向量$a$和$b$使得:
这就是内积。内积算出来的是数,有了它才能谈长度、夹角、垂直和投影这些东西。欧氏空间也是一个向量空间(可以完成向量封闭运算的空间),向量相加、数乘都在空间内部完成,结果不会跑到外面去,所以欧氏空间就是一种带有内积的空间,我们平时用的就是这种标准内积。严格一点说,欧氏空间里的内积结果都是实数,所以也叫有限维实内积空间。
自此我们可以笼统地定义空间:一个集合,只要它上面定义了独特的算符(计算方法),就可以看作一个空间。这个说法很糙,但入门阶段够用:集合提供元素的“范围”,算符提供元素之间的“关系”,两边配套之后,集合就有了结构,也才有了被描述的可能。
我们可以把空间的范围放大到无穷,把实数作为空间的载体,就得到实空间$R^n$,实空间可以说是泛函的主要研究载体。泛函分析大多就是在这样的无穷维实空间里干活:这里的“点”是函数,“距离”衡量两个函数的差别,“收敛”描述一串函数慢慢贴向某个函数。
在开始下一步之前,我们需要补充一下集合的结构,我们知道集合的元素可以是任意内容,如果一个集合的元素也都是一些集合,我们就叫它集族。
1 | |
上面这个A里装的四个东西都是集合,所以A就是一个集族。顺便提一句,一个集合X的全部子集组成的集族叫幂集,记作$2^X$;X上的拓扑就是从幂集里挑出来的一部分子集,挑的规矩就是下面三条。
拓扑空间
拓扑里最要紧的东西是拓扑空间,它很特别:集合本身长什么样不重要,重要的是我们规定哪些子集算“开”的。定义如下:
对于一个全集X,把由它的一些子集组成的集族记为$\mathcal{F}$,当满足:
- X和$\varnothing$都是$\mathcal{F}$中的元素
- 任意多个$\mathcal{F}$中的元素并起来,结果还在$\mathcal{F}$中(无限并封闭)
- 有限个$\mathcal{F}$中的元素交起来,结果还在$\mathcal{F}$中(有限交封闭)
满足这三条,就说$\mathcal{F}$是X上的一个拓扑,$\mathcal{F}$里的任何一个元素都叫做开集。如果一个拓扑把X所有的子集都收了进来,这个拓扑可以叫离散拓扑,这时候每个子集都是开集;如果一个拓扑只有空集和全集这两个元素,则叫做平凡拓扑。同一个集合上能定义不同的拓扑,讨论空间之前得先说清楚用的是哪一个。最容易上手的例子是实数轴上的标准拓扑:开区间以及开区间拼起来的东西,就是全体开集。
开集:从数轴上理解的话,开集就是开区间和开区间拼出来的区域,拓扑的每个元素都对应集合中的一块不带边界的区域。开集有这样的性质:开集与开集的交集还是开集,但这里只管有限个,无限个开集交起来就不一定了。比如把$(-1/n, 1/n)$一个个交下去,最后只剩下单点集{0},而单点集在实数轴上不是开集。
距离空间(度量空间)
光有开集还不够直观,我们更习惯用“距离”来判断远近,于是有了距离空间(也叫度量空间)。要成为距离空间,得先定义一种属于它的运算,也就是距离:
但距离不是随便乱定的,必须守住三条约束:
- 对称性:d(x,y)=d(y,x),来回走一样远
- 非负性:d(x,y)≥0,而且只有当x=y时距离才是0
- 三角不等式:d(x,y)≤d(x,z)+d(z,y),绕个路不会更近
如果此空间放在$R^n$中就得到通用的距离计算公式:
其中的$\zeta$和$\eta$为坐标分量,这种计算距离的方式也叫欧氏度量。同一批点换一种算法就可能得到另一个空间,比如把两点的各坐标差取绝对值再求和,得到的就是出租车度量,沿着直角转弯走的那种,它同样满足上面三条。
如果距离计算如下:
- 当x=y时,d(x, y) = 0
- 当x≠y时,d(x,y) = 1
这种相同为0、不同为1的度量方式也叫做离散度量。它看着极端,但也说明距离的约束其实很宽松,只要三条守得住,怎么定都行。有了距离,在距离空间里就可以定义极限:
设X是一个距离空间,$\{x_n\}\subset X, x_0\in X$,当$n \to \infty$时,$d(x_n,x_0) \to 0$,则$\{x_n\}$以$x_0$为极限,也就是$\{x_n\}$收敛于$x_0$。
在高等数学里我们学习了邻域,接下来我们把邻域从二维空间升级一下:
设距离空间X,定义集合:
这个集合是以$x_0$为中心,以r为半径的球,且不包含球面,也叫开球。
而这个集合是以$x_0$为中心,以r为半径的球,且包含球面,也叫闭球。
这个集合在球的表面,也叫球面。三条定义只差在等号上:画到实数轴上就是开区间、闭区间和两个端点,以前高数里说的邻域,指的就是开球。
我们发现这里的开球就是度量空间拓扑中的开集,所有开球拼起来就可以生成度量空间的拓扑。
那么如果在一个度量空间的子集G中存在一个点,以它为中心能找到一个完全包含在G内的开球,就说这个点是G的一个内点,写作数学式如下:
设X是一个距离空间,$G\subset X$,对于$x_0\in G$,存在开球$B(x_0, r) \subset G$,就说$x_0$是G的内点。比如实数轴上取G=(0,1),0.5就是内点;1不是,因为不管半径缩得多小,以1为中心的球都会探出G的范围。
连续映射的定义我们学过很多,过于严谨的这里不说了(太长了),简单地理解就是:空间里充分接近的两个点,映射之后的像也充分接近,这样的映射就叫连续映射。拓扑里还有一个等价的说法:任何开集的原像都是开集,这个说法不依赖距离,所以在没有距离可用的普通拓扑空间里,就拿它当连续的定义。连续映射会保持连通性,即连通空间在连续映射下的像仍然连通。
接下来介绍几个非常重要的性质:
在拓扑空间里,拓扑$\mathcal{F}$中的每个元素都是开集。把开集在全集X里取补集,得到的就是闭集,所以开集和闭集是一对互补的说法,开集的补集必是闭集,闭集的补集也必是开集,最简单的参照还是开球和闭球。
闭集包含如下性质:
- 空集和全集都是闭集(它们同时也是开集,一个集合既开又闭在这里不算稀奇)
- 任意多个闭集的交还是闭集
- 有限个闭集的并还是闭集
如果一个点能被拓扑$\mathcal{F}$里的某个开集包住,我们叫这个点为拓扑空间的内点,这个开集也叫内点的一个邻域。邻域不唯一,包着同一个点的开集一般有好多个,把它们收在一起就组成邻域系。
如果一个点的任意开球与一个集合的交集都不为空,那么这个点叫做这个集合的接触点,所有接触点组成了该集合的闭包。接触点不一定长在集合里面,它可以就贴在集合边上,比如A=(0,1),0和1都是A的接触点。
现在假设一个点x,如果集合A去掉点x之后,与x的任意一个邻域的交集都不为空,就说这个点x是集合A的聚点,也可以说:
设A是一个拓扑空间X的子集,$x \in X$,如果x的每个邻域与A-{x}的交集都不为空,就说x是A的聚点。而A的所有聚点组成的集合叫做A的导集,也写作$A’$,导集与A本身的并集叫做闭包,写作$\bar A$。把几个定义摆到一起看,A并上它的导集,正好凑出全部接触点,所以闭包从哪个角度定义都对得上。
这里涉及了很多定义,用球解释就是:
- 内点在球内,包着它的球叫内点的邻域
- 接触点在球面或者球内,用来判断的球取开球
- 聚点在球面或者球内,把这堆聚点收拢起来就是一个闭球,这个集合叫导集。导集再并上原来的开球,得到的就是闭包,相当于给开球补上了球面
如果一个集合的闭包等于全集,就说这个集合在全集里是稠密的,这个集合也叫全集的稠密子集。典型例子是有理数集:随便挑多小的一段区间,里面都能翻出有理数,把有理数全体取闭包,铺满的就是整条实数轴。
稠密说的是集合铺得开,下面两个词说的是空间收得住。如果度量空间内任意一个数列都有收敛的子列,就说这个度量空间是列紧的;如果空间内任意一个柯西数列都收敛,这个度量空间就是完备的。柯西数列的特点是项与项之间越挨越近,但它未必有东西可以收敛。比如把有理数全体$\mathbb{Q}$单独拿出来,还是用$|x-y|$当距离,一串逼近$\sqrt{2}$的有理数在里面是柯西的,可$\sqrt{2}$根本不在$\mathbb{Q}$里,所以$\mathbb{Q}$不完备;同样的数列挪到实数轴上就能收敛,实数集是完备的。
我们完善一下度量空间的定理。在数学分析中我们学过区间套,度量空间里也有对应的闭球套:一串闭球一个套一个,使得:
如此包含下去,只要球的半径越来越小、趋于零,最终这个闭球套的公共部分就是一个点,而且这个点是唯一确定的。半径的条件不能省,比如取$\bar B(0, 1+1/n)$这样一串闭球,它们也在一个个嵌套,但交出来是[-1,1],并不是单点。
不动点定理
我们对一个点进行变换,如果变换之后它还在原地不动,满足下面的方程,就说这个点是不动点
比如T(x)=x/2把实数轴上的点全都往原点压,只有0满足x/2=x,这个0就是不动点。不动点蕴含了很多信息,其中最重要的就是巴拿赫不动点定理(也叫压缩映射原理):
如果X是一个完备的距离空间,T是一个压缩映射:
当$0<\theta<1$时存在唯一的不动点$\bar x$:
这个证明很简单,就是在完备空间的基础上进行了证明,当$0<\theta<1$时,列写三角不等式并替换上述公式,就可以使其变成柯西数列。具体走一遍:随便取一点$x_0$,反复用T迭代,得到$x_1=Tx_0, x_2=Tx_1, …$,相邻两项的距离一次比一次缩水,$d(x_{n+1}, x_n)\le\theta^n d(x_1,x_0)$;隔得远的两项用三角不等式拆成一段一段加起来,是个几何级数,可以估出$d(x_n,x_m)\le\frac{\theta^n}{1-\theta}d(x_1,x_0)$,右边当n→∞时趋于0,所以这串点是柯西数列。完备意味着收敛并存在极限:
左边是$\bar x$,右边是$T\bar x$,两边一合,不动点就存在了。唯一性顺手也能证:假设有两个不动点$\bar x$和$\bar y$,代入压缩条件得到$d(\bar x,\bar y)=d(T\bar x,T\bar y)\le\theta d(\bar x,\bar y)$,因为$\theta<1$,只能有$d(\bar x,\bar y)=0$,两个点重合。根据压缩映射的性质即可证明这个不动点是存在的,不过具体数值大多算不出精确表达式,实际用的时候就是拿上面的迭代去逼近;如果T恰好是线性的,也可以把它转化为线性方程组求出特解或通解。
子空间拓扑
我们把拓扑空间X取出一个子集A,在它上面构成一个新的拓扑,这个拓扑也叫做子空间拓扑。具体做法是拿X里每个开集和A求交集,这些交集全体就是A上的开集。比如实数轴的标准拓扑限制到[0,1]上,[0,0.5)也算开集,因为它是(-0.5,0.5)和[0,1]交出来的。
到目前为止,基础的知识已经完全讲完。
同胚映射
同胚不得不提及映射,如果一个映射$f: X\to Y$连续并且映射可逆,$f^{-1}: Y \to X$存在并且也连续,则f是拓扑空间的一个同胚映射。同胚可以想成橡皮泥式的变换:拉长、扭曲都随便,但不许撕开,也不许把两个点粘成一个点。同胚是一个等价关系:自己和自己同胚,f是同胚那f的逆也是,两个同胚接起来还是同胚。同胚映射会把开集映成开集,这一点由连续和可逆保证。
从拓扑的角度看,同胚的两个空间就是同一个空间。比如开区间(-1,1)和整条实数轴同胚,用$f(x)=\frac{x}{1-|x|}$就能把(-1,1)撑满$\mathbb{R}$。而圆周和线段就不同胚:圆周上随便挖掉一个点,剩下的还是一条连通的长条;线段挖掉中间一个点,就断成两截了。同胚保持连通性,所以这两个对不上。
总结
这期是拓扑的入门内容,从空间的概念讲到开集、闭集、聚点、闭包,又补了距离空间、不动点定理和同胚映射。定义看着不少,抓住开集这条线就不容易乱。不动点定理那段建议自己拿纸把三角不等式拆一遍,比盯着公式看有用。后面做泛函里的函数空间时,用到的还是这一套东西。