但是,我还没有讲到数学教育中最主要的问题。前段时间去图灵的作译者交流会,期间和刘江老师简单地聊了几句。刘江老师提到一个网站叫做 Better Explained 。他说,其实大家没能理解数学之妙,是因为教的时候没教好,数学本来可以讲得更直观,更通俗的。
我非常同意刘江老师的说法。举个例子吧。如果有学生问,质数是什么?老师会说,质数就是除了 1 和自身以外,没有其它约数的数。不对,这不是学生想要的答案。学生真正想知道的是,质数究竟是什么?其实,质数就是不可再分的数,是组成一切自然数的基本元素。 12 是由两个 2 和一个 3 组成的,正如 H2O 是由两个 H 原子和一个 O 原子组成的一样。只是和化学世界不同,算术世界的元素有无穷多个。算术世界内的一切对象、定理和方法,都是由这些基本元素组成的,这才是质数为什么那么重要的原因。
高中学复数时,相信很多人会纳闷儿:虚数是什么?为什么要承认虚数?虚数怎么就表示旋转了?其实,人们建立复数理论,并不是因为人们有时需要处理根号里是负数的情况,而是因为下面这个不可抗拒的理由:如果承认虚数,那么 n 次多项式就会有恰好 n 个根,数系一下子就如同水晶球一般的完美了。但复数并不能形象地反映在数轴上,这不仅是因为实数在数轴上已经完备了,还有另外一个原因:没有什么几何操作连做两次就能实现取相反数。比如,“乘以 3”就代表数轴上的点离原点的距离扩大到原来的三倍,“3 的平方”,也就是“乘以 3 再乘以 3”,就是把上述操作连做两次,即扩大到 9 倍。同样地,“乘以 -1”表示把点翻折到数轴另一侧,“-1 的平方”就会把这个点又翻回来。但是,怎么在数轴上表示“乘以 i ”的操作?换句话说,什么操作连做两次能够把 1 变成 -1 ?一个颇具革命性的创意答案便是,把这个点绕着原点旋转 90 度。转 90 度转两次,自然就跑到数轴的另一侧了。没错,这就把数轴扩展到了整个平面,正好解决了复数没地方表示的问题。于是,复数的乘法可以解释为缩放加旋转,复数本身自然也就有了 z = r (cosθ + sinθi) 的表示方式。顺着这个道理推下去,一切都顺理成章了。复数不但有了几何解释,有时还能更便捷地处理几何问题。
一直对线性代数很感兴趣,于是大学选了线性代数这门课,结果收获几乎为零。原因很简单,本来期待着来一次大彻大悟,结果学了一个学期,我还是不知道矩阵究竟是什么,矩阵乘法为什么要这么定义,矩阵可逆又怎么了,行列式究竟表示什么。
直到今天看到这个网页,才看见有人一语道破线性代数的真谛(这也是我终于决定写成此文的直接原因)。我终于找到了我那一个学期企图寻找的东西。就好像把 x 变成 2 x 一样,我们经常需要把 (x, y) 变成 (2 x + y, x - 3 y) 之类的东西,这就叫做线性变换。于是才想到定义矩阵乘法,用于表示一切线性变换。几何上看,把平面上的每个点 (x, y) 都变到 (2 x + y, x - 3 y) 的位置上去,效果就相当于对这个平面进行了一个“线性的拉扯”。
矩阵的乘法,其实就是多个线性变换叠加的效果,它显然满足结合律,但不满足交换律。主对角线全是 1 的矩阵所对应的线性变换其实就是不变的意思,因此它叫做单位矩阵。矩阵 A 乘以矩阵 B 得单位矩阵,就是做完线性变换 A 后再做一次线性变换 B 就又变回去了的意思,难怪我们说矩阵 B 是矩阵 A 的逆矩阵。课本上对行列式的定义千奇百怪,又是什么递归,又是什么逆序对,还编写口诀帮助大家记忆。其实,行列式的真正定义就一句话:每个单位正方形在线性变换之后的面积。因此,单位矩阵的行列式当然就为 1,某行全为 0 的行列式显然为 0 (因为某一维度会被无视掉,线性变换会把整个平面压扁), |A·B| 显然等于 |A|·|B| 。行列式为 0 ,对应的矩阵当然不可逆,因为这样的线性变换已经把平面压成一条线了,什么都不能把它变回去了。当然,更高阶的矩阵就对应了更高维的空间。一瞬间,所有东西都解释清楚了。
难以置信的是,如此令人兴奋的东西,我们所用的课本上竟然一点都没有说到!那些开篇就讲行列式定义的课本,为什么不先把线性变换下的面积当作行列式的定义,再推导出行列式的计算方法,再来补充说明“其实从逻辑上说,我们应该先用这个计算公式来定义行列式,然后才说行列式可以用来表示面积”?为了严密性而牺牲了可读性,太不值得了。写到这里,我真想立即拾起线性代数课本,用全新的眼光重看所有的定义和定理,然后重新写一份真正的线性代数教材来。
高数课本同样荒唐。主流的高数课本都是先讲导数,再讲不定积分,再讲定积分,完全把顺序弄颠倒了。好多人学完微积分,虽然已经用得得心应手,但仍然没懂这是怎么回事。究其原因,还是数学教学的问题。
我理想中的微积分课本则应该是先讲定积分,再讲导数,再讲不定积分。先讲定积分,不过千万不能用现在的定积分符号,避免学生误认为定积分是由不定积分发展而来的。讲自古就有的积分思想,讲分割求和取极限的方法,自创一套定积分的符号。然后另起炉灶,开始讲微分,讲无穷小,讲变化量。最后才讲到,随着 x 一点一点的增加,曲线下方面积的变化量就是那一条条竖线的高度——不就是这个曲线本身的函数值吗?因此,反过来,为了求出一个函数对应的曲线下方的面积,只需要找到一个新函数,使得它的微分正好就是原来那个函数。啪,微积分诞生了。
光讲形式化的推导沒有用。这才是真正把微积分讲懂的方式。严格定义和严格证明应该放到直观理解之后。只可惜,我还没看到哪本课本是这样写的。