差分机
十九世纪的航海、天文和工程都靠印好的数表,而这些表是人算、人抄、人排版的,处处有错。巴贝奇设计了一台只做加法的机器,把算和印都交给齿轮。这里的模型是他的二号差分机,照伦敦科学博物馆按他 1847–49 年的图纸造出的那台做:青铜数字轮、铁架、钢的进位臂,一侧是曲柄和凸轮组,另一侧是打印和铸版装置。
向下滚动
表里的错
十九世纪初,算对数、三角函数、天文位置都要查印好的数表。数学家、航海者、工程师、测量员和银行家都用它们。表是一群人手算的,再经过抄写、排字和印刷,每一步都可能出错。
1821 年,巴贝奇和朋友赫歇尔核对一份手算的天文表,错处多得让他说:「真希望这些计算是用蒸汽完成的。」他后来说,表里的错让政府损失了两三百万英镑,还让船只搁浅。
只用加法
多项式有一个性质:依次相减,n 次多项式的第 n 阶差是常数。以 x² + x + 41 为例,相邻两个值相差 2、4、6、8……,这些差再相减,处处是 2。
反过来,只要知道开头的值和各阶差,后面的整张表都能用加法得到:把 2 加到一阶差上,再把一阶差加到值上。不用乘,也不用除。机器只需要会做加法。
x² + x + 41 的差分表:二阶差都是 2,往下每一行只用两次加法
八列数字轮
一个数是一列 31 个青铜数字轮,个位在最下面。每个轮子 40 个齿,筒身上刻着四遍 0 到 9,转过一个齿就是加 1。轮子前面有刻线指着当前的数字。
一共八列:最左边是结果,右边依次是一阶到七阶差。所以它能算到七次多项式,每个数 31 位。次数低的多项式,用不到的列都放 0。
两拍一个结果
每一次加法,右边一列的轮子往回转到 0,左边一列的轮子就往前转同样多格,这叫「给出」;给出的数随后再还原回去。轮子之间的扇形齿轮把转动传过去。
机器不是一列一列地往左加。一个循环分两拍:前半拍,七、五、三、一阶差同时加到左边的列上;后半拍,六、四、二阶差同时加到左边。开头的数要按这个节奏错开摆好。前半拍一结束,结果列上就是新的值。
这一切由右边的曲柄带动。曲柄带一个 14 齿的小齿轮推动 56 齿的大齿轮,转四圈是一个循环;一摞 28 片凸轮按节拍抬起、转动、推动各列的轴。
进位
一个轮子在给出时从 9 转到 0,它不马上进位,而是顶开旁边一根进位杆,记下「欠一位」。
等加法做完,每列后面那根进位轴转起来。轴上 30 根进位臂排成螺旋,每根差 22.5°,从下往上依次扫过各个进位杆:被顶开的杆,把上面的轮子推前一个齿。如果这一推又让它从 9 变成 0,再上面一根杆被顶开,下一根臂接着处理。进位轴转两圈,一串连续的进位也能一路传到顶。
直接印出来
结果列的数经过一组齿条和竖轴传到左边的输出装置。它每个循环在纸卷上印一行带墨的结果,同时用打孔轮把数字压进托盘里的软材料(例如湿石膏),做成铸版的模子。
印和压只取结果的低 30 位。行距、列数、页边都能预先设定,一页满了机器自己停下。从算到出版,中间没有人抄写,也没有人排字。
拆开来看
上半部是八列数字轮,列与列之间是扇形齿轮的轴,后面是带螺旋进位臂的进位轴。下半部是抬起和转动这些轴的拉杆、齿条和曲柄杆。
右边是控制部分:凸轮组、大小齿轮和曲柄。左边是输出装置:纸卷、墨辊、30 个印字轮,下面是铸版托盘和带动托盘的落锤。整台机器约 8000 个零件,计算和输出各占一半。
一百五十年后造出来
巴贝奇 1822 年发表了差分机的设想,英国政府出资,由工匠克莱门特制造一号差分机。1832 年装好了一段,约 2000 个零件,是整机计算部分的七分之一,巴贝奇拿它做演示。1833 年双方纠纷,工程停下,财政部一共花了 17500 英镑。
1847 到 1849 年,巴贝奇画出二号差分机:零件只要一号的三分之一,算得却一样多。1852 年他把图纸献给政府,没有被接受。1985 年起,伦敦科学博物馆照原图建造:计算部分 1991 年完成,正赶上巴贝奇诞辰两百年;打印和铸版装置 2002 年完成。整机重约 5 吨,长 3.4 米,高 2.1 米。第二台为私人收藏者制造,2008 到 2016 年在美国计算机历史博物馆展出演示。
他在世时,瑞典的舍茨父子按差分的思路造出了能用的机器:1843 年做出样机,1853 年完成金属的一台;1859 年伦敦的唐金公司为英国政府造了一台,用来算 1864 年的英格兰生命表。
它改变了什么
二号差分机证明巴贝奇的设计是可行的:照十九世纪工场能达到的精度做出来,它能算,而且算得对。建造时发现图纸上进位警示的布置有一处错,照图做会卡住;建造者把奇数列的机构做成镜像,问题就解决了,设计本身不受影响。所以真机上奇数列和偶数列的数字刻的方向相反。
它把「算」变成了一个确定的机械过程:数是轮子的位置,加法是转动,进位有自己的时段。每个轮子都被锁在整数位置上,停在两个数之间的轮子会让机器卡住,而不是给出错数。巴贝奇说,有了这些安全装置,机器可能坏、可能卡,但不会骗人。设计它之前,他已经构想了更通用的分析机。
自己摇
选一个多项式,摇动曲柄(或推动拉杆让它自己转),看各列相加、结果印出来。把一根进位杆扳到「断开」,看错误从哪里开始,又怎样一直带下去。
试一试选 x² + x + 41,把结果列个位到十位的进位杆扳到「断开」,再摇:第几个结果开始错?错了多少?
模型省略了什么
模型的整体尺寸、八列 31 个数字轮、40 齿和四遍刻度、14 齿与 56 齿的减速、28 片凸轮、30 根螺旋进位臂和 22.5° 的间距都按科学博物馆的资料做;列距、下半部的拉杆和齿条、输出装置的形状是按比例画的示意,不是照图纸。没有画出数字轮的锁、给出时轴的抬起、轮子上的驱动与警示凸块、复位挡块和输出装置内部的凸轮。真机上奇数列和偶数列的数字刻的方向相反,模型里都一样。一个循环里各动作的时刻是简化的,顺序与博物馆的时序图一致:先给出,再进位,给出的数在同一个半拍里还原。实验室里结果是按真机的规则算出来的,但只显示较低的几位。
几个常见的误解
差分机不是通用计算机:它只做加法,只能制表,算的是多项式(或用多项式逼近的函数)。能编程的通用机器是巴贝奇后来设计的分析机,从没造出来。二号差分机巴贝奇生前没有造;一号也只完成了一段。科学博物馆造的那台不是「复制品」,而是第一次照原设计造出完整的机器。它用手摇,不用蒸汽。
资料来源
- 科学博物馆集团:二号差分机(1847–49 年设计,1991 年完成主体,2002 年加上打印装置;铁、钢、青铜;2.1 × 3.4 × 0.5 米;数字轮 25 × 105 毫米)
- Doron Swade:Charles Babbage’s Difference Engine No. 2, Technical Description(科学博物馆,2020):5 吨、8000 个零件、八列 31 位、40 齿四遍刻度、奇偶半拍、给出与进位、螺旋进位臂、凸轮组与 4:1 减速、印 30 位与铸版
- Doron Swade:Difference Engine No. 2 User Manual(科学博物馆,2013)
- 科学博物馆:巴贝奇的差分机与科学博物馆(数表与错误、1822 年的论文、一号机的一段、17500 英镑)
- 科学博物馆集团:一号差分机的一段(1832 年,克莱门特,约 2000 个零件,整机的七分之一)
- 科学博物馆集团:舍茨差分机第三型(1859 年,唐金公司,用于 1864 年英格兰生命表)
- 计算机历史博物馆:巴贝奇的机器(31 位、七阶)
- 计算机历史博物馆:差分法的原理
- 计算机历史博物馆:历史(1821 年与赫歇尔、克莱门特、舍茨 1843、1853、1859)
- 计算机历史博物馆:现代的续篇(建造、第二台、2008–2016 年展出)
本页的文字、图片和模型采用 CC BY-NC 4.0 许可:可以免费用于教学和其他非商业用途,可以修改,请注明出自 world.lapla.si。上面列出的第三方素材仍按各自的许可。



