关于数学
现在读到硕士,再回头看以前的一些事情,已经有了一点阅历,能够反过来理解当时的自己。数学大概就是其中一个。
以前数学一直不好,这个没什么需要重新解释的。题不会做,公式记不住,考试分数也就那样。老师说我基础差,从结果上看其实也没有说错。只是现在回头看,我发现我以前学数学有一个很麻烦的习惯:如果我不知道一个知识为什么成立,我就很难把它直接当成知识接受。
这种事情其实小学就开始了。比如负号和减号。我很长一段时间都不明白,(5-1) 里面那个横杠叫“减”,到了 (-1) 前面又叫“负”,那为什么后来又可以写成:5-1=5+(-1)
如果“减一”和“负一”不是一个东西,为什么它们最后又会连到一起?现在当然知道,一个是减法运算,一个是数的符号,而减法可以写成加上一个相反数。但小学时候的我根本不会用“运算”“相反数”这些词来描述自己的问题,我只会觉得,这两个横杠明明长得一模一样,为什么老师一会儿说它是减,一会儿又说它是负。这个非常基础的问题直到初中才算搞明白,这本质上对符号的定义,说白了就是规定一个规则,然后大家根据这个规则继续玩,没有所谓“凭什么你说它的定义是这个”。
而且我又不太喜欢问老师,于是这个问题就一直留在那里。不是没有问题,是问题一直在脑子里面,只是没有说出来。可能一直到初中,我才真正把这件事情想明白。小学时候的简便计算和因式分解对我来说更是噩梦。老师在黑板上把 (99*7) 写成 ((100-1)*7),别人看到的是“这样算比较快”,我脑子里想的却是:为什么可以这样变?为什么变完以后还是同一个东西?为什么有时候可以拆,有时候又不能随便拆?
因式分解也是一样。老师写:ab+ac=a(b+c)
然后说,提取公因式。我会卡在“提出来”到底是什么意思。这个 (a) 真的是被拿出来了吗?还是只是换了一种写法?如果只是换一种写法,为什么两边一定相等?现在当然知道,它不过是分配律反过来用。但当时我看到的只是老师把一个式子变成了另一个式子,然后告诉我以后遇到这种题就这样做。我不是不会算,我是不太信任这个变形,如果我不知道它为什么合法,我就会觉得自己只是照着老师做了一个动作,并不知道自己到底在干什么。
到了后来学三角函数,这个问题就更严重了。老师告诉我们:
这个要背,为了形象一点,老师还会画单位圆,告诉我们正弦、余弦分别对应什么。正常的学习流程应该是,理解一下,记住,然后开始做题。别人已经做到第五题了,我还卡在第一句话:为什么sin30=1/2?
而且我不是问完这一句就结束。我会继续想,为什么一定要画圆?为什么是单位圆?为什么半径一定是 1?如果半径是 2 呢?是谁最开始想到这些东西的?三角函数为什么叫三角函数?它既然是在三角形里面算边长比例的,后来为什么又会变成一条波?
然后我就彻底掉队了,老师已经开始讲下一题,别人已经刷了一页,我还在想为什么单位圆的半径必须是 1。最后老师过来看一眼,结论也很自然:基础太差。这个判断其实没错。因为从课堂上能看到的结果来说,别人公式背了,题做了,我公式没记住,题也不会做。至于我脑子里面到底堆着多少个问题,没有人知道。
现在回头看,更麻烦的是,那时候没有今天这种可以一直追问的 AI,而我又不主动问老师,所以这种学习方式的成本其实高得离谱。今天如果我再问“为什么sin30=1/2”,十分钟可能就能把大概的骨架问清楚。单位圆为什么方便,为什么半径取 1,如果不是 1 会怎样,圆周运动为什么和正弦有关,为什么正弦最后又会出现在波里面。哪里没懂,再继续问。
但小时候不是这样。一个问题一旦钻进去,可能几个月都摸不到真正能让我停下来的答案,因为很多时候我甚至不知道自己应该搜什么。你连那个概念叫什么都不知道,又怎么知道下一本书该翻哪一页,所以一个今天十分钟能问明白的问题,当年真的可能拖上几个月。
更何况,真的沿着“为什么sin30=1/2一路追下去,这个坑根本没有底。先是三角几何,然后是圆与单位圆,再到圆周运动、函数、极限、微积分、微分方程、振动与波动、傅里叶分析、信号处理、电磁学。要是再追历史,那又是另外一条线,从古典数学,到印度数学、伊斯兰世界,再到近代欧洲,最后一路追到欧拉。
老师只是想让我记住:sin30=1/2
而我如果真的按照自己脑子里的标准去把这句话“弄明白”,最后可能要给它补上一整套从数学史到现代分析的背景。现在想起来其实挺抽象的。别人楼都盖到五层了,我还蹲在地上研究第一块砖是怎么烧出来的。研究完砖,还要开始查黏土是从哪里来的。而且我还不问,全部自己在脑子里解决,那当然解决不完。
到了高中以后,我其实开始放弃理解了。尤其是三角函数后面,大量三角恒等变换、和差公式、倍角公式、半角公式,再加上一堆诱导公式。开始还会想为什么,后来已经不想了。或者说,不是不想,是我已经知道,按照以前那套办法想下去,这节课就不用上了。于是我终于开始做一件小时候很抗拒的事情:先背。
“奇变偶不变,符号看象限”,这个口诀我到现在都还记得。当时已经不是理解了,就是能背多少背多少。问题是,这种东西对我来说又特别容易掉。因为它没有挂在什么东西上,就是一串孤零零的字符。今天背下来,过几天就忘了。别人可能是在做过几十道题以后,公式、图形和题型慢慢连在一起,我很多时候是真的只剩下背。
所以后来就形成了一个很抽象的结果。小时候,我不理解就不愿意接受;到了高中,发现根本来不及全部理解,只能先背;但因为没有建立起我自己能接受的那套结构,背下来的东西又很容易掉。于是最后呈现出来的,还是基础差。
不会就是不会,题做不出来就是做不出来。学校有学校的进度,一节课也不可能为了一个sin30=1/2从古典几何一路讲到傅里叶。只是现在终于能解释,为什么我以前会经常莫名其妙地落在后面。
不是因为我没有问题,恰恰是问题太多,而当时又没有一个足够低成本的办法,让我把这些问题一个一个问完。
开放问题
后来我发现,我可能确实更喜欢另外一种问题。不是试卷上那种已经划好范围、知道一定有标准答案的问题,而是给你一个复杂的问题,没有标准答案,也不规定必须用哪一章的公式,允许无限制开卷,自己查资料,自己定义边界,最后看看能做到哪里。
这种东西我反而很容易进去,有时候甚至挺奇怪。课堂上大家可能正在背三角函数,我自己脑子里想的却完全是另外一些乱七八糟的东西。以前看过一期回形针讲机场调度的视频,我看完以后就开始想,机场到底是怎么把这么多飞机调度起来的?跑道有限,滑行道有限,登机口有限,每架飞机又有自己的到达时间、离港时间、航路和优先级,一架飞机晚几分钟,后面可能全部跟着变,那整个系统究竟是怎么避免乱掉的?
然后问题很容易继续长,如果调度的不是几百架飞机,而是几百万个可编程的尘埃节点呢?它们单个算力极低、能源极低,会漂移,会损坏,甚至没有真正意义上的自主导航,只能依靠外部基础设施不断修正和补能。这种东西显然不可能像飞机一样,一个节点规划一条完整航线,那应该怎么做?是把它们分层?把大量节点先抽象成阵列,再抽象成更大的集群?是调度每一个实体,还是只控制整个群体的分布?如果节点不断损失,什么时候还算任务成功?通信、能源、路径、时窗、容错又应该怎么放在一起?
这种问题我可以一直想下去。我 GitHub 里的 WCM-Core、SparseEcho,就是当时写出来的。不是先有人给我列好第一问、第二问、第三问,而是先冒出来一个问题,做着做着发现原来的定义不够,再继续往下拆;缺一个概念就去查,发现一条路走不通就退回来,重新换一种定义。你想想,课堂上数学老师在抽背诱导公式,我一个都背不下来,成天在想SFPTI稀疏反演、WCM见证提交模型这种东西,也是很抽象了。
我总是忍不住把一个本来已经封闭的问题重新打开。为什么是二分之一?为什么是单位圆?圆周运动为什么会变成正弦?为什么正弦又能描述波?如果能描述波,那复杂信号为什么又可以拆成很多正弦?在考试里面,这种习惯很糟糕。因为别人已经做到第五题,我还没有离开第一行。但换成一个本来就没有标准答案的问题,它反而没那么碍事。因为这里没有人要求我赶紧接受第一条公式,也没有人告诉我下一步应该翻到哪一页。问题可以重新定义,资料可以随便查,数学、计算机、控制、信号,哪里需要就往哪里钻。
现在有时候,我干脆就去找那些本来就是打开的问题。幸运的是,现在拥有了AI,我可以无限追问、把大问题拆小的交互对象,这对来讲,是学习环境发生了结构性改善。
















这一切,似未曾拥有