热门问题
时间线
聊天
视角

差分機

来自维基百科,自由的百科全书

差分機
Remove ads

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

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

差分機一號

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

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

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

Remove ads

運作原理

Thumb
该机器内部细节。

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

相關條目

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads