这篇文章主要讲述的是在学术上如何严谨地叙述,而并非文学上的创作。
前言
我们平常能见到的叙述(不包含平日中的口语表达)几乎只有两种:文学上的创作形式以及逻辑性质的证明。这两者之间的界限实际上非常模糊,一个比较好的判别方法是查看叙述的目的。文学创作多注重于描绘事物(的存在),而逻辑证明多注重于严谨地叙述事物形成的原因。
值得注意的是,它们之间是有交集的。典型例子是科普文章。科普文章既要注重描绘事物的内涵,也要注重解释事物时的逻辑严谨性。
本文注重于 “逻辑性质的证明” 部分,但是也的确会有一小部分难免探入文学创作的范畴。我们将从思考与证明出发,讲述思路与证明的方向性,再将其拓展到教学与学习部分,最终得到知识框架与人类思维惯性之间的关系。
思考:自结论至条件的街巷
我们从一个实际的问题开始:
\text{求解方程:} x^{x^{x^{\cdot^{\cdot^\cdot}}}}=2
求解它是一个高中问题。我们考虑 x^2,把指数上的 2 替换掉,我们有
x^2=x^{x^{x^{x^{\cdot^{\cdot^\cdot}}}}}=2
因此 x=\sqrt{2}.
看起来没有问题。
那么下面的问题呢:
\text{求解方程:} x^{x^{x^{\cdot^{\cdot^\cdot}}}}=4
我们故技重施:
x^4 = x^{x^{x^{x^{\cdot^{\cdot^\cdot}}}}}=4
此时我们有 x=\sqrt{2}.
?
这不对吧。两个算出来都是 \sqrt{2},方程左边完全一样,难道 2=4 不成?
这就是这篇文章的例子。我们之后的讨论都由这个例子展开。
解决问题总少不了假设。既然两个算出来都是 \sqrt{2},那无非就三种情况:第一个解错了;第二个解错了;或者这两个都解错了。
既然结果都解出来了,那就验证一下:
构造数列 \left\{\sqrt{2},\sqrt{2}^{\sqrt{2}},\sqrt{2}^{\sqrt{2}^{\sqrt{2}}},\cdots\right\},掏出计算器算先算 15 项:
\{1.41421, 1.63253, 1.76084, 1.84091, 1.89271,\\ 1.927, 1.95003, 1.96566, 1.97634, 1.98367,\\ 1.98871, 1.99219, 1.99459, 1.99626, 1.99741\}
极限好像是 2。考验我们基本功的时候到了,证一下:
不难证明 f(x)=\left(\sqrt{2}\right)^x 严格单调增加。
若当 n 为某个正整数时 a_n>a_{n-1} 成立,则有 a_{n+1}=f(a_n)>f(a_{n-1})=a_n 当 n=1 时显然成立,由数学归纳法知 \forall n:a_n>a_{n-1} 成立,即数列 \{a_n\} 单调增加。
若当 n 为某个正整数时 a_n<2 成立,则有 a_{n+1}=f(a_n)<f(2)=2
当 n=1 时显然成立,由数学归纳法知 \forall n:a_n<2 成立,即数列 \{a_n\} 有界。
由极限存在准则之单调有界数列必有极限知,极限 \lim_{n\to\infty}a_n 存在。
现在算一下极限吧:
设 \lim_{n\to\infty}a_n=L,在递推式 a_n=f(a_{n-1}) 两端取极限得:L=f(L)
解得 L=2 或 L=4(初见端倪),但因为 a_n\lt 2,故 L=2,数列极限为 2.
这说明 \sqrt{2} 是 x^{x^{x^{\cdot^{\cdot^\cdot}}}}=2 的解而不是 x^{x^{x^{\cdot^{\cdot^\cdot}}}}=4 的解。
那 x^{x^{x^{\cdot^{\cdot^\cdot}}}}=4 的解是什么?
我们算出来的解,并不是它的解。难道它是无解的?如果是这样的话,x^{x^{x^{\cdot^{\cdot^\cdot}}}} 这玩意还真有可能算不出来 4。换句话说,它的值域可能不包含 4。这是值得考虑的问题:对于所有能带进去的 x,它们算出来的值是什么?
考虑收敛项 y=x^{x^{x^{\cdot^{\cdot^\cdot}}}},应当满足 y=x^y,因此问题转化为研究这个隐函数的性质。
于是我们知道 x=y^{1/y},要求这个函数的收敛域,只需要对 f(y)=y^{1/y} 分析即可。
取对数,将指数放下来,然后求导,得
\left(\frac{\ln y}{y}\right)^{\prime}=\frac{1-\ln y}{y^2}.
所以 f(y) 在 0<y<e 上递增,在 y>e 上递减,并且最大值为 f(e)=e^{1/e}.
另外一方面,对于迭代稳定的函数,不动点应当满足以下条件:
\left|\frac{\mathrm{d}}{\mathrm{d}y}x^y\right|_y=|\ln x|\cdot y\leq1.
故稳定条件为 | \ln y | \leq 1,因此 \frac{1}{e} \leq y\leq e。
对应的,可以求得 x 的范围:e^{-e}\leq x \leq e^{1/e}.
至此,我们可以回答这个问题了。
x^{x^{x^{\cdot^{\cdot^\cdot}}}}=2 的解是 \sqrt{2},x^{x^{x^{\cdot^{\cdot^\cdot}}}}=4 是无解的,因为左边函数的值域是 [\frac{1}{e},e].
证明:自条件至结论的阡陌
有了以上的思考过程,我们可以写出这个问题的证明。
结论:x^{x^{x^{\cdot^{\cdot^\cdot}}}}=2 的解是 \sqrt{2},x^{x^{x^{\cdot^{\cdot^\cdot}}}}=4 是无解的。证明如下:
考虑函数 y=x^{x^{x^{\cdot^{\cdot^\cdot}}}},在收敛域上有 y=x^y,两边同时取对数并求导,得
\left(\frac{\ln y}{y}\right)^{\prime}=\frac{1-\ln y}{y^2}.
因此 y 有最大值 e. 故 y=4 无解。
接下来证明 x^{x^{x^{\cdot^{\cdot^\cdot}}}}=2 的解是 \sqrt{2}. 只需要证明 \sqrt{2}^{\sqrt{2}^{\sqrt{2}^{\cdot^{\cdot^\cdot}}}}=2 即可。
实际上,令 a_1=\sqrt{2},a_{n+1}=\left(\sqrt{2}\right)^{a_n},需要证明的结论即为 a_n 收敛至 2.
不难证明 f(x)=\left(\sqrt{2}\right)^x 严格单调增加。
若当 n 为某个正整数时 a_n>a_{n-1} 成立,则有 a_{n+1}=f(a_n)>f(a_{n-1})=a_n 当 n=1 时显然成立,由数学归纳法知 \forall n:a_n>a_{n-1}成立,即数列\{a_n\} 单调增加。
若当 n 为某个正整数时 a_n<2 成立,则有 a_{n+1}=f(a_n)<f(2)=2
当 n=1 时显然成立,由数学归纳法知 \forall n:a_n<2 成立,即数列 \{a_n\} 有界。
由极限存在准则之单调有界数列必有极限知,极限 \lim_{n\to\infty}a_n 存在。
于是令极限为 L,对 a_{n+1}=\left(\sqrt{2}\right)^{a_n} 两边同时取极限得 L=\left(\sqrt{2}\right)^{L},解得 L=2 或 L=4,但由于 a_n 有上界 2,故 L=2.
证毕!
思考与证明:逻辑上的完美闭环
现在,仔细比对一下思考过程与证明形式,可以发现,它们的思路是反的。思考过程从结论出发,探讨从哪里出发会得到这个结论;而证明从条件出发,通过推理得出最终结论。
这是由证明本身和人类的思想惯性决定的。同样的条件,可以对应许多不同形式的结论,而解题的过程正是对给定结论寻找证明路径的过程。因此,从终点(结论)向起点(条件)摸索是更容易也更加自然的方法。
这恰巧构成了一个完美闭环。思考如倒叙,从结论的尽头思索到条件的起点;证明似正述,从已给定的条件顺着逻辑找到结论。它们分别代表了两种思维方式:研究与检验。思考是研究的过程,在证明成立之前,我们不知道它究竟为何成立,而证明是检验的过程,它更像是一种 “可复制的答案”,只用于展示需要的部分,而摒弃了绝大多数过程。
这也就是当代教科书臭名昭著的原因。它们只是将证明摆在眼前,告诉你 “这就是对的”,同时,你也可以很简单的验证 “它确实是对的”。但是,证明所省略的许多思考过程并不是简简单单就能够得到的,这正是学习所缺失的部分。
因此,在学习时,要花费成倍的时间去理解 “为什么这样做” 而非 “这样做为什么成立”。
注:特别地,这对一般经验性学科并不成立,比如语言类学科,它更多的是一种经验性的结论,而非严密推理。“背下来就好” 的结论仍对经验性学科成立。
接下来,本文将从学习与教学两个方面进行探讨,给出它们之间的关系。
修习:探寻知识本质的远旅
正如上文所说,学习时,要花费成倍的时间去理解 “为什么这样做” 而非 “这样做为什么成立”。我们依旧拿上面的题目作为例子,实际上还有许多可以挖掘的知识。
比如,你是否会思考,为什么对于迭代稳定的函数,不动点应当满足 \left|\frac{\mathrm{d}f}{\mathrm{d}x}\right|\leq 1?
用蛛网图演示过程将会变得非常清晰:
自己拖动滑块,看看不同 x 的情况下如何迭代,尝试回答一下下面的几个问题:
- 对于数列 \left\{x,x^x,x^{x^x},\cdots\right\},它们的值分别在哪里?
- 直线 y=t 的作用是?
- 什么时候迭代收敛?
如果你通过上面的演示,可以回答这三个问题,那么可以跳过这一部分。
现在来说说这三个问题。
迭代从 x 本身开始,即 t=x 这一竖线。当它碰到函数曲线时,它的点坐标正是 \left(x, x^x\right)。随后让它拐弯,横向走向 y=t,此时坐标为 \left(x^x, x^x\right),然后继续拐弯,竖直走向函数曲线,此时坐标为 \left(x^x, x^{x^x}\right)。
发现了吗,这正是我们的迭代数列 \left\{x,x^x,x^{x^x},\cdots\right\}。让它竖直碰到函数曲线的作用是做一次幂运算,而让它水平碰到 y=t 是为了将上一步计算的值转化为自变量重新计算。
终于,我们可以回答这个问题了:迭代收敛的原因是什么?
拖动这个滑块,我们可以看到,大部分时间它们是收敛的,在大约 0.066 和 1.4453 处是收敛的边界点。而收敛分为两种情况,一种是 x\gt 1 时的阶梯式收敛,一种是 x\lt 1 时的螺旋式收敛。
所以,我们分别来讨论这两者的收敛极限在哪里。
x\gt 0 时:
通过图像可以看到,在阶梯式收敛时收敛点正是函数与 y=t 的交点。于是,收敛极限正是函数 y=x^t 与 y=t 只有一个交点时的情况。
于是问题如下:何时 y=x^t 与 y=t 只有一个交点?
可以观察图像,只有一个交点,证明 y=t 正是函数的切线,切点不明,不过我们可以设出来:假设切点为 (t_0,t_0),切线斜率为 1,于是有如下方程成立:
\begin{cases} \frac{\mathrm{d}y}{dt}\big|_{t_0}=x^{t_0} \ln x=1 \\ t_0=x^{t_0} \end{cases}
解一下这个方程,得 x=e^{1/e},\;t_0=e.(强烈建议读者自行尝试求解,因为它需要用到一些小技巧)
于是我们知道其中一个收敛极限是 x=e^{1/e}.
现在我们讨论 x\lt 0 时的特性:
通过图像可以发现,收敛时螺旋向内,一直到达函数与 y=t 的交点;不收敛的时候先向内一些,但是会卡在一个循环中(看图像是一个矩形),无法向内。现在请仔细想想,什么情况下迭代会在一个矩形中绕圈?
我们假设这个矩形的四角坐标为 \left(x_A,y_A\right),\;\left(x_B,y_B\right)\;\left(x_C,y_C\right)\;\left(x_D,y_D\right),其中 A 是左上角,B 是左下角,C 是右下角,D 是右上角。
观察图像发现,A 和 C 是迭代函数上的点,B 和 D 是 y=t 上的点。要让迭代形成一个稳定的矩形,只有一种可能:迭代的值在两个值之间反复横跳,即 a 迭代得 c,c 迭代计算得 a,如此反复。
不过,注意到 B, D 在 y=t 上,它们自己的横纵坐标相同,因此,迭代成的矩形实际上是正方形。
也因此,此时直线 BD 的斜率应当为 -1.
特别地,迭代收敛的边界情况为 B 与 D 重合。即有以下式子成立:
\begin{cases} \frac{\mathrm{d}y}{dt}\big|_{t_0}=x^{t_0} \ln x=-1 \\ t_0=x^{t_0} \end{cases}
解方程得 x=e^{-e},\;t_0=\frac{1}{e},得到另一个收敛极限 x=e^{-e}.
现在看看这两个推理中所求解的方程,应该明白不动点应当满足 \left|\frac{\mathrm{d}f}{\mathrm{d}x}\right|\leq 1 的原因了吧。
学习的本质是保留好奇心。做题只会培养做题家,探索才能取得真进步。这也是我选择这个问题进行讨论的原因。它并不像一个实际的数学考试题目,但却能引发人们的好奇心。在探索的过程中,好奇心驱使着你不断探究,而探究中的思维以及结论说不定就会在后来的某个地方让你灵光一现。
上面的解释看起来已经把这个问题解释的很透彻了吧。不过,它怎么能骗过聪明的你呢?还有一个最重要的问题没有解决:既然 x^{x^{x^{\cdot^{\cdot^\cdot}}}}=4 无解,那么当时我们解出的 \sqrt{2} 是哪里来的?换句话说,本身无解的方程被我们解出解了,这对吗?
此时可能就有人说了:因为它本身就不收敛,你强行把指数上的级数换成 4,肯定不行啊!
这句话是对的,增根确实是在这一步出现的。但是我们要探讨的,是更加深入的问题:凭什么能出现增根?为什么这个增根就偏偏是 \sqrt{2} ?既然 x=\sqrt{2} 在形式运算中确实被算出来了,那么这个 “形式上的解” 到底对应了什么?
这个问题非常考验思维的灵敏度。一脸茫然是正常的,不如就从我们见过的增根开始吧。
初中数学的常见解方程就会出现一种坑:计算出来的解可能有增根,你必须带回去验证一下才能够确定要不要舍弃。下面就是典型例题:
解方程:\frac{x}{x-2}=\frac{x+6}{x^2-4}
交叉相乘得 x^3-4x=x^2+4x-12,化简得 (3+x)(x-2)^2=0,解得 x=-3 和 x=2. 带回验证,-2 并不是它的解,所以需要舍去。
这是一个非常典型的增根案例。出现增根源于我们将 \frac{x}{x-2}=\frac{x+6}{x^2-4} 变为了 x^3-4x=x^2+4x-12. 它们其实是不同的方程,但它们只在 x=2 的地方表现不同,在其他的地方是一模一样的。
因此,实际上我们在交叉相乘的时候做了一件事情:我们把原题目 “解方程 \frac{x}{x-2}=\frac{x+6}{x^2-4}” 换成了 “解方程 x^3-4x=x^2+4x-12”. 在做这件事的时候,我们替换了题目。在一般的形式化解题时,更换题目当且仅当它们完全相同时才成立,但是现在它们不同了,增根也就出现了。
现在就可以解决一个疑问了:增根 x=2 是从哪里来的,代表了什么?事实上,它代表的是 x^3-4x=x^2+4x-12 的解,而不是原方程的解。在我们进行变换的过程中,实际上更换了题目,算出来的解是正确的,只不过不是我们原来题目的解而已。
现在再回头来看本文所讲的问题。x^{x^{x^{\cdot^{\cdot^\cdot}}}}=4 给出的解 x=\sqrt{2} 从哪里来,代表什么?
在错误求解的过程中,我们将指数上不收敛的级数替换为了 4,这是犯下的错误,而这一步骤更改了题目本身。原本的题目是:
\boxed{ \begin{array}{c} \text{求解方程 } x^{x^{x^{\cdot^{\cdot^\cdot}}}}=4 \end{array} }
在进行替换后得到了 4=x^4,而它所代表的问题是:
\boxed{ \text{找所有使得 } 4 \text{ 是 } t \mapsto x^{t} \text{ 的不动点的 } x }
还记得文章最开头证明时的那个初见端倪的 L=4 吗?函数 \sqrt{2}^x 与 y=x 的另一个交点正是 (4,4). 因此,此处解出 x=\sqrt{2} 也就是理所当然的事情了。
诚然,最后这个问题讨论的太过深入,一般人也确实很难像这样刨根问底。但是学习就是这样一件事情,如果不像这样刨根问底的话,连与知识本质擦肩而过的机会都没有。
这也是我一直强调的事情:学习的过程要保持好奇心。世界上有许多问题至今未能解决,它们或许是深入学科中心,需要极其庞大的知识量才能解决。但同时又有那么一些问题,浅显到连刚入学的孩童都能提问,却无人知晓。事实上,从小学的 0.\dot{9}=1 就可以踏入高等数学的大门,从婴儿牙牙学语,接触到 “你我” 这一概念时便可从思想上探寻相对性的本质。
这一切的一切,都源于世界如何回应我们的好奇心。孩提时的我们都对这世界充满好奇,但可惜的是,这个世界知道的太少,我们问的又太深。渐渐地,我们学会了在提问中得到一种平衡。这种平衡让我们恰好在已知和未知的边界停止而不再过问,但可惜的是,这个边界是先入为主的,并不是真实的边界。在高中的学习中,老师的最大作用实际上是先入为主地告诉你一些知识,说明它们的正确性,而这些知识并不是本质,因为本质无人知晓。也因此,在学习的过程中,总是到课本的定理就结束了,从没有想过知识的更底层。
因此,学习中最重要的事情,是打破公理。当然这是夸张的说法,不过本质思维确实是这样的。要多问为什么这样而不是为什么成立。
在最后留一个问题吧。希望在读完这篇文章后,可以像这个问题一样刨根问底。这个问题不会在此给出解答。
在微积分中,有洛必达法则成立:\displaystyle\lim \frac{f}{g}=\frac{f'}{g'}.(这里就不写适用条件了,重要的是对比结论)
在数列中,有 Stolz 定理与之对应:\displaystyle\lim_{n\to\infty}\frac{y_n}{x_n}=\lim_{n\to\infty}\frac{y_{n+1}-y_n}{x_{n+1}-x_n}.
在微积分中有分部积分:\displaystyle\int u\;\mathrm{d}v=u\cdot v-\int v\;\mathrm{d}u
在数列中,有 Abel 变换:\displaystyle\sum_{k=1}^nb_k(A_k-A_{k-1})=A_nb_n-\sum_{k=1}^{n-1}A_k(b_{k+1}-b_k).
也就是说,离散和连续或许非常相似?这是为何?有没有一种可能,连续上的定理和离散上的定理有一一对应关系?
教学:纺织知识纱网的铺陈
在这一小节,我们将进入本文的主线任务——对于一个问题应该如何叙述与表达。在前言中已经说过,本文将要讨论的是如何叙述,所以前面的内容充其量也就算是一个铺垫而已。本文打算从教学的叙述开始,再回头看看上方用于证明的语言。
事实上,上方的所有文本就是一个教学。你可以翻回去反复查看,我如何教会你这个问题。不过它并不能称得上是一个完美的教学,因为毕竟本文的最终目标是如何叙述,而不是教会你一个问题,从而在写文章时确实要为之做出一些妥协。如果你真的要看一个教学文章,那么有那么一篇文章非常优秀:由方程 xxxx … = 4 引发的讨论 —— 无穷迭代幂次大探险 - Aries的文章 - 知乎,本文的许多思路也是从这篇文章中汲取的。
说回正题。如果让你把这个问题讲透,你会如何规划?这其实并不是一个简单的问题。首先,叙述分为两部分:叙述顺序与叙述风格。叙述顺序决定 “讲什么,按照什么逻辑写”,叙述风格决定 “是否有感染力,文章阅读是否流畅自然”。
我们先从叙述顺序开始。前几小节的讨论已经非常深入了,所以在这里我认为你对问题已经了然于心了。因此下面的所有内容都以前文的问题为例。
在思索叙述顺序的时候就出现问题了。你会发现一个问题,知识并不是一个线性结构,而是一个网状结构。你在决定一个叙述方向的时候一定会遗漏一些知识无法与读者分享。
比如无穷幂塔在复数域上可以诱导分形。这是无穷幂塔的高阶应用,但我在前文的讨论注重于知识的本质,因而这部分知识便无法与大家分享。
这也是教学的原则之一:教学路径应当遵从 “主线 + 支线” 的形式,而不只是罗列知识点或过分强调知识点之间的关联。其中,主线是为了解决最终的问题(这个问题一般在正式上课前被提出),支线则是课本上的知识点。
比如上面的问题是一个很好的用于引入极限的例子。对于教学《高等数学》的老师来说,就可以用这个例子引入极限:
今天我们看这样一个问题:求解方程:x^{x^{x^{\cdot^{\cdot^\cdot}}}}=2 可以解得 x=\sqrt{2}。还有一个方程:x^{x^{x^{\cdot^{\cdot^\cdot}}}}=4,解出来怎么还是 \sqrt{2} 啊?
我们今天就研究这一个问题。
随后先计算 \left\{\sqrt{2},\sqrt{2}^{\sqrt{2}},\sqrt{2}^{\sqrt{2}^{\sqrt{2}}},\cdots\right\} 的前几项,发现无限趋近于 2 但不等于 2,于是可以用 \varepsilon - N 语言先定义极限。
随后给出数列单调有界必有极限、两边同时取极限求极限值等等(顺带一提,这个数列极限可以用 \varepsilon-N 语言证明,取 N=\lceil 1+\frac{2}{\varepsilon}\rceil 即可,但需要一些计算)。
在这个例子中,主线任务是探究这个问题为什么会出现这么反直觉的事情,而支线任务是推导课本中的定理。这样做的好处是,定理是在一个追寻目标的过程中被发现的,而学生理解一个定理出现的背景后,不仅记忆更加深刻了,更重要的是,他离构建知识本质的网络更近了。
接下来讨论一点叙述风格的内容。由于本文的重点在 “逻辑性质的证明”,故不会花费太多笔墨在这一小节。另外由于作者本人的写作水平有限,所以这一部分也写不出多少名堂来。
首先最要强调的一点就是:要把自己也想成第一次学习的人。一堂课程、一份教材,最终面对的都是什么都不懂的求学者。因此,为了可读性,是可以牺牲一些叙述的严谨性的。比如初中数学教材改版后,对有理数的定义是这样的:可以写成分数形式的数称为有理数。 事实上这句话是有问题的。比如 1/\pi,是有理数吗?不是。实际上应该还要加一个条件:分子和分母必须为整数。那么教材的编写者为什么不加?因为那时还没有接触到无理数,分数形式实际上最终都能划归为分子和分母必须为整数这一类。因此,在适当的时候可以使用口语化不严谨的方式给出底层思想,随后再严格定义。
而这正是教学的一大特点:它的目标是清晰易懂而不是得出结论。因此,教学时需要用到大量的口语词汇以保证可读性。另外,也是出于这个原因,在教学时一定要注意信息量。不同知识点乃至不同步骤的信息量都是不同的,教学的核心实际上是控制信息量的过程,在信息量大的地方使用更多的语言去延长教学时间,好让学习者有时间理解;在信息量小的地方可以快速带过,因为它们一般不需要太费脑。好的老师精准把控时间,让学习者的信息接受速率保持在一个稳定的水平,从而能够更加流畅的吸收知识。
教学的部分就说到这里。
证明
证明是最简洁的语言,它标示着从条件到过程的路径。除此之外没有任何冗余叙述。在证明中仅将逻辑路径给出,任何形式的其他叙述都是多余的。它只保留了叙述逻辑这一项,因此它的压缩化程度非常之高,如果不仔细思考很可能会一脸茫然。
论述
这里的 “论述” 指的是论文中的语言。
论文中的叙述,是教学与证明的中间值。论文中的叙述要承担引导的作用,但不能使用口语化说辞;论文中的陈述还要保留证明的严谨性,但也不能通篇都是公式推导。
事实上,叙述和证明可以分别对应两种逻辑:发现逻辑与验证逻辑。叙述属于知识的阐释层,而证明属于知识的验证层,后者保证知识的正确性,而前者降低证明的理解成本。
因此,一个论文需要至少两条主线同时进行:逻辑主线与认知主线。
逻辑主线
逻辑主线是证明部分,回答 “结论为何成立”。它具有极强的严谨性,通过精确的定义、严密的推理、完整的逻辑链等来达成。
它是保证文章正确性的核心。这部分与平时做题所写下的证明大同小异,但是长度被拉长到了整个论文。因此,它的逻辑链更加庞大,也更需要小心地维护。
一篇论文要解决的问题,是主要目标。逻辑主线要有一个清晰的起点与目标,预示着逻辑道路的走向。在解决问题的过程中会遇到一些困难,它们可以作为支线,最终拼凑成完整的逻辑链。
一般的论证中将定义作为论证起点,而支线为引理,经由多个步骤推得最终结论。因此,在编写逻辑主线时,一定要注意论证顺序。一个好的顺序必须能够自然而然地回答一个问题:这一步的作用是什么?这样子,读者在阅读时才能够跟随作者的思维方向行驶,同时也能够直接在结构层面上降低理解成本。
认知主线
当然,只从结构层面上来降低理解成本是不现实的,这也是认知主线所解决的问题。认知主线可以近似地理解为逻辑主线的批注部分,不过事实上认知主线在一般情况下的内容要多于逻辑主线。它回答的问题是:“为什么这个想法是自然的”。
在阅读一份证明时(尤其是读者自己没有成功证明的),最大的疑惑其实是:“这是怎么想到的?” 因此,认知主线的最大意义在于,它让读者有 “即使我没有想到,这个证明也非常自然” 的感觉。实际上这与教学非常相似,因此,将读者想象成正在学习的学生更有帮助。
认知主线是文章的灵魂。它承担着解释、引导与组织理解的职责,使读者能够把握研究问题的背景、方法选择的依据以及证明结构的整体逻辑。因此,在认知主线内的文字应当要有足够的可读性。将一个定义、一个引理或是一个定理的 “白话版” 写出来是有必要的,但是论文语言的叙述不应当充斥白话文。因此,对于写论文来说,一个必要的技能是用专业的语言写出白话的效果。
下面以压缩映像原理给出一个例子。
设 (X,d) 是完备度量空间,映射 T:X\to X 满足
d(Tx,Ty)\leq q\:d(x,y),\quad0<q<1.
则 T 存在唯一不动点。
形式化证明写法:
设 (X, d) 为完备度量空间,T: X \to X 为压缩映射,即存在 q \in (0, 1),使得对任意 x, y \in X,有 d(Tx, Ty) \le q d(x, y)。
任取 x_0 \in X,定义迭代列 x_{n+1} = T(x_n)。由压缩性可递推得到
d(x_{n+1}, x_n) \le q^n d(x_1, x_0).
于是对任意 m > n,由三角不等式,
d(x_m, x_n) \le \sum_{k=n}^{m-1} d(x_{k+1}, x_k) \le d(x_1, x_0) \sum_{k=n}^{m-1} q^k.
由于 \sum_{k=0}^\infty q^k 收敛,故右端当 m, n \to \infty 时趋于 0。因此 \{x_n\} 是柯西列。由 X 的完备性,存在 x^* \in X,使得 x_n \to x^*。
又因为压缩映射连续,故
T(x^*) = \lim_{n \to \infty} T(x_n) = \lim_{n \to \infty} x_{n+1} = x^*.
因此 x^* 是 T 的不动点。
若 y^* 也是 T 的不动点,则
d(x^*, y^*) = d(Tx^*, Ty^*) \le q d(x^*, y^*).
由于 q < 1,得 d(x^*, y^*) = 0,故 x^* = y^*。因此不动点唯一。
加入认知主线的叙述版本:
为证明不动点的存在性,我们从任意初始点 x_0 \in X 出发,构造迭代序列 x_{n+1} = T(x_n)。这一构造是自然的,因为如果极限 x^* 存在且迭代过程足够稳定,那么应当有 x^* = T(x^*),即 x^* 成为所求的不动点。
接下来证明该序列确实收敛。由压缩条件可知,相邻两项之间的距离满足
d(x_{n+1}, x_n) \leq q^n d(x_1, x_0).
这表明随着迭代进行,每一步的变化量都以几何速度衰减。因此可以预期序列逐渐趋于稳定。进一步利用三角不等式可得,对于任意 m > n,
d(x_m, x_n) \leq \sum_{k=n}^{m-1} d(x_{k+1}, x_k) \leq d(x_1, x_0) \sum_{k=n}^{m-1} q^k.
由于右侧是几何级数的尾部,故当 m, n \to \infty 时趋于零,从而 \{x_n\} 为柯西列。由空间的完备性,存在 x^* \in X 使得 x_n \to x^*。
由 T 的连续性,
T(x^*) = \lim_{n \to \infty} T(x_n) = \lim_{n \to \infty} x_{n+1} = x^*,
因而 x^* 为不动点。
最后证明唯一性。若 x^* 与 y^* 均为不动点,则
d(x^*, y^*) = d(Tx^*, Ty^*) \leq q d(x^*, y^*).
由于 0 < q < 1,上式只能在 d(x^*, y^*) = 0 时成立。因此两个不动点必然重合,不动点唯一。
相信你已经能够感受到这两份叙述的差别了。
人类思维惯性
这一节来总结一下前面的内容。并揭示人类如何思考问题。
人类往往从具象的角度理解世界,因为人们相信眼见为实。在进行抽象的理论推导之前,用一些具象的案例尝试是人们最自然的想法。因此,在被给出一个问题时,往往要带入一些实际的值进行尝试。这种想法自然而然地诱导出一种以目标为驱动的思维惯性。具体来说,人们总是先问 “要证明什么” 后才去思考 “应当使用什么工具”、“如何构造” 等问题。而证明不是这样,它聚焦于逻辑关系,所以它由条件驱动,直接给出需要用到的工具,下一步的思路等等。它与人类的思维惯性正好相反,因此在大部分人看来,证明本身就是反直觉的。
另外重要的一点是,人类天然相信因果理论,没有因果的事情在心理上是更不能接受的。人不仅想知道“事实是什么”,更想知道“为什么会这样”。在证明中,冷不丁地甩出一个定义,即使是正确的,读者也很难去相信。等读者读懂了内涵,大脑中的剩余资源也就所剩无几了。这样的写法,和变相增加阅读负担没什么区别。
因此,一个好的叙述应当迎合思维惯性。构造是不符合思维惯性的,因为它的出现没有理由。而 “证明…等价于证明…” 是符合思维惯性的,因为它从结论出发,推导是自然的。
这启发了我们对于论文结构的思考。综上所述,一个论文的结构往往与人类思考问题的方式紧密相连。一个典型的结构是:
为什么研究这个问题 → 目标是什么 → 为什么想到这个方法 → 方法的核心思想是什么 → 正式证明 → 结论意味着什么
它与典型思维路径很接近,因此按照这种结构写出的论文清晰易懂。当然在实际的项目中很难做到与之完全对应,故按需变化是必要的。不过,核心原则依然是固定的:保证读者知道为什么会这样。
以上就是关于叙述的全部内容了。在文章的结尾,笔者还想讨论一个更加底层的问题:知识框架/知识网络与人类思维惯性有什么关系?
这要深入到人类思维的本质了。思维惯性,本质上是一个搜索的过程。而搜索的载体正是人类脑中的知识框架。人们倾向于看到自己已经熟悉的模式,因而每一次思考都是在寻找一个与问题最相近的知识点。在面对下面的等式时,你第一眼会认为 x_1 与 x_2 遵循怎样的关系?
x_1-x_2=x_1x_2
本质上,你会在脑内搜索一些你已经掌握的知识点,然后慢慢向这个等式靠近,最终得到一个最能代表这个等式的答案。一个对数字敏感的人会立即看到这个等式实际上是 \frac{1}{x_2}-\frac{1}{x_1}=0,但是不是所有人都会想到。不过可以肯定的是,当一个没有想到这一点的人看到了这个答案,在下一次遇见相似等式的时候就会不自觉地向着这种结构思考,从而有机会能够想到这种变换。
思维惯性决定人如何理解新知识,而知识框架决定思维惯性如何在知识库内搜索。同时,思维惯性在理解新知识的时候也会反过来为知识框架添加新的联系。这两种事物是相互配合的。在知识框架有了足够多的联系时,思维惯性自然而然地就能够更加快速地搜索了,我们把这种现象叫做 “灵感”。
后记
说实话,每次完结一个长篇文章后,我都很佩服我自己。我不知道究竟是什么动力使得我能够坚持这么久,但是这篇文章确实花费了我近两周的的时间。我坚持一个观点:天才是可复制的。我认为,一个学习吃力的人,“学习方法不对” 这个原因应该占绝大部分。对于历经重重考验考上大学的那些学生更是如此。虽然这种想法或许太过乐观,但人总该抱些希望,不是吗?这些年来,我一直在做一件事:试图教学思想而非结论。但很可惜,应试教育的要求让绝大部分人没有时间与精力去为了一个理想的实验而停下脚步,而更可惜的是,目前的实践仍然没有找到案例能够佐证这一点。
或许这不是巧合,我确实该承认人与人之间的差距。不过这不是我希望看到的。我写这篇文章的目的,最初是为了演示研究思维和探讨论文写作,但既然聊到了思维,不如将其拓展开来,毕竟了解自己是提升自我的第一步。
我的文章一直都注重于启发,包括这篇文章也如此。我故意将有趣的部分写入文章,为的是启发人们能够思考文章之外的内容。我真正希望的,是读完这篇文章后,读者能够自己思索,在枯燥的知识中保持好奇心。正如魔术可以引发人们的好奇心,我相信知识也可以,只不过是没有找到正确的模板而已。
评论区