除了伟大的魏尔斯特拉斯函数,数学的奇妙之处在于,它能展现出许多看似“不可能”的数学对象。在“处处连续,处处不可导”这个有趣的属性上,魏尔斯特拉斯函数并非孤例。事实上,它只是这个家族中最著名的一位成员。今天,咱们就来聊聊这个家族里其他几位有意思的成员,看看它们是如何“藏”住自己的导数的,又有哪些奇特之处。
要理解这些函数,咱们得先回顾一下“处处连续”和“处处不可导”这两个概念。
处处连续:想象一下在纸上画一条线,如果你的笔尖始终没有离开过纸面,那么这条线就是连续的。对于函数来说,这意味着在一个区间内的任意一点,你都能找到函数的极限值等于该点的函数值。简单说,没有“跳跃”或者“断开”。
处处不可导:这才是让函数变得“棘手”的地方。导数代表的是函数在某一点的“瞬时变化率”,或者说“斜率”。如果一个函数在每一点的切线都无法被唯一确定(比如切线是竖直的,或者在一个点上突然拐弯得太厉害),那么它在该点就是不可导的。处处不可导意味着,无论你把这根“连续的线”放大到什么程度,它总会在每个点呈现出一种“尖锐”或者“锯齿状”的特性,让你找不到一个平滑的斜率。
魏尔斯特拉斯函数大概是这样的:$f(x) = sum_{n=0}^{infty} a^n cos(b^n pi x)$,其中 $0 < a < 1$ 且 $ab > 1 + frac{3}{2}pi$。这个定义本身就有点抽象,它是一个无穷级数。你可以想象成是由很多不同频率和振幅的正弦(或余弦)函数叠加而成。这些函数各自都是平滑可导的,但当它们以一种特定的方式叠加时,就像一群精心编排的舞者,每个人的动作都流畅,但整体组合起来,却制造出一种复杂到无法找到一个整体的“平滑”运动方向的复杂形态。
那么,除了魏尔斯特拉斯函数,还有哪些例子呢?
1. 科克曲线函数 (Koch Curve Function)
这可能是另一个非常有名的例子,虽然它更常以几何图形(科克雪花)的形式出现在大家面前。科克曲线是一种分形曲线,它的构造过程非常有意思。
想象一个等边三角形。
1. 将每条边的中点标记出来。
2. 将每条边的中点与它相邻的两点连接起来,形成一个新的等边三角形,这个新的三角形的底边会“向外”凸出。
3. 删掉原来那条边的中间三分之一。
这样,原来的一条直线段就变成了四条更小的直线段,总长度是原来的四倍,但整体尺寸只缩小了。重复这个过程无数次,就得到了一条无限长的、极其复杂的曲线。
现在,我们怎么把它变成一个函数呢?我们可以考虑这样一个过程:
从一条线段开始,比如 $[0, 1]$。
在第一步,我们将它分成三段:$[0, 1/3], [1/3, 2/3], [2/3, 1]$。
在中间一段 $[1/3, 2/3]$ 上,我们“折叠”出一个“尖角”。具体来说,我们可以用一条折线来代替中间那段线段,这条折线由三段等长的线段组成,它们连接 $(1/3, 0)$, $(1/2, 1/6)$, $(2/3, 0)$。注意,这里我们做了简化,科克曲线的实际构造会更精细,比如会让中间的“尖角”等边三角形的顶点位于 $(1/2, sqrt{3}/6)$。为了变成函数,我们通常考虑的是二维平面上的曲线,但我们也可以尝试在数轴上构造类似“锯齿”的函数。
更直接的函数构造思路是借鉴其分形性质。许多分形几何中的“生成器”都可以通过迭代函数系统 (Iterated Function System, IFS) 来定义。对于一维函数来说,我们可以通过一种“放大并复制”的方式来构建。
考虑一个简单的函数 $g(x)$,它代表了一个“基本单元”的形状。然后我们定义一个迭代过程:
$f_{k+1}(x) = frac{1}{2} f_k(2x)$ (放大并缩小)
或者更接近科克曲线的思路,我们可以定义一个递归函数:
假设我们要在区间 $[0, 1]$ 上定义一个函数。
在 $[0, 1/3]$ 上,函数是 $f(3x)$ 的某个线性变换。
在 $[2/3, 1]$ 上,函数也是 $f(3(x2/3))$ 的某个线性变换。
在 $[1/3, 2/3]$ 上,函数是一个新的“尖角”形状。
例如,一个与科克曲线相关的函数可以这样定义:
令 $h(x)$ 是一个在 $[0, 1]$ 区间内定义,并在 $x=1/2$ 处取最大值(比如 $1/2$)的锯齿状函数。
然后我们可以定义一个函数 $f(x)$,通过一个迭代过程:
$f(x) = frac{1}{2} f(2x) ext{ for } 0 le x le 1/2$
$f(x) = frac{1}{2} frac{1}{2} f(2(1x)) ext{ for } 1/2 le x le 1$
并周期性地扩展。
更常见的构造方式是将科克曲线的几何构造转化为函数。想象一下我们从直线 $y=x$ 在 $[0,1]$ 上开始。
第一步:将 $[0,1]$ 分成三段:$[0, 1/3], [1/3, 2/3], [2/3, 1]$。在中间一段 $[1/3, 2/3]$ 的中心 $(1/2, 1/2)$ 处,我们向上“拉”出一个尖角。比如,将 $(1/3, 1/3)$ 和 $(2/3, 2/3)$ 连接到 $(1/2, 1/2 + h)$。这个 $h$ 会随着迭代次数增加而变化。
一个具体的例子是一个称为 “老鼠走迷宫” (Sierpinski curve) 的函数或者更泛化的 空间填充曲线 的一些变种。然而,直接构造一个处处连续处处不可导的“一维”函数更贴近魏尔斯特拉斯的思路。
考虑一个更抽象的构造:
我们定义一个函数 $f(x)$,它通过在每个尺度上“添加”一些“毛刺”来构建。
假设我们有一个基础函数 $f_0(x) = x$(在 $[0, 1]$ 上)。
第一步:我们用三个更小的“副本”来替换 $f_0(x)$。
在 $[0, 1/3]$ 上,它是 $frac{1}{3} f_0(3x)$。
在 $[1/3, 2/3]$ 上,我们用一个“凸起”代替,比如 $frac{1}{3} + frac{1}{3} sin(frac{3pi}{2} x)$。
在 $[2/3, 1]$ 上,它是 $frac{2}{3} + frac{1}{3} f_0(3(xfrac{2}{3}))$。
这个过程可以用一个递归定义来表示。更简洁的方式是利用度量空间的同胚映射的思想。
令 $phi_1(x) = x/3$ 和 $phi_2(x) = x/3 + 2/3$ 是两个收缩映射。
考虑一个函数 $f(x)$,在区间 $[0,1]$ 上,我们定义:
$f(x) = frac{1}{2} f(2x)$ for $0 le x le 1/2$
$f(x) = frac{1}{2} frac{1}{2} f(2(1x))$ for $1/2 le x le 1$
这个函数在 $x=1/2$ 处是连续的,但导数不存在。并且通过周期延拓,我们可以得到一个处处连续处处不可导的函数。
更普遍的类比魏尔斯特拉斯函数,我们可以考虑:
$f(x) = sum_{n=1}^{infty} c_n cdot g(b^n x)$
其中 $g$ 是一个有界且连续但不可导的函数(比如上面那个递归定义的“锯齿”函数),$b$ 是一个大于 1 的常数,$c_n$ 是一个序列,使得级数收敛并且满足一定的条件(比如 $sum |c_n|$ 收敛,但 $b cdot max|g'(x)|$ 要大于某个常数,这样才能保证“不可导性”)。
2. 曼德尔布罗集相关的函数
虽然曼德尔布罗集本身是复数域中的一个几何图形,但与它相关的Julia集的边界的某些参数化或统计性质,可以引出一些有趣的函数。当然,这稍微有点“牵强”,因为曼德尔布罗集本身是一个集合,不是一个函数。但我们可以考虑描述Julia集边界的复杂性的函数。
更直接的例子是与分形鹿角(Lsystem)或 Cantor集相关的构造。
Cantor函数 (Fat Cantor Function)
Cantor集是一个经典的例子,它是一个不可数集,但其测度为零,并且是一个完备集。Cantor函数(也称为“三分之二函数”或“爬行僧函数”)的构造与Cantor集密切相关。
标准的Cantor函数定义如下:
在区间 $[0, 1]$ 上:
1. 移除中间开区间 $(1/3, 2/3)$。剩下 $[0, 1/3]$ 和 $[2/3, 1]$。
2. 在剩下的两个区间中,移除它们各自的中间开区间 $(1/9, 2/9)$ 和 $(7/9, 8/9)$。
3. 重复这个过程无限次。
Cantor函数 $C(x)$ 的定义是:
如果 $x$ 在 $[0, 1]$ 中,将其写成三进制 $x = sum_{k=1}^{infty} a_k 3^{k}$,其中 $a_k in {0, 1, 2}$。
如果 $x$ 不在Cantor集中(即至少有一个 $a_k = 1$),则将所有 $a_k = 1$ 的项替换为 $a_k = 1$,并将后面的所有项(如果存在的话)替换为 $0$。然后将结果看作一个二进制数:$C(x) = sum_{k=1}^{infty} b_k 2^{k}$,其中 $b_k = 0$ 如果 $a_k=0$,$b_k=1$ 如果 $a_k=2$。
如果 $x$ 在Cantor集中,它的三进制表示可能只有一个“1”,或者后面都是“0”。例如 $1/3$ 的三进制是 $0.1$(可以写成 $0.1000...$),或者 $0.0222...$。Cantor函数在该点的取值被定义为极限值。
更直观的定义是:对于 $x in [0, 1]$,如果它的三进制表示中不含数字“1”,例如 $x = sum_{k=1}^{infty} d_k 3^{k}$,其中 $d_k in {0, 2}$。那么,我们将其对应的二进制表示定义为 $f(x) = sum_{k=1}^{infty} frac{d_k}{2} 2^{k}$,即 $f(x) = sum_{k=1}^{infty} e_k 2^{k}$,其中 $e_k = d_k/2 in {0, 1}$。
如果 $x$ 在Cantor集之外,其三进制表示的中间一个(或多个)数字是“1”。例如 $x=1/2$。它的三进制是 $0.111...$ 或者 $0.1$ (有限表示)。Cantor函数将其映射到 $1/2$。
Cantor函数是 处处连续 的,并且在Cantor集中的点之外是 常数 的(在移除的开区间上)。然而,Cantor集本身是不可数的,在Cantor集中的许多点上,函数是 常数 的,所以导数为零。但是,在Cantor集的一些点上,比如像 $1/3$ 这样可以表示成 $0.1000...$ 和 $0.0222...$ 的点,函数的取值是确定的,但其“斜率”在所有尺度上都无法确定。
有人会争论Cantor函数是否“处处不可导”,因为在移除的开区间上它的导数为零。但是,它在Cantor集上的性质使其符合“处处不可导”的精神:在Cantor集的任何邻域内,无论你如何放大,总能找到点使得函数变化率趋于无穷大(或者说切线不存在)。它的图像是一条“平坦”但又充满“台阶”的曲线,而且这些台阶的缝隙被无限细分。
3. 基于随机过程的构造
虽然不属于初等函数,但一些随机过程的样本路径也可以是处处连续处处不可导的。最著名的例子是 维纳过程 (Wiener process),也就是 布朗运动。
维纳过程的样本路径:维纳过程 $W(t)$ 是一个随机过程,它的样本路径(每一次随机“游动”的轨迹)几乎处处是处处连续的,但在任何一个点都是处处不可导的。想象一个粒子在二维平面上的随机行走,每一步的位移是随机的。当步长趋于零,步数趋于无穷时,这个粒子的轨迹在时间上的投影,就是维纳过程的样本路径。
性质解释:
连续性:由于每次移动的位移是有限的,即使是随机的,在极短的时间间隔内,粒子的位置变化也是微小的,所以整体轨迹是连续的。
不可导性:粒子在每一个瞬间都有可能改变方向,而且改变的方向是随机的。无论你放大到多小的“时间间隔”,总有可能在这个间隔内发生一次剧烈的方向改变,使得“切线”无法确定。你可以想象一个股票价格的随机波动,它一天内可能涨涨跌跌很多次,但整体趋势是连续的。然而,在任何一个具体的时间点上,它的涨跌率都非常难以预测,因为它是由无数个微小的随机事件累积而成。
虽然维纳过程是随机的,但它的样本路径的“确定性”性质(处处连续处处不可导)是由其数学定义保证的。我们可以通过一个非随机的方式来“采样”一个维纳过程的路径,然后研究这个特定路径的性质。
4. 其他基于级数求和的构造
魏尔斯特拉斯函数是一个级数求和的经典例子,还有很多类似的构造方式,通过调整级数的系数和函数项,可以得到不同特性的函数。
例如,我们可以考虑一个更通用的形式:
$f(x) = sum_{n=0}^{infty} c^n g(a^n x)$
其中 $g(x)$ 是一个在 $[0, 1]$ 上定义,以 $1$ 为周期的函数,且 $g(0)=0, g(1)=0$。
如果我们选择 $g(x)$ 为一个“三角形波”或者更复杂的“锯齿”函数,例如,一个在 $[0, 1]$ 上先上升到 $1$ 再下降回 $0$ 的函数,并且让级数的收敛速度和振幅变化率满足一定关系,就可以得到处处不可导的函数。
比如,定义 $g(x)$ 为一个在 $[0, 1]$ 上线性上升到 $1/2$ (在 $x=1/2$),然后线性下降回 $0$ (在 $x=1$) 的函数。
$g(x) = egin{cases} x & ext{if } 0 le x le 1/2 \ 1x & ext{if } 1/2 le x le 1 end{cases}$
这个函数在 $x=1/2$ 处是连续的,但导数不存在。
然后我们定义 $f(x) = sum_{n=0}^{infty} frac{1}{2^n} g(2^n x)$。
这里的 $a=2, c=1/2$。
我们对 $g(x)$ 进行周期性延拓,使其在 $mathbb{R}$ 上定义。
$g(x)$ 的最大值是 $1/2$。
$f(x)$ 的定义可以写成:
$f(x) = g(x) + frac{1}{2} g(2x) + frac{1}{4} g(4x) + dots$
我们来看看它是否处处连续处处不可导:
连续性:由于 $sum_{n=0}^{infty} frac{1}{2^n}$ 是一个收敛的几何级数 (和为 2),而 $g(x)$ 的值域是有界的(在 $[0, 1]$ 上是 $[0, 1/2]$,周期延拓后也是有界的),所以这个级数在任何 $x$ 点都绝对收敛,并且是均匀收敛的。根据 Weierstrass Mtest 的思想,这个函数是处处连续的。
不可导性:考虑一个点 $x_0$。函数 $f(x)$ 在 $x_0$ 的导数涉及到 $g(2^n x)$ 在 $x_0$ 处的行为。当 $n$ 很大时,$2^n x_0$ 会在一个非常小的区间内波动。如果 $g$ 是一个尖锐的“锯齿”函数,那么 $g(2^n x)$ 在一个固定点 $x_0$ 附近的“摆动”幅度会很大。更具体的分析会表明,当级数的收敛因子 $c$ 和基础函数的“尖锐度”满足一定条件时,函数的导数不会收敛到一个确定的值。
关键在于级数项的“冲突”:
在某个点 $x$, $g(2^n x)$ 的值可能在 $g$ 的斜率发生剧烈变化的地方(例如 $g$ 的“顶点”或“谷底”附近)。即使 $g$ 本身是连续的,但当它以指数级增长的频率被“压缩”到你关注的点附近时,就会产生不可导性。就像魏尔斯特拉斯函数那样,低频的余弦波是平滑的,但高频的余弦波会叠加出非常尖锐的“尖峰”,即使整体是连续的,也无法找到一个平滑的切线。
总结一下这些例子:
1. 魏尔斯特拉斯函数:最经典,通过无穷级数叠加高频余弦波。
2. 科克曲线相关函数:通过几何构造的迭代过程转化成函数,强调分形“自我相似”的特性。
3. Cantor函数:与不可数但测度为零的Cantor集相关,函数在Cantor集的许多点上是常数,但在点与点之间变化剧烈。
4. 维纳过程样本路径:随机过程的产物,体现了随机性如何在微观层面制造出“处处不可导”的特性。
5. 广义级数求和函数:通过叠加各种周期性函数(如锯齿波、三角波)并调整级数参数,可以构造出许多类似的处处连续处处不可导的函数。
这些例子展示了数学的深刻之处:即使是最“乖巧”的连续函数,在数学家手中也能被“改造”得面目全非,变得如此复杂和奇特。它们挑战了我们对“函数”的直观理解,也为我们探索函数的本质打开了新的视角。这些函数虽然“粗糙”,但在数学的许多分支中,比如分形几何、测度论甚至数学物理中,都扮演着重要的角色。它们提醒我们,数学的世界远比我们想象的要丰富和出人意料。