差分機(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位元精度。

相關條目 編輯