开卷书摘》一个数学错误 险酿航空危机

地面上有四百航次延后,更有六百航次遭到取消。全都因为一个数学错误。(示意图/shutterstock)

二○○四年九月十四日,在南加州的上空大约有八百架长途飞行的飞机,而一个数学错误即将危及机上数万人的性命。毫无预警,洛杉矶航空交通管制中心突然失去了所有飞机的无线电音讯。紧接而来的,是一阵理所当然的恐慌。

无线电失效了大概三个小时,在这段时间内,管制员用他们的私人手机联络其他交通管制中心,让飞机重新调整通讯。虽然没有发生意外,但是在这团混乱之中,有十架飞机靠得比法规允许距离(水平方向九点二六公里,或垂直方向六百公尺)还要近,其中有两对飞机在三公里的距离内擦身而过。地面上有四百航次延后,更有六百航次遭到取消。全都因为一个数学错误。

关于事由确切性质的官方细节很少,但是我们确实知道这是因为运转控制中心的电脑里有一个计时错误。航空交通管制系统似乎是从4,294,967,295 这个数字开始记录时间轨迹,每一毫秒倒数一次。换句话说,系统需要49 天17 小时2 分又47.296 秒让数字归零。

通常机器会在归零发生前就重新开机,再重头从4,294,967,295开始倒数。由我所知的资讯判断,有些人是知道这个潜在问题的,所以政策规定至少每三十天必须重启一次系统。但这只是一种回避问题的办法,并没有任何动作去修正潜伏的数学错误,换句话说,从来没有人去检查在系统可能的执行时间内,到底还有几毫秒可以倒数。所以,在二○○四年,系统意外连续运作了五十天,倒数终于归零,然后它就关机了。在这座世界级大城市上空的八百架飞机之所以置身险境,基本上只是因为某人没有选用一个够大的数字。

他们很快就把问题怪罪到电脑系统最近进行的一次更新,这次更新执行了Windows 作业系统的一个修改版本。Windows 作业系统的一些早期版本(特别是Windows 95)也面临一模一样的问题。不管什么时候你开启一个程式,Windows 都会每毫秒计数一次,借此提供「系统时间」来驱动所有其他的程式。但是Windows 的系统时间一旦到达4,294,967,295,就会回到零重来一次。有些程式,比如说让作业系统能和外部装置互动的驱动程式,可能会因为时间突然倒转而出现问题。为了确定装置确实有在规律回应,而且没有卡住太久,这些驱动程式会需要去记录时间轨迹。当Windows 告知驱动程式时间突然开始倒流,程式就会当机,还会带着整个系统一起挂掉。

我们并不清楚罪魁祸首是否真是Windows 的系统本身,还是管制中心内部什么新的电脑程式片段。但不管是哪一种情况,我们都知道要怪罪的是4,294,967,295 这个数字。无论是对一九九○年代的家用桌上型电脑,还是二十一世纪初期的航空交通管控用途来说,这个数字都不够大。噢对了,对二○一五年的波音七八七梦幻客机而言,这数字也不够大。

波音七八七的问题深藏在发电机的控制系统里,看来他们是使用一个计数器来记录时间的轨迹,而这个计数器每隔十毫秒就计数一次(所以一秒会算一百次),最多可以数算到2,147,483,647(很可疑的是,这个数学非常接近4,294,967,295 的一半……)。这表示波音七八七如果连续开机248 天13 小时13 分又56.47 秒,就可能会断电。这个时间够长,大多数飞机都会在问题出现之前就经历重启,但同时却又太短,还是有失去电力的可能。美国联邦航空总署描述这个问题的方式如下:

发电机控制单元内部的软体计数器会在连续供电二百四十八天之后溢位,造成控制单元进入「故障保护」模式。如果连接到安装在引擎处的发电机的四个主要控制单元同时启动,在连续供电二百四十八天之后,无论飞机处于哪个飞行阶段,四个控制单元都会同时进入故障保护模式,导致所有直流电力丧失。

我相信所谓「无论飞机处于哪个飞行阶段」,是联邦航空总署想表达「电力可能会在半空中失效哦」的官方说法。他们关于适航性的官方规范要求养护单位进行「处理断电的重复性维护工作」,也就是说,任何一个持有波音七八七飞机的人,都必须记得把飞机关机再重启。这是一个可以透过电脑程式开发人员修复的经典案例,波音公司后来更新程式修复了问题,所以现在飞机的起飞准备程序已经不再包括一次快速重开机了。

(本文摘自《数学算什么? 从错误中学习的实用数学》/猫头鹰出版社)

【内容简介】四舍五入很好用,但可能舍去的是你的银行利息?

哥伦布会发现新大陆,其实只是因为搞错距离单位?

英制公制傻傻搞不清楚,会害飞机坠机?

在市场讨价还价、股市涨跌甚至是建筑的结构都与数学密不可分,不过我们通常都是到了出错才会意识到身边也有这么多数学。除此之外,还有更多因为数学而产生的问题。在本书中,脱口秀数学家麦特•派克要带我们一一去发现这些错误背后的数学冷知识,并教会你如何运用这些经验避免危险,或是从中获利。

【作者简介】麦特‧帕克 Matt Parker

人称脱口秀数学家,经常出现在BBC、《卫报》、英国各地的舞台上、科展、科学节和剧场,跟大家谈数学。西澳大学数学系毕业,原本在澳洲教数学,现居英国戈达尔明,屋内摆着曾经制造过的几乎每一台复古电动游乐器。没有任何东西能够挡在麦特和电脑之间:他精通二进位数,几秒钟就能把你的名字写成0和1的数字串。目前他最喜欢的数字是2025。

《数学算什么? 从错误中学习的实用数学》/猫头鹰出版社