從連續世界到離散機器#
計算數學並不是「用電腦算數學」這麼簡單的一句話。它的核心,是一場跨越三百年的思想轉換:人類先在紙上用連續的數學——函數、微分方程、積分——描述世界,然後被迫把這些連續的物件切成離散的、機器能夠處理的有限片段。這個「連續到離散」的轉換,既是技術問題,也是哲學問題。本章從手算時代說起,走到 ENIAC 與蒙地卡羅方法誕生的那一刻,說明計算數學的本質究竟是什麼。
手算時代的連續數學#
1687 年,牛頓出版《自然哲學的數學原理》,用幾何與極限的語言寫下萬有引力與運動定律。牛頓本人其實極度厭惡無限逼近式的計算——他偏好優雅的幾何證明。但他的方法論(後來被萊布尼茨系統化為微積分)開啟了一個根本困境:微積分能寫下行星軌道方程,卻不保證你能「算出」答案。三體問題從十八世紀起就是臭名昭著的例子——方程寫得出來,精確解不存在,唯一的出路是逐步逼近的數值計算。
歐拉是把計算推向極限的第一人。他一生發表了約八百五十篇論文與著作,晚年雙目失明,仍靠心算與記憶口述完成大量工作。他為了求解偏微分方程而發明的許多技巧——例如用差分逼近導數(今天課本裡的「歐拉法」)、用三角級數展開函數(傅立葉級數的前身)——本質上都是在做同一件事:把連續的對象離散化。歐拉計算月球的運動是出了名的:他手工解月球運動方程,被同時代人戲稱為「算得頭髮都白了」。1772 年他與拉格朗日等人參與的法國科學院月球理論競賽,其成果直接服務於航海經度測定——這是計算數學第一次與經濟、軍事需求深度綁定。
十八、十九世紀的政府與科學機構是早期「算力」的提供者。法國 1795 年前後由拉普拉斯、拉格朗日主導的度量衡委員會與經度局(Bureau des Longitudes),僱用了大批計算人員編製航海與天文曆表。1840 年代,英國的 Babbage 因為厭倦人工計算航海表的錯誤(據他自己估計,星曆表裡的錯誤多到「無法信賴任何一頁」),設計了差分機與分析機。分析機雖然在他有生之年沒有建成,但 Ada Lovelace 為它寫下的程式筆記,預示了「機器執行演算法」的完整概念。算力不足推動機器發明,機器發明又反過來要求新的數學——這個循環至今仍在運轉。
人工計算員:一個被遺忘的職業#
在電子計算機出現之前,「computer」是一個職業稱謂,指以計算為業的人。十九世紀後半,歐美各國的天文台、保險公司、統計局大量僱用計算員。哈佛大學天文台在十九世紀末以時薪約 25 至 30 美分僱用女性計算員處理恆星光譜底片,這批被稱為「Harvard Computers」的女性——包括 Annie Jump Cannon 與 Henrietta Swan Leavitt——不只計算,還做出了改變天文學的分類體系與造父變星週光關係。計算工作在當時被視為機械、低階勞動,女性被認為「適合」從事;歷史的反諷是,這種歧視性的分工反而造就了一整代傑出的天文數據分析家。
這個現象在二十世紀達到高峰。1935 年成立的蘭利實驗室(Langley Memorial Aeronautical Laboratory,NACA 的前身,即 NASA 的前身)僱用大批女性數學畢業生擔任計算員。二戰爆發後人力短缺,1943 年起開始招募非裔女性計算員,她們在隔離的工作區(俗稱「West Area Computers」)工作。其中 Dorothy Vaughan、Mary Jackson、Katherine Johnson 等人的計算,直接支撐了美國的水星與阿波羅計畫——Katherine Johnson 在 1969 年阿波羅 11 號任務中驗算的,正是登月艙返回軌道的數值軌跡計算,約翰·格倫在 1962 年友誼 7 號任務前還特別要求「讓那個女孩(指她)用電子計算機驗算一遍才肯飛」。她們的故事在 2016 年出版的小說與改編電影《關鍵少數》(Hidden Figures)中廣為人知。值得注意的是:當電子計算機進場時,這些最懂數值方法的計算員,正是最早一批轉型為「程式設計師」的人——數值分析與程式設計從一開始就是同一門手藝。
另一條線在英國。建立於十八世紀的皇家海軍 Edmonds 之外,各國海軍砲術學校在兩次大戰期間培養了大量以彈道表為業的計算人員。彈道表的製作是純粹的計算數學:給定砲管仰角、初速、空氣阻力模型,用數值積分算出砲彈軌跡,列成表格。每一發新式砲彈意味著數千小時的手工計算。正是這個需求,直接催生了 ENIAC。
ENIAC 與 Los Alamos:離散機器的誕生#
ENIAC(Electronic Numerical Integrator and Computer)於 1945 年底在賓夕法尼亞大學建成,官方公開則在 1946 年 2 月。它的合約來自陸軍彈道研究實驗室(Ballistic Research Laboratory),目的就是自動化彈道表計算——過去一台差分分析儀加一批人工計算員算一條彈道要數十小時,ENIAC 幾秒鐘就能完成。負責把它「程式化」的是六位女性數學家(Jean Bartik、Kay McNulty 等人),她們沒有程式語言、沒有教科書,只能靠閱讀電路圖把數值積分的流程硬塞進機器的接線與開關裡。這六人後來被稱為「ENIAC 六姝」,是歷史上第一代程式設計師。
但真正讓 ENIAC 進入數學史關鍵時刻的,是戰後的氫彈研究。1946 年前後,馮紐曼(John von Neumann)開始關注 ENIAC 能否用於流體力學與中子擴散計算。1947 年,烏拉姆(Stanisław Ulam)在病中玩接龍紙牌時,想到可以用重複隨機抽樣估計事件發生的機率——這個想法他與馮紐曼討論後,被馮紐曼立刻轉化為中子輸送的統計模擬方案。由於這套方法依賴隨機數,Metropolis(Nicholas Metropolis)提議以蒙地卡羅賭場為其命名。馮紐曼在 1947 年寫下的蒙特卡羅計畫備忘錄中,甚至已經詳細規劃了偽隨機數產生器(平方取中法)的細節。
蒙地卡羅方法在思想上意味著一個徹底的轉向:面對無法解析求解的連續偏微分方程(中子擴散、流體、後來的一切),與其在解析解上徒勞,不如把連續的問題離散成大量隨機樣本,用統計收斂性換取答案。1948 年起,Los Alamos 的一批數學家(包含 Metropolis、Richtmyer,以及到訪的 Forsythe)用 ENIAC 與後續的 MANIAC 機器做蒙地卡羅計算;著名的 1948 年「蒙地卡羅ENIAC 會議」聚集了十多位數學家,連續數週在機器上除錯與試算,這被視為數值分析史上第一次「計算實驗」的大型協作。
這段歷史也塑造了計算數學的兩個永恆主題。第一,機器的存在改變了數學:馮紐曼在 1947 年與 Goldstine 合寫的著名論文〈論高斯消去法的捨入誤差〉,首次系統地分析了有限精度算術下的數值穩定性——連續數學裡正確的演算法,在離散機器上可能完全失效。第二,應用驅動一切:氫彈、航空、氣象(1950 年 Charney、馮紐曼與挪威氣象學家 R. Fjørtoft 用 ENIAC 完成了歷史上第一次成功的數值天氣預報)——每一個大問題都逼出一批新演算法與新數學。
連續到離散的本質轉換#
回顧這條線索:牛頓與歐拉的連續數學給出了世界的精確語言;人工計算員時代證明了語言本身不足以回答問題,必須有「算的程序」;ENIAC 與蒙地卡羅則完成了最後一步——把程序交給機器,並且承認答案永遠帶著離散化與有限精度的印記。
這個轉換留下三個無法迴避的問題,它們貫穿全書。第一,離散化是否忠實:把微分方程切成差分、把積分切成求和,切法對了答案才對,這是收斂性與穩定性的問題。第二,有限精度是否可靠:機器用有限的位元表示實數,捨入誤差會在迭代中放大或衰減,這是數值穩定性的問題。第三,有限的計算量是否夠用:樣本要多大、網格要多密、迭代要幾步,這是複雜度的問題。
計算數學就是在這三個問題上,連接連續世界與離散機器的橋樑。它不是數學的墊腳石,而是一門有自己理論、自己的美、自己的歷史傷疤(例如 Patriot 飛彈因浮點累積誤差導致的 1991 年 Dhahran 事故)的學科。接下來一章,我們看看當機器的算力以指數速度成長時,這三個問題如何被重新定義——以及為什麼算力永遠不能取代結構。