開卷書摘》一個數學錯誤 險釀航空危機

地面上有四百航次延後,更有六百航次遭到取消。全都因爲一個數學錯誤。(示意圖/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。

《數學算什麼? 從錯誤中學習的實用數學》/貓頭鷹出版社