A DAY WITH MATHEMATICS
你的一天,铺在两千四百年的数学上
数学不在别处:它在你的锁屏里、耳机里、导航里、体检报告里。跟着一天的钟点走一遍,每一格都能指回馆里的某件展品——这一天里,120位数学家一个也没缺席。
- 07:00
闹钟响,摸黑解锁手机
手指落在屏幕上,报给系统的是一对数:(x, y)。「用一对数说清一个位置」这件事是 1637 年才有的——在那之前,几何是画出来的,不是算出来的。今天屏幕上的每一个像素、每一张图表,地址都按这个写法给。发明这套写法的人拿来开刀的第一道题,是一千三百年前亚历山大里亚留下的:一个点到四条直线的距离两两相乘,积之比不变,它走出什么曲线?古人说得出是圆锥曲线,却作不出来;换成一对数,它就是一个二次方程。
- 07:20
刷牙,耳机里在放歌
MP3 把一段声音拆成一堆正弦波,把你听不见的那些扔掉,再拼回去。在这之前还有更根本的一步:一段连续的声音凭什么存得进有限个数?因为只要它不含高于某个频率的成分,每秒采两倍于那个频率的样本就一点不丢——CD 的 44.1 千赫正是这么来的。而扔掉听不见的那些之后,剩下的还能压多小也不是随便的:那条地板叫熵,一位都少不了。拆和拼用的是同一把刀,而造这把刀的人本来是为了算热——他要知道一根铁棒里的温度怎么流。至于耳机腔体与卫星锅那个弧面:抛物面把平行来的波聚到一个焦点,这条性质写在两千两百年前那八卷书的第三卷里。而降噪是另一件事:它是一个实时滤波器,会不会自己啸叫起来,只看传递函数的极点落在复平面的哪一边。还有一个更老的问题藏在最前面:拆开之后凭什么拼得回来?把它答成一条能验的定理要等到 1829 年——分段光滑就收敛,而在声音被剪断的那一瞬间,级数收到断口两侧的正中间。还有一句更早就该问清楚的话:一串连续的波加起来,和一定还连续吗?柯西 1821 年说一定,阿贝尔 1826 年举出了反例,而补上的那个词是「一致」——差的不是收不收敛,是所有点能不能用同一个项数一起到位。降噪那个滤波器还有一条更硬的限制:它只能拿已经听到的声音去算,而这种「因果」的滤波器,增益不许在一整段频率上恰好为零——1934 年的一条定理,所以「把某一段噪声一刀切干净」从来只能逼近。同一个音为什么吉他与长笛听得出不同?因为一根弦从来不只振一种样子:1753 年有人说,拨响的弦是基音、八度、十二度……几种振动叠在一起,拨在正中,偶数的那几种一个也不响——哪几种响、各占多少,就是音色。而那根弦到底怎么动,六年前已经有人写成了一条方程并解了出来:弦上每一点的高度,是一个往左跑的波与一个往右跑的波之和,跑到两端各自翻个面折回来。至于「每秒采两倍就一点不丢」这句话,教科书上的证明是一行:采样等于乘上一把狄拉克梳子——每个采样时刻放一个 δ——而一把梳子的傅里叶变换还是一把梳子,于是频谱被搬出一串副本,频率够低的话彼此不重叠。δ 与梳子到底是什么东西,1945 年才有了严格的说法。
- 07:45
拍一张早餐,随手发出去
JPEG 干的是同一件事:把图像拆成频率,高频那一大半直接丢掉。之所以丢得起,是因为系数衰减得极快——图像越光滑,衰减越快。这不是工程经验,是傅里叶级数的一条定理。可在压缩之前,这张图得先落到传感器上:早餐上每一点发出的光沿直线穿过镜头,交叉而过互不相混,一点对一点落成一幅倒像。这件事一千年前就有人在暗处的墙上证明过——外面几盏灯,墙上一个孔,遮住哪盏灯,就只少哪一块光。落到传感器上之后,每个像素只记三个数——红、绿、蓝各多亮——就足够把颜色还原出来,屏幕也只靠三种光混出全部颜色。三个数为什么够、混色为什么就是相加,是 1853 年一位中学教员回赫姆霍兹时写下的:眼睛只分得出三样东西,混色就是线段的几何加法。
- 08:10
地铁上打开网银,地址栏一把小锁
那把锁背后是 RSA:生成密钥要用扩展欧几里得算法求模逆,整套推理要用同余的语言。一个公元前三世纪的算法,加一本 1801 年的书,今天每秒钟被执行几百万次。今天更常换成椭圆曲线:在一条三次曲线上,「过两个有理点作直线、取第三个交点」就是加法——这一手是三世纪那本《算术》里拿来解题的,叫弦法。这条加法凭什么真是一个群、为什么走着走着会绕回来?因为在复数上,这条曲线其实是个环面:两个方向都重复。最先看见这件事的,是把椭圆积分反过来看的那个人。还有一处你看不见的加速:服务器解密时并不直接对大模数做幂运算,而是拆成两个小素数各算一遍,再用中国剩余定理拼回去,快出约四倍——把这套「余数给定、反推那个数」写成任意除数都能照做的算法的,是 1247 年一本中文书。至于这把锁要开多大才够安全,算的是攻方最快的那套办法——数域筛法:它在一个代数数域里做分解,而那种地方唯一分解本来是坏的,能照常分解全靠 1871 年把「因子」改成一整族数的那一步。握手时那一次模幂,指数有两千多位,也不是一个一个乘上去的:反复平方,几千次乘法就算完——十一世纪有人算围棋一共有多少局,要算 3 的 361 次方,写下的捷法就是先自乘、再乘上自己,「只五次乘,便尽三百六十一路」。而那两个大素数本身是怎么找到的:随机取一个上千位的奇数,先拿一批小素数挨个去除,有一个除得尽就换下一个,都除不尽才去做那项贵得多的素性检验——这一道预筛的念头,就是公元前三世纪那只「筛子」:让合数先漏下去。那项素性检验最朴素的一版,是看 2 的 n 次方减 2 能不能被 n 除尽:素数一定除得尽,可除得尽的不一定是素数——1869 年有人把它当成判素数的充要条件寄到香港一份杂志上,驳他的人又拿一张印错的表举了个假反例,而第一个真骗过它的合数是 341,所以今天的检验要多换几个底、多加几道关。那一次模幂之所以解得回来,是因为模一个素数取 e 次方只是把余数换了个次序;一个多项式什么时候恰好只是一次换位,1863 年有人给了判据——而网页内容真正用来加密的对称密码 AES,那张字节代换表的核心也是这样一个置换多项式。锁后面那一页上,理财产品标着价钱:挂钩某个指数、到期按涨跌兑付的那一类,价钱是照一条带噪声的微分方程算的——而在布朗运动上求导,要比普通的链式法则多留一项,1944 年一个在统计局上过班的年轻人把它写了下来。
- 08:40
导航说:前方拥堵,为您重新规划
「从这里到那里怎么走最快」是一个图论问题。而图论整门学科,是从一个人认真回答「这七座桥能不能一次走完、每座只过一遍」开始的——1736 年,一篇论文。
- 09:30
把一堆数交给表格,让它解一组方程
求解器里跑的是消元法:把系数摆成方阵,一列一列消掉。这套步骤在中国出现于三世纪,比高斯早一千五百年。把那一方块系数当成「一个量」来加、来乘、来求逆,则是 1858 年的事,写下它的人当时白天在伦敦替人起草产业转让文书。而「算法」这个词,来自九世纪巴格达一个人的名字;你敲进单元格的那十个数字按位排开的写法,则是 1202 年由一个比萨商人的儿子带进欧洲的。可方程组一大,消元就消不动了:1845 年有人反过来做——不求一步到位,每个未知数照其余各项重算一遍,一轮一轮地逼近。今天真正大的那些方程组,走的多半是这条路。这样一轮轮算下去凭什么停得下来、停在哪儿?1920 年一篇博士论文给了一条干净的判据:只要每一轮都把任意两个候选答案之间的距离缩到原来的某个 k 倍以内(k 小于 1),不管从哪儿起步都会收敛到同一个解,而且还没算就知道要算多少轮。方程要是带着平方、立方又有好几个未知数,一列一列地消就不够了:1303 年有人把四个未知数摆进同一张算筹格子——一个往下、一个往左、一个往右、一个往上——再一元一元地消,消到只剩一条一元方程。还有一件更靠前的事:单元格里写得下 x、x²、1/x 并且它们同权,这个前提本身是争来的——x² 曾经只是一个正方形的面积、x³ 只是一个立方体的体积,x⁴ 没有图形能对应,也就没有资格出现。十一世纪的巴格达把这道阶梯两头都推到了无穷,公式栏里才有今天这套写法。还有一件藏得更深的事:这些数在机器里是浮点数,而它们的首位并不是均匀的——首位是 1 的差不多占三成,是 9 的不到五分之一成,而且越算越像这个样子。要是让表格去找一个函数的最低点,它最后要判断的是:那一点四周是往上翘还是往下弯——看的是一个二次型化成平方和之后正几个、负几个,而这两个个数不管你怎么换坐标都不变,1852 年有人给它起名叫「惯性」。表格里那个「规划求解」要是改成「在这些限制下,让这一格最大」,跑的就是另一套:1947 年为美国空军排计划想出来的单纯形法,沿着一个多面体的棱,一个顶点一个顶点往上爬。
- 10:30
开工前先看一眼昨天的数据
「误差 ±3%」这句话之所以说得出口,是因为一条定理:不管原始分布多奇怪,把足够多的量加起来,形状都收敛到同一条钟形曲线。抽样、质检、A/B 测试,全踩在它上面。而这一整套的第一步朴素得很——把全部可能的情形数出来,拿有利的去除——那是一个十六世纪的赌徒写下来的。至于「靠手上这点样本反推整体」为什么靠得住,答案写在 1713 年出版的一本遗稿里。而那条钟形曲线本身,是 1733 年一个在伦敦咖啡馆里替人算概率的法国难民先写下来的——他还留了一句更要紧的话:衡量偏离,要拿 √n 当尺子。今天所有「误差多少」的算法,量的都是它。钟形曲线要「足够多」才靠得住,样本不多时还有一条不必假定分布的底线:偏离均值 k 个标准差的概率不会超过 1/k²,不管那个分布长什么样。这条界看着松,却一分也改不动——有一个只取三个值的分布正好把它坐满。这一整套话能说得这么利索,还欠着 1933 年那七十几页:在那之前,「概率」是一门自带一套特殊说法的学问,而那本小册子把它定义成了一个集合的测度——事件是集合,概率是测度,期望是积分。连「已知 A 求 B 的概率」这种天天在用的话,也是在那里才被安顿好的:它不是对一条孤立的假设说的,而是对一整族分法说的,换一族分法,同一条线上的答案就变。而「这个差别算不算数」该怎么判,是 1935 年一本书拿八杯茶讲清楚的:先假定根本没有差别,算出眼前这个结果凭运气出现的机会;机会足够小,才推翻那个假定——A/B 测试报告里的 p 值就是这个数。也有报告不给 p 值,直接写「B 比 A 好的机会有九成七」:那是把转化与没转化当成出现与落空的次数,反推那个看不见的转化率落在哪儿——1763 年一篇遗稿问的正是这个问题,而且问之前先要交代一句「事先怎么看」。
- 11:00
天气预报说下午有雨
报不准不是算力不够。初值差一丁点,结果差很远——这件事在 1889 年的三体问题里就已经被看见了,那时离「混沌」这个词被造出来还有八十年。把这件事从天上搬进天气里的,是 1963 年的三个方程:在一台每秒只走一步的计算机上推了六千步,轨道有界、却永不重复,于是有人断言精确的超长期预报是不存在的;九年后他在一场讲演里问,巴西一只蝴蝶扇一下翅膀,会不会在得克萨斯引起一场龙卷风。真下起来之后,「下了多少毫米」这个数也不是直接量出来的:雨量计承水口的面积是定死的,量到的水位还得折算一遍。八百年前就有人专门写过这件事——州郡摆着的量雨盆口大底小,盆里的水深并不等于地上的雨深。至于「算」这件事本身,还有一问排在算不准的前面:这样一组偏微分方程,给定某个时刻整片场的值,解到底存不存在、唯一不唯一?1875 年的回答是——只要方程写得成法向形式、给值的那个面不是特征面,解析解就存在而且唯一;同一篇论文还顺手造了个反例,说明这个前提一个字也去不掉。真正把这件事交给机器去算,是 1950 年的四次预报:在 ENIAC 上推 24 小时,算一次也花了将近 24 小时,「刚好跟得上天气」。那一次真正难的不是算得慢,是格式本身会炸——时间步长稍大一点,一个舍入误差就长成锯齿把整个解吃掉;而炸不炸可以事先算出来:代进一个纯波,看它一步被放大多少。还有一个数管着「这份预报能信几天」:两条差之毫厘的轨道分开得多快,是可以定义、也可以算的——1892 年有人给它下了定义,只是符号与今天正好相反,而且他当场举了个例子说明这个量连极限都不一定存在,只能取上极限。另有一件事与算法无关、是地球的形状定死的:地面上的水平风场不可能处处在吹,总有一处风速为零——1912 年有人证明了偶数维的球面梳不平。还有一件更基本的事排在这一切前面:把时间往前推一步,这一步本身该怎么走。1895 年有人把求积的老办法搬到了微分方程上——求积时中点的函数值想取就取,解方程时中点的值还不知道,那就先拿起点的斜率走半步把它猜出来,再回到那里取斜率;同一篇的末尾还留下一条今天仍在用的规矩:同一段用大步长和小步长各算一遍,两次结果相符到第几位,就只信到第几位。
- 12:30
点外卖,App 说「预计还有 8 分钟」
单位时间里来几单、排几个人、服务器收到几个请求——这类「稀有事件在一段时间里发生几次」的问题,由同一个分布管着。他当年拿它算的是法国法庭的错判率。至于骑手还有多远:把他一路时快时慢的速度对时间加起来,就是速度曲线下面那块面积——拿面积当路程,是十四世纪巴黎的一个人先画出来的。至于「预计」这两个字本身:一件还没发生的事平均值多少、该按什么价码算,1657 年那本小册子把它定义清楚了,用的词就是「期望」。平台把一批订单派给一群骑手,要的是总路程最短——1781 年有人为运土问过同一个问题,还证了一句:最省的那种配法里,任何两条路线都不会交叉。
- 13:20
在地图上搜一句「附近的咖啡馆」
地球上的点是二维的,数据库的索引是一维的。要按「附近」查得快,得先把二维压成一维,还得让挨得近的点压完仍然挨得近——这正是 1891 年那条填满正方形的曲线干的事(前一年皮亚诺先造出了第一条,只有算式;希尔伯特这一条给了图,也更合用)。谷歌的 S2 索引至今就按它给地球编号。结果还要落到一个个区里:「这家店在不在这个商圈」是拿店的坐标与商圈那条闭折线去比,比法是从这一点向外发一条射线、数它穿过折线几次,奇数在里、偶数在外——那正是 1887 年为证明「闭曲线把平面分成内外两块」写下的那一段。查出来的一堆结果按什么次序排?最出名的那套排法把整个网当成一串首尾相连的试验:一个人随手点链接,走久了停在每个页面上的概率就是它的分数。这件事凭什么算得出来、又凭什么算得快,答案 1906 年就写好了——只要每一步都掺一点「随便跳到别处」,前后两次分布的差距每轮至少按同一个固定的倍数往下掉。那个所谓的阻尼因子,管的正是这个倍数。
- 14:00
打开一个 3D 游戏
画面里的光照、烟雾、水面,背后都是在解偏微分方程。通用的做法只有一句话:先解出一个点源的响应,再把一切叠起来。想出这句话的是个磨坊主的儿子,一生只上过一年学。
- 15:00
陪家人做个 CT
机器绕着你转一圈,拿到的只是一堆投影;要把它还原成一张断层图,本质是把积分反过来解。「知道一个平面上每一条直线上的积分,能不能倒推出整张图」,1917 年有人证明能,还写出了式子——四十多年后造 CT 的人重新解了一遍,才知道早有人答过。而「算出一条曲线围住多少面积」这件事,两千二百年前有人第一次做成——用的是穷竭法,没有极限的概念。反过来解还有一道关:投影里的一点点噪声,会不会在还原出来的图上长成一片假的影子?1902 年有人把这道关写成了一条规矩——一个问题要算得,除了解存在、解唯一,还得解连续地依赖于数据;他举的例子里,数据要多接近零就有多接近零,解却大得没边。今天每一台 CT 的重建都要先按这一条把噪声摁住。今天压住这种假影子的常用办法叫「全变差最小」:在所有对得上投影的图里,挑上上下下摆动总量最小的那一张——而「摆动的总量」是 1881 年那三页短札里第一次被写成一个数的。图上的器官轮廓如今常由程序自动勾出来,勾得准不准,比的是它与医生手画的那一圈之间最远差多少——那个「两边各取最远、再取较大者」的距离,1914 年写进了一本集合论的教科书。
- 15:30
顺便做了个基因检测
报告上说你在某个位点是杂合型。实验室把这份数据交给你之前先过了一道质控:把几十万个位点逐个拿出来,看三种基因型的比例对不对得上「随机交配下本该有的样子」——对不上的位点多半是测错了,直接丢掉。这条「本该有的样子」出自 1908 年一封一页半的读者来信,写信的是个剑桥的纯数学家,被一起打板球的同事问住了,就用一行乘法把话说完了:不论从什么比例出发,一代之后就不再变。报告后面还会写「身高有八成由遗传决定」这类话——这个「几成」是把方差拆成几份相加算出来的,「方差」这个词本身就是 1918 年为了调和孟德尔的离散因子与身高的连续变异才起的。
- 16:00
顺手想了一下:这些东西到底怎么算的
最后都是 0 和 1。二进制不是为机器发明的——1703 年它被发表时,作者还在论文里附了六十四卦,认为这是中国古人早就懂的东西。机器要再等两百四十年。只拿 1、2、4、8 做乘除,还要更早:1617 年有人在棋盘上这么算过,竖走一格值翻倍、斜走值不变,全凭把棋子挪来挪去。而这台机器之所以什么都能干,靠的是 1936 年的另一句话:机器的描述本身也可以当成数据放进去。落到电路上是 1945 年的事:指令和数字放进同一块存储器,于是一段程序可以伸手把自己改掉,今天的编译器与操作系统全从这一条长出来。至于 0 本身——它能当成一个数去加减乘除,而不只是一个占位的圈,是 628 年才被写成法则的。那一次唯独除法没写对:零除以零被说成零,正数除以零只写成「一个以零为分母的分数」。补上这一句要再等五百年——那是一个无穷量。今天芯片里的浮点数正好照这条分界线办:正数除以零给出 Infinity,零除以零给出 NaN。算平方根的时候,不少程序跑的还是公元一世纪那个办法:猜一个数,拿它和「被开方数除以它」取平均,再取平均,每做一次对的位数翻一倍。至于 0 和 1 之间怎么变出加法:本位是「恰好一个为真」,进位是「两个都为真」,两个逻辑门就够了——而把「与、或、非」写成 0 和 1 上的算术,是 1847 年一个连学位都没有的小学校长做的事。乘法呢?芯片里也不真去背九九表:乘一个常数拆成几次移位加减,乘 9 就是左移一位再减去自己一遍。同一个主意八百年前写在算筹的书里——「九乘者损一,十去其一即九」,那本书还顺手把乘数折成 1 开头,好让乘法整个变成加法。开立方、开四次方呢?库函数里那套逐位逼近的祖先更老:十一世纪开封有人把开方写成一串「乘下法入廉、乘廉入方」,只有乘和加,开几次方都是同一套动作,连一张系数表都是只用加法加出来的。
- 17:30
下班,扫码骑车
二维码被蹭掉一角、沾上泥点,照样扫得出来:里面存着有限域上的纠错码。造出有限域的人二十岁死于决斗,写下这些时并不知道自己在造什么。而「纠错」这个念头本身要更晚:在那之前,码只能查出有错、查出来就停住。把它变成一件算得清的事,靠的是一步——把每个码字看成高维立方体的一个顶点,于是「能不能纠错」成了「点与点隔得够不够远」。
- 18:30
开车回家,蓝点跟着你走
GPS 卫星上的钟每天要修正几十微秒,因为时空是弯的,而描述弯曲的时空要用黎曼几何。把一堆带噪声的观测拟合成一个位置,用的则是最小二乘——他当年用它找回了一颗丢掉的小行星,而这套办法第一次印出来是 1805 年,用的例子正是一条子午线弧上的四段测量:方程比未知数多的时候怎么办。可蓝点一秒要刷新好几次,接收机并不每次都把攒下的读数整段重解一遍:它手里只带着一个估计和一张协方差表,每来一个读数改一次,旧读数用完就扔——1960 年这套递推写出来,同年秋天就被拿去算登月航线。而卫星此刻在哪儿:每颗星广播下来的星历就是一组开普勒要素,接收机拿到之后要为每颗星解一次 M = E − e sin E——四百年前为火星写下的那个方程,你的手机每秒钟要解上几十次。星历表里每十五分钟才给一个点,中间那些位置则是用一条穿过这些点的多项式插出来的。至于屏幕上那对数字本身:「用经度和纬度说清一个地点」是公元二世纪定下的规矩,那个人给八千个地方编了号,也把地球算小了六分之一——而那个偏小的数不是他自己量的,是两百年前一位斯多噶哲学家拿一颗贴着地平线的星量出来的,他手上本来还有一个更接近的答案,偏偏没选它。还有一件事在屏幕这一侧:球是摊不平的,所以那张平铺的地图必须先挑一样保住——保角,还是保面积,两者不可兼得,这句话是 1772 年第一次被说清楚的;同一篇文章里给出的横轴墨卡托,正是今天各国地形图与坐标网格用的那一种。那几十微秒还得拆开看:卫星以每秒近四公里的速度绕地球跑,光这一项就让它的钟每天慢约 7 微秒——钟走过的不是「时间」,是它自己那条世界线在时空里的长度,1908 年有人把空间与时间画进同一张图,给这个长度起了名字叫固有时。
- 19:10
订明年的票,日历弹出一句「2028 年 2 月 29 日」
四年一闰、逢百不闰、逢四百又闰——这套规矩 1582 年才定下,为的是把一年的长度凑到 365.2425 日。五百年前另有一部历把它凑成 365 + 8/33,比这还准一点;定它的人白天在天文台量春分,夜里写四行诗。再往前,中国的历法不写小数,一切数都摊在同一个分母上:727 年那一部取三千零四十,于是朔望月只能写成 89773/3040——凑出来差今值 0.26 秒,而同一个分母下的年长却长了三分钟,多出来的那三分钟一秒不差地等于岁差少算的那一截。
- 20:00
把手机横过来,画面跟着转
陀螺仪量的是角动量。角动量为什么守恒?因为把整个系统转过任意角度,物理定律都不变。「对称」与「守恒」是同一件事的两面——这条定理是她证的,1918 年。转过去之后画面没变形,也是同一个问法的另一半:允许做的动作定下来,剩下哪些量不变,就定下了你在做哪一门几何。这句话 1872 年由一个二十三岁的新教授写在一本小册子里,当时几乎没人理会。陀螺仪每隔几毫秒报一次「刚才转了多少」,姿态要一小步一小步积出来;而两个小转动先后一换,就差出一个二阶的小转动,算法里得专门补上这一项——那一项是两个无穷小变换的括号,1874 年就写下了。另有一件事排在陀螺仪前面:量「转了多少」,先得说清什么叫「没转」。平面上这不成问题,弯曲的面上却要专门规定——拿着一支箭头「不转」地沿纬线走一圈,回到起点它转过了一个角,这个角恰是那圈纬线围住的面积;傅科摆每天相对地面转过的,正是同一个数。
- 21:00
视频网站又猜中了你想看什么
推荐这件事的老底子是一张大表:几千万人乘几十万部片子,绝大多数格子是空的。把这张表拆成「转一下、拉一下、再转一下」三块,只留下中间那几个最大的数,几千万乘几十万就压成了每人几十个数、每部片子几十个数——两串数一乘就是猜你会不会喜欢。这个拆法 1873 年就写下来了,出处是一份给大学生看的刊物上的一篇小文章。训练模型本身则是另一件事:在一个几百万维的曲面上一步步往下走,找最低点。「在所有可能的走法里挑出最好的那一种」这个问法,最早的样板是一道题——一颗珠子沿什么形状的滑道下落最快。
- 21:30
打一局游戏,飞机在天上翻了个身
引擎里存的不是「偏航多少度、俯仰多少度」——那套写法在机头朝天时会卡死,两根轴重合,飞机转不出去。它存的是四个数,1843 年一个人在都柏林的桥上想出来的:为了给三维空间做乘法,他放弃了 ab = ba。同一局里你打出去的那一炮,瞄高一点还是低一点:没有空气时 45° 最远,与它互余的两个仰角落在同一点——这两句话都写在 1537 年一本给炮手的书里,作者自称一辈子没开过一炮。有人还真拿钱赌过一回,而赌局报回来的两个数里藏着空气阻力。
- 22:00
无聊,查一下 π 有多少位
今天算 π 用的式子收敛得荒谬地快:第一项就对到小数点后六位,之后每加一项稳定地再买八位。写下它的人没有给证明——他说,是女神在梦里告诉他的。而「用一个无穷的式子把 π 写出来」这个念头本身,欧洲是 1593 年才第一次落笔的;喀拉拉早两百年就写下了另一条,而且写它的人知道那条式子慢得没法用,于是在截断处补了一个修正项。再往前就只能硬算:五世纪有人用算筹把 π 夹进 3.1415926 与 3.1415927 之间,还留下一个分母只有 113 的分数——那个纪录保持了九百年。硬算的那条路上,最后一个走到头的人在撒马尔罕:他先定下「算一个直径六十万倍地球的圆,周长错不过一根马鬃」,再倒推该切多少边,答案是八亿零五百三十万边,十六位小数。而「π 到底是不是一个分数」这个问题,要到 1767 年才有人答上来:办法不是算它,是拿辗转相除去除两条级数——商一个接一个出来,永远停不下来。再往前一步——π 连代数方程的根都不是——得先有人证明世上有这样的数:1844 年有人造出了第一批,其中一个是 0.110001000…,第 1、2、6、24、120 位是 1,它被分数逼得太近,近到任何一个整系数方程都容不下它;π 本身要等到 1882 年。级数慢,还有一条不硬算的路:只老老实实加前几项,把其余无穷多项夹在两个算得出来的界之间——1834 年一位中学教师就这样只加了十项,把 1 + 1/8 + 1/27 + … 定到了小数点后十四位,而硬加要一千万项以上。硬算的那条路上还有一个聪明的走法:日本的一位算家把内接多边形加倍到十三万边,周长只准到第九位——他没有再切,而是拿最后三档的两个差一除,一步外推到第十八位上下,书在他身后 1712 年印出。算出来的这些位还被拿去问过一个哲学问题:1923 年有人拿「π 里第一次出现 0123456789 的位置」造了一个实数,说没有人能断言它是正、是负还是零——1997 年这串数在第 17 387 594 880 位被找到,那个数于是是正的;可他要说的是「现在知不知道」,那句话换一串数照样成立。
- 22:30
关灯前到阳台上,举起手机对着星空
星图 App 把星座一颗颗标出来。它的星表里写着「J2000」——星空每年都在滑,坐标得注明是哪一年的,再按岁差推到今晚。第一个发现星空在滑的人,比对的是一百五十年前别人记下的一颗星。每颗星旁边还有个数,数越小越亮,每差一等亮两倍半:这把尺子是两千年前凭肉眼排的,1856 年才被写成对数。App 用的底子之一叫依巴谷星表,那颗卫星的名字就取自他。从托勒密到十五世纪,一千三百年里没有第二份重新量过的星表;补上这一空白的那一份有一千零十八条,而它最难得的是作者自己写明了哪二十七条不是他量的——太靠南,在他那座城里升不起来。五百年后拿依巴谷星表逐条回算,这句话站得住:他自己量的差二十五角分,抄来的差一百一十五角分。要是屏幕上正好标着火星,再点一下「未来三个月」:它会在群星间停住、倒退一段、再往前走。这件事是希腊天文学两千年的主线问题,最早的答案是让两个球反着转,行星就在天上画一个八字——那套模型对木星土星管用,偏偏对火星和金星不管用。还有一件事屏幕上看不出来:这些星有多远,是怎么知道的?靠半年前后方向偏的那一点点,叫视差。1829 年有人把它反过来用,去问一个更大的问题——如果空间本身是弯的,那么再远的星,视差也降不到零;他手上最小的那个视差,于是给空间的曲率半径定了一个下界。同一条路今天走到了宇宙学。还有一件事今晚就看得见:星星整夜向西走。五世纪有人说过这不是星在走,是你脚下在转,还顺手把一日的长度定死到了小数点后三位——你手里这只手机的钟,守的正是同一个数。屏幕边上偶尔划过一个不闪的亮点,那是卫星。它从停泊轨道被推到今天这条轨道上,发动机什么时候点火、什么时候关,是按一条 1956 年的原理排的:推力有上限时,最优的推力程序常常只取两个极端,中间在一条算得出来的开关线上换挡。
- 23:00
睡前刷到一条新闻:某某问题被证明无解
有些问题不是还没算出来,而是被证明了「在这套规则里算不出来」。这一招最早的样子短到几行:把清单沿对角线走一遍,逐位改掉,造出的新数一定不在清单上。哥德尔与图灵用的都是它。