差分機

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

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

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

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

 運作原理 
差分机（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」就进行除法运算。此外，巴贝奇也构思了送入和取出数据的机构，以及在「仓库」和「作坊」之间不断往返运输数据的部件。

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

相關條目
分析機

DE
D
DE
DE