热门问题
时间线
聊天
视角

差分机

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

差分機
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