热门问题
时间线
聊天
视角
差分機
来自维基百科,自由的百科全书
Remove ads
差分機(Difference engine),是英國科學家查爾斯·巴貝奇研發的自動化數學機器。
此條目沒有列出任何參考或來源。 (2015年5月25日) |


差分機一號
巴貝奇設計計算機器的基本想法是利用「機器」將計算到印刷的過程全部自動化,全面去除人為疏失(如:計算錯誤、抄寫錯誤、校對錯誤、印製錯誤等)。而差分機一號(Difference Engine No.1)則是利用N次多項式求值會有共通的N次階差的特性,以齒輪運轉,帶動十進位的數值相加減、進位。
差分機一號(Difference Engine No.1)由英國政府出資,工匠約瑟夫·克萊芒打造,預計完工需要25,000個零件(大致均分在計算和印刷兩部份),重達4噸,可計算到第六階差,最高可以存16位數(相當於千兆的數)。但因為大量精密零件製造困難,加上巴貝奇不停地邊製造邊修改設計,從1822到1832年的十年間,巴貝奇只能拿出完成品的1/7部份來展示,不過差分機運轉的精密程度仍令當時的人們嘆為觀止,至今依然是人類踏進科技的一個重大起步。
巴貝奇不斷延後完成期限的嚴重超支(英國政府在1842年的最後清算發現整個計畫一共讓國庫支出了£17,500)、製作過程不斷修改設計、時常與克萊芒發生衝突等諸多原因,讓完整的差分機一號一直未能完成,一萬兩千多個還沒用到的精密零件後來都被熔解報廢。
Remove ads
運作原理

差分機(Difference Engine)的運作原理可以簡化為一台多項式求值機。對於一個N次多項式,只要將N+1個初始值輸入機器,機器每完成一輪運算,就能產生出一個新的多項式值。
多項式的差分法是差分機運作的核心數學原理。對於一個給定的多項式 F(x),其在 x 和 x+1 處的函數值之差 F(x+1) - F(x),稱為其一階差分(First difference)。
如果一階差分對於不同的 x 值不恆為常數,我們可以繼續對一階差分的結果再做一次差分,從而得到二階差分(Second difference)。
對於一個N次多項式,其N階差分將是一個常數。這意味著第N+1階及以上的差分恆為零。差分機所需要的N+1個初始值,正是函數在初始點(例如 x=0)的函數值,以及其一階、二階、直至N階差分的值。
為了更清晰地描述這個規律,我們可以定義一階差分算子 \Delta: :\Delta F(x) = F(x+1) - F(x)
由此,二階差分就是對一階差分再進行一次差分運算: :\Delta^2 F(x) = \Delta(\Delta F(x)) = \Delta(F(x+1) - F(x)) = (F(x+2)-F(x+1)) - (F(x+1)-F(x))
這個過程利用了二項式定理的性質。對於多項式中的任意一項 a_r x^r,其一階差分為: :\Delta(a_r x^r) = a_r(x+1)^r - a_r x^r = a_r(x^r + rx^{r-1} + \dots + 1) - a_r x^r = a_r(rx^{r-1} + \dots)
可以觀察到,每進行一次差分運算,多項式的最高次項就會被消除,使得多項式的次數降低一。重複這個過程N次後,原有的N次多項式最終會變成一個常數。
== 一個例子 == 以二次多項式 F(x) = x^2 + 4 為例。我們可以計算出其在連續整數點的一階差分: : F(1) - F(0) = (1^2+4) - (0^2+4) = 5 - 4 = 1 : F(2) - F(1) = (2^2+4) - (1^2+4) = 8 - 5 = 3 : F(3) - F(2) = (3^2+4) - (2^2+4) = 13 - 8 = 5
由於一階差分(1, 3, 5, ...)不為常數,我們繼續計算二階差分: : (F(2)-F(1)) - (F(1)-F(0)) = 3 - 1 = 2 : (F(3)-F(2)) - (F(2)-F(1)) = 5 - 3 = 2 可以看到,其二階差分為一個常數2。
我們也可以用代數方法來分析。其一階差分函數為: :\Delta F(x) = ((x+1)^2 + 4) - (x^2 + 4) = (x^2 + 2x + 1 + 4) - (x^2 + 4) = 2x + 1 其二階差分函數為: :\Delta^2 F(x) = \Delta(2x+1) = (2(x+1)+1) - (2x+1) = (2x+3) - (2x+1) = 2
這再次證明,對於二次多項式,x^2 項在一次差分後被消除,x 項在二次差分後被消除,最終得到一個常數。
== 機械實現 == 差分機通過機械結構將差分法自動化。機器內部設置了多個暫存器(Register),每個暫存器存儲一個特定階的差分值。我們可以將存儲第n階差分的暫存器記為 \Delta^n。第0階暫存器 \Delta^0 則存儲多項式本身的函數值 F(x)。
機器運算時,通過一系列齒輪和連杆的精密協作,實現重複的加法。其核心運算規則如下: 每一個低階暫存器的新值,等於其本身舊值與相鄰高一階暫存器舊值的和。 即: :F(x+1) = F(x) + \Delta F(x) :\Delta F(x+1) = \Delta F(x) + \Delta^2 F(x) :\dots :\Delta^{N-1} F(x+1) = \Delta^{N-1} F(x) + \Delta^N F(x)
由於最高階差分 \Delta^N 是一個常數,其對應的暫存器值在整個計算過程中保持不變。
在一個運算周期中,機器的運算從最高階差分 \Delta^N 開始,將其值加到 \Delta^{N-1} 暫存器上,更新 \Delta^{N-1} 的值。接著,將更新後的 \Delta^{N-1} 值加到 \Delta^{N-2} 上,以此類推,逐級向下傳遞,直到最後將更新後的 \Delta^1 值加到 \Delta^0</text{ (F(x))} 暫存器上,從而得到新的函數值 F(x+1)。
因此,只要預先將多項式在某個初始點(如 x=0)的各階差分值設定在對應的暫存器中,差分機每轉動一圈(完成一個運算周期),\Delta^0 暫存器上就會自動計算出多項式在下一個整數點 x=1, 2, 3, \dots 的對應值。
在機械方面,巴貝奇差分機是用蒸汽機為動力,驅動大量的齒輪機構運轉。 巴貝奇的分析機大體上有三大部分:其一是齒輪式的「存貯庫」,巴貝奇稱它為「倉庫」(Store),每個齒輪可貯存10個數,齒輪組成的陣列總共能夠儲存1000個50位數。
分析機的第二個部件是所謂「運算室」,它被巴貝奇命名為「作坊」(Mill),其基本原理與帕斯卡的轉輪相似,用齒輪間的嚙合、旋轉、平移等方式進行數字運算。為了加快運算速度,他改進了進位裝置,使得50位數加50位數的運算可完成於一次轉輪之中。第三部分巴貝奇沒有為它具體命名,其功能是以傑卡德穿孔卡中的「0」和「1」來控制運算操作的順序,類似於電腦里的控制器。
他甚至還考慮到如何使這台機器處理依條件轉移的動作,比如,第一步運算結果若是「1」,就接著做乘法,若是「0」就進行除法運算。此外,巴貝奇也構思了送入和取出數據的機構,以及在「倉庫」和「作坊」之間不斷往返運輸數據的部件。
Remove ads
差分機二號
差分機二號(或稱大型差分機)在1849年設計出來,卻在有生之年只實作了很小一部分。這台機器可以進行相當複雜的數學計算,具有31位元精度。
相關條目
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads
