差分機(Difference engine),是英國科學家查爾斯·巴貝奇研發的自動化數學機器。

差分機一號的1/7完成品
後人製造的差分機二號

差分機一號

巴貝奇設計計算機器的基本想法是利用「機器」將計算到印刷的過程全部自動化,全面去除人為疏失(如:計算錯誤、抄寫錯誤、校對錯誤、印製錯誤等)。而差分機一號(Difference Engine No.1)則是利用N次多項式求值會有共通的N次階差的特性,以齒輪運轉,帶動十進位的數值相加減、進位。

差分機一號(Difference Engine No.1)由英國政府出資,工匠约瑟夫·克莱芒英语Joseph Clement打造,預計完工需要25,000個零件(大致均分在計算和印刷兩部份),重達4噸,可計算到第六階差,最高可以存16位數(相當於千兆的數)。但因為大量精密零件製造困難,加上巴貝奇不停地邊製造邊修改設計,從1822到1832年的十年間,巴貝奇只能拿出完成品的1/7部份來展示,不過差分機運轉的精密程度仍令當時的人們嘆為觀止,至今依然是人类踏进科技的一个重大起步。

巴貝奇不斷延後完成期限的嚴重超支(英國政府在1842年的最後清算發現整個計畫一共讓國庫支出了£17,500)、製作過程不斷修改設計、時常與克莱芒發生衝突等諸多原因,讓完整的差分機一號一直未能完成,一萬兩千多個還沒用到的精密零件後來都被熔解報廢。

運作原理

簡單來說,差分機就是一台多項式求值機,只要將欲求多項式方程的前3個初始值輸入到機器裡,機器每運轉一輪,就能產生出一個值來。假設以   為例,差分機得出來的結果,就會是     ……等,直到系統停止為止。機器運作最重要的基礎,在於求出多項方程式的結果完全只需要用到加法與減法。

  這個例子中,第一步是先算出    之間的差( ),稱為第一階差(First Difference)。如果這個值和    之間的差( )不同的話,就拿這兩個第一階差再算一次差( ),稱為第二階差(Second Difference)。在這個例子裡,每一個第二階差都是  ,所以就不用再算下去了。所以可以推論出一次方程式最多只會有第一階差、二次方程式會有第二階差、  次方程則會到第   階差。而有了這個固定不變的差數後,就可以開始往前推算回去,接下來的每一個值,就是將差數和前一階的上一個值相加,即可獲得。例如求   時,先將第二階差   加上第一階差的值   得到  ,再將   加上   的值  ,就會得到  ,以此類推。不斷重複的特性卻很適合機械運算。

具体来讲巴贝奇差分机是用蒸汽机为动力,驱动大量的齿轮机构运转。 巴贝奇的分析机大体上有三大部分:其一是齿轮式的「存贮库」,巴贝奇称它为「仓库」(Store),每个齿轮可贮存10个数,齿轮组成的阵列总共能够储存1000个50位数。分析机的第二个部件是所谓「运算室」,它被巴贝奇命名为「作坊」(Mill),其基本原理与帕斯卡的转轮相似,用齿轮间的啮合、旋转、平移等方式进行数字运算。为了加快运算速度,他改进了进位装置,使得50位数加50位数的运算可完成于一次转轮之中。第三部分巴贝奇没有为它具体命名,其功能是以杰卡德穿孔卡中的「0」和「1」来控制运算操作的顺序,类似于电脑里的控制器。他甚至还考虑到如何使这台机器处理依条件转移的动作,比如,第一步运算结果若是「1」,就接着做乘法,若是「0」就进行除法运算。此外,巴贝奇也构思了送入和取出数据的机构,以及在「仓库」和「作坊」之间不断往返运输数据的部件。

差分機二號

差分機二號(或稱大型差分機)在1849年設計出來,卻在有生之年只實作了很小一部分。這台機器可以進行相當複雜的數學計算,具有31位元精度。

相關條目