in

差分机——查尔斯·巴贾巴差分机的历史

要点

  • 数值表是一种旨在节省计算工作时间和劳动的工具。
  • 数值表是古代世界最重要的天文文档之一。
  • 在13世纪,托勒密的表格引起了卡斯提尔的阿方索国王的注意,他聚集了学者进行研究。
  • 查尔斯·巴贝奇设计了他的第一台差分引擎,用于执行繁琐而耗时的数学计算,从而生成印刷的数学表格,包括航海年鉴
  • 巴贝奇制定了几种差分引擎的计划,但由于资金问题和与他的首席工程师约瑟夫·克莱门特的冲突,没有一台得到建造。受他的工作启发,其他发明家创造出了工作的差分引擎。首先是瑞典人佩尔·乔治和爱德华·舒茨,他们在19世纪中叶制造并销售了两台工作的差分引擎。
  • 由于他在后来的发明——分析机上的工作,巴贝奇被广泛认为是“计算机之父”。尽管差分引擎仅用于计算和打印表格,但分析机是一种多功能的计算机。巴贝奇在1871年去世之前,成功建造了分析机的一部分。

查尔斯·巴贝奇,1791-1871年。摄于1871年11月4日的《伦敦新闻画报》

差分引擎

数值表是一种旨在节省计算工作时间和劳动的工具。保存下来的最古老的表格编制于公元前1800-1500年的巴比伦时期。它们被用于单位转换、乘法和除法,并被刻在粘土片上的楔形文字上。公元前1世纪,亚历山大的克劳狄乌斯·托勒密创作了关于天体运动的理论,这个理论后来以天文学大成的名字而著称。

它们成为了古代世界最重要的天文文档之一,其中包含了计算日食以及各种天文历表所需的所有表格,即指定了特定时期(如一整年的每一天)天体的位置。

在13世纪上半叶,托勒密的表格引起了卡斯提尔的阿方索国王的注意。他在托莱多聚集了众多学者,给他们任务计算新的天文表格。进行这项努力的原因据说是阿方索国王对天文学感兴趣,并在托勒密的表格中发现了许多错误。

工作始于1240年代的某个时候,历时约十年才完成。制作出的表格后来被称为阿方索表。这项巨大的成本由国王支付,他的名字与复制品一起传播到整个欧洲科学界。除了巴比伦表、托勒密的工作和阿方索表,这一时期还投入了大量的劳动来制作许多其他类型的数值表格。

随着15世纪后半叶欧洲引入印刷艺术,第一批表格开始印刷。例如,阿方索表格于1483年在威尼斯印刷。到16世纪末,出版了几本著名的算术和三角函数表。为了简化乘法运算,出版了乘法表。1614年,约翰·纳皮尔发现了对表格业务的真正“革命”,即对数学的发现。有了一张对数表,计算工作量可以大大减少。1617年,亨利·布里格斯出版了第一本对数表。

两百年后,19世纪初,数字表格仍然是欧洲最重要的计算工具。唯一的替代品是纳皮尔的骨骼和滑尺。机械计算机极为罕见,只有少数几个非常优秀的人可以将其用于严肃的计算。其中大多数只是展示人类科学进步的非凡小工具,而不是真正的计算工具。

对于需要进行复杂计算并要求高度准确性的普通计算器或科学家来说,纳皮尔的棒骨和滑尺帮助不大。实际上,他的工具是笔、纸和表格。数学、天文学、航海、物理学、工程学、统计学、贸易和金融学、军队和其他许多领域都有相关的表格。然而,出版这些表格需要大量的手工计算工作,并且最终的产品充满了错误。

在1821年的某个时候,年轻的英国数学家查尔斯·巴贝奇(查尔斯·巴贝奇的传记)产生了机械计算的想法。他给我们提供了他对机器的想法的两个版本,但是1822年写的那个版本似乎比四十年后出现在他的自传中的版本更合理。根据第一个故事,1820或1821年,天文学会分配给巴贝奇和他的朋友赫歇尔一项任务,即改进导航书《航海年鉴》的表格。

他们构建了适当的公式,并将算术交给了文员。为了减少错误,他们让两个文员分别进行两次计算。然后他们对比两组数据以查找差异。在他们繁琐的检查过程中,赫歇尔和巴贝奇发现了许多错误,而且在某一点上,巴贝奇说:“真希望这些计算是由蒸汽执行的。”“完全有可能,”赫歇尔回答道。

但是在他的自传中,巴贝奇记起了另一个版本的故事,该故事发生在1812或1813年:

“……我坐在剑桥分析学会的房间里,我的头向前倾,陷入一种梦幻般的情绪,面前摊开着一本对数表。另一个会员走进房间,看到我半睡半醒,喊道:“嗨,巴贝奇,你在做什么白日梦?”我回答说:“我在想,所有这些表格”(指对数表)“都可以用机器计算。”

无论真相如何,巴贝奇在1820年或1821年开始了他的计算机工作,设计了几种类似于钟表的机械装置,可以控制一组带有数字的轮子并在纸上打印。他制作了一个由96个轮子和24个轴组成的小模型,后来减少到18个轮子和3个轴。这台机器在1822年春末已经准备好,在6月公开宣布,并由几位天文学会的成员进行了检查。

当时,巴贝奇似乎对机械设计、机械计算以及这类机器的历史知之甚少,因为他最初考虑使用滑动杆而不是使用轮子进行加法机构,后者更自然。这种在计算机历史上“新”的机构,在运算过程中引起了严重困难,巴贝奇最终意识到了这一点。事实上,这似乎对他来说是如此的启示,以至于1822年11月,他非常庄重地指出,他决定将来始终选择圆周运动来解决这个问题。

这个工作模型有一个计算机构的部分,包括两个差分序列,但没有打印机构。他成功地计算出了第一个三十个数值,这些数值是由公式 + x + 41生成的,这是他的一个最喜欢的例子,因为它生成了很多质数。这台机器每分钟能够产生33个正确的结果,所以这些数值可以在两分半钟内制表。同年晚些时候,巴贝奇向学会写了一封信和一篇题为“计算表格机械的理论原理”的文章,发表在布鲁斯特的科学杂志上:
我设计了一种方法,使机器可以按照计算的顺序设置好字符。这样安排的目的是…任何一份由这台机器计算的表格的打印副本中都不可能存在错误。

巴贝奇还给英国皇家学会的主席亨弗里·戴维爵士写了一封关于这个普遍问题的信。在这封信中,巴贝奇指出这样一台机器对政府在制作长表格用于航海和天文学方面将会有很多优势,并提议为政府建造一台放大版的机器。

天文学会非常热情地接受了巴贝奇的建议,英国皇家学会也对他所称为“差分机”的项目报告了积极的意见,这是一种专门用于计算表格的计算机,使用“差分法”作为基础原理。

巴贝奇并不是第一个提出打印计算机的人,也不是第一个提出差分法作为适合机械化计算基础原理的人。这个荣誉应归功于德国工程师和主建筑师约翰·赫尔弗里希·穆勒,他早在1784年就描述了他基于差分法的计算机的构想,但他的想法仅仅停留在纸上。有证据表明,在某个时候,巴贝奇了解到了穆勒和他的项目,但这很可能是在1821年之后,当时他已经开始了他关于“差分机”的工作。

表a

什么是差分法的本质,它是巴贝奇第一台自动计算机的基础。让我们考虑同样的公式,由巴贝奇使用:t=x + x + 41(见上面的表a)。它生成了一系列t的值,这些值恰好是质数,如附近图中的表格中所示,其中注意到第一差值列,而与之相反的是第二差值列。如果我们取连续t值之间的差异,这些所谓的第一差值遵循一个相当简单的规则。

如果我们取差异之间的差异,即所谓的第二差值,结果更加惊人——第二差值是一个常数。有了这个知识,可以非常简单地构建表格,如表中的框所示。取第二差值,然后将其添加到第一差值中形成一个新的第一差值,4+2=6。这个过程可以被概括。在我们的例子中,第二差值是恒定的,因为函数t是一个二次函数。

如果函数t是一个三次函数,例如t = x,那么第二差值将会变化,但是第三差值,即连续第二差值之间的差异,将是恒定的。一般来说,一个n次多项式将具有一个恒定的第n次差值,每个连续的函数新值可以通过n个简单的加法得到。

差分技术的实用性大大增加了,因为任何良好连续函数的任意部分都可以用多项式来近似。部分越短,多项式的次数越高,近似越接近。所以,如果我们希望制表一个函数,如正弦函数或日落时间,只需要将函数分成足够短的间隔,并为每个间隔找到一个合适的近似多项式。

然后可以使用差分法在整个间隔上制表该函数。这个过程被称为分阶制表。巴贝奇意识到机器可以执行这个分阶制表的过程。首先,他需要一个机构来分别存储与制表值、第一差值、第二差值等相对应的数字,并且需要一个机构将每个差异加到前一个差异的值上。

在设计和建造差分机时,巴贝奇需要许多准确的零件图纸。在使用这些图纸时,他觉得它们没有充分和充分地描述机器的机制。对于一个有许多部件以各种方式运动的机器来说,静态图纸只能显示部件的形状和排列方式。所以查尔斯设计了一个机械符号系统,这个符号系统还可以显示部件的运动方式——他们的速度和连接方式。与通常的图纸不同,这种符号表示法不描述零件的形状。

相反,它是一个由数字、线条和符号组成的表格,用于描述机器的动作。它是一个可以用来描述任何机器的通用系统。查尔斯于1826年在皇家学会的《哲学交易》中发表了他的机械符号的描述,后来又在1851年发表(见机械符号的法则)。然而,这种机械符号并没有广泛使用。

在1823年的一次采访中,巴贝奇和英国财政大臣进行了一次相当模糊的口头协议,根据这个协议,政府将为这个预计需要三年完成的项目提供资金支持。巴贝奇所在的天文学会对这台机器印象深刻,于是在1824年将其授予了首个金质奖章。同年,英国政府向巴贝奇提供了1500英镑的费用,并且他开始建造完整的差分机。

巴贝奇需要一个小工厂和有能力的工人,尽管最初巴贝奇的房子的两个房间被改装成了车间,第三个房间改成了锻造车间。他雇了一位优秀的工程师约瑟夫·克莱门特来维护他店铺里的机械工作。到1828年,巴贝奇已经在建设上花费了6000多英镑,而政府只补偿了他1500英镑。在巴贝奇的皇家学会朋友的支持报告之后,政府同意填补差额。但工作进展相当缓慢。

整个计划花费的时间比任何人预期的都要长得多。虽然基本零件的制造仍在进行中,但其他零件的机械制图也需要等待。整套计划直到1830年才完成。到那时,克莱门特的工人已经生产出了成千上万的零件,但组装工作却并不多。
不久之后,巴贝奇和政府决定将计划和组装工作转移到克莱门特的店铺之外。

在巴贝奇的财产上建造了一个两层的防火车间和第二个差分机建筑。巴贝奇的意图是将克莱门特的整个业务搬到这些新的地方。然而,克莱门特反对,因为他用巴贝奇提供给他的资金大大扩展了自己的车间。他现在有很多机床和一些员工,并利用它们做了除了巴贝奇合同外的其他工作。根据当时的商业惯例,他坚持认为这些机器是属于他自己的,而不是巴贝奇或政府的。

在1832年,克莱门特的工人完成了他们所拥有零件的引擎的组装(制作了10000个零件)。尽管计算部分基本完成,但打印部分尚未完成。从那时起,再也没有进行任何工作。克莱门特不愿将他的机械设备搬到巴贝奇的店铺,直到1834年,引擎本身才被转移到那里。到那时,政府已经支出了17000英镑,而巴贝奇自己花费了六千英镑。由于克莱门特和巴贝奇分道扬镳后,政府不愿再继续进行,因为需要重新组织整个项目。

在整个计算机构的几乎所有零件都被制造出来,但在1833年初项目停工时尚未组装。在1832年,一部分计算机构被组装起来(见下图),以向皇家学会和议会委员会证明项目进展顺利,但只限于两个差分和五个数字,只适合演示目的。

它的高度大约为整个计算机构的三分之一,宽度的一半,或者整个计算机构的七分之一,由大约2000个青铜和钢铁部件组成。仅计算部分本身就比组装的小单元大7倍。整个机器预计将包含大约25000个零件,重量超过2吨,尺寸大约为高260厘米,宽230厘米,深100厘米。

这个特写显示了差分机的计算机构。

©purplexsu/shutterstock.com

差分机的设计

差分机由两个主要部分组成——计算机构和印刷和控制机构。从1830年底的立面图(图上部)和平面图(图下部)可以清楚地看到它们。计算机构在左侧,独立和表值(最右侧)以及六个差值的数字轴清晰可见。印刷机构在右侧,移动台上装有铅板和携带数字打印卡片的扇形部件都在两个图上的中间位置。

从1830年的差分机立面图(图上部)和平面图

差分机中的数字是通过水平齿轮的旋转位置表示的。一个数字由一系列绕着共同垂直轴旋转的数字轮组成。最下面的轮代表单位,下一个代表十位,下一个代表百位,依此类推。数字轮直径约为15厘米,轴上垂直间距约为7.5厘米。巴贝奇将术语“轴”用于表示一组数字轮,这些数字轮一起将一个数字存储为一组十进制数字。整个差分机包括一个用于函数表值的轴,另一个用于差值的轴,第三个用于二次差值的轴,以此类推,根据需要设置多少阶差。

差分机的一部分(来自《一个哲学家生活的片段》封面页,1864年)

每个轴不仅作为数字存储,还作为加法机构。加法分为两个步骤,下面将通过将第一差值加到表值的过程来解释。在每个第一差值数字轮内部,有一个机构通过与数字轮存储的数值一样多的步骤旋转。如果单位数字轮位于3,机构将移动三个步骤。这种运动通过齿轮传递给表值轴的相应数字轮。如果最初的表值为5,则它将移动三个步骤以达到8。这个过程同时发生在十位、百位、千位和其他数字位置。

可能会发生这样的情况,对一个数字轮的加法会产生一个进位,必须传递到下一个更高的数字位置。如果表格数的个位数字最初为6,加上7,它将向前移动七个位置并停在3,但是进位也必须传递到表格数的十位数字轮。进位传播的复杂之处在于,如果十位数字轮已经是9,则会被进位前进到0,并且新的进位将传递到百位数字轮。在差分机中,这些连续的进位可能会从个位数一直传递到最高有效数字轮。因此,每次加法都包含两个不同的步骤-将第一差分的所有数字与表格数的相应数字同时相加,并按需连续传递进位,从个位数一直传递到最高有效数字。

对一个函数进行表格化涉及到为每个差分的阶数重复这个基本加法过程。由于每个坐标轴也是一个加法机制,例如,将一个三次差分的立方函数表格化需要为每个产生的表格数执行六个步骤(参见附近的图):
1. 将三次差分数字加到二次差分数字中
2. 在二次差分数字之间传递进位
3. 将二次差分加到第一差分中
4. 在第一差分数字之间传递进位
5. 将第一差分加到结果列中
6. 结果列发生进位

负数可以通过将其表示为十位补码来处理,而不需要额外的机制。
这个方案可以很容易地扩展到更高阶的差分。很明显,步骤的数量是函数的幂次数的两倍,这意味着对于更高阶的函数将需要很多步骤。巴贝奇找到了一种重新排列计算的方法,使得每个产生的表格数只需要四个步骤,而与涉及的差分数目无关。这是巴贝奇设计中复杂逻辑考虑的特点。

巴贝奇观察到,当第一差分在步骤五和六中添加到表格数时,第三差分和第二差分轴都是闲置的。因此,他可以在第一差分添加到表格数的同时,将第三差分添加到第二差分中,即步骤一和步骤二。步骤一和步骤二与步骤五和步骤六重叠。因此,每个产生的表格数只需要四个时间单位,即步骤三到步骤六。用现代术语来说,我们将以这种方式排列硬件执行计算的方式称为“流水线”

这种重叠的想法可以扩展到更高的差分,而且始终可以在四个步骤中产生一个新的表格数,即:

1. 将奇数差分加到偶数差分和结果中。
2. 在偶数差分和结果中进行进位。
3. 将偶数差分加到奇数差分中。
4. 在奇数差分中进行进位。

这种重新排列的计算形式不仅节省了大量的时间,而且使得驱动计算机制的安排更加简单。

看起来,查尔斯·巴贝奇最初并没有确定这台机器的数学能力。他只是将其描述为“一台更大的机器”。到1823年,这台计算机被制造成能够进行四阶差分计算。并没有提及数字的位数。到1829年,这台机器被说成能够进行六阶差分计算,有12位数字,并且以每分钟44位数字的速度打印16位数字的结果。巴贝奇在某个时候决定使用六阶差分计算,但数字的位数继续变化,取决于不同的作者。1834年提到了18位数字,而巴贝奇本人在年老时表示,整个机器将能够进行20位数字的计算。

用于铸造表格的矩阵将在打印部件中生产。结果将从计算部件的结果列中取出,并转移到打印部件中。在那里,11个钢制冲头应该打印出结果和参数并在铜板上产生类似于附近图中所示的打印输出。

非常遗憾的是,差分机的工作停止时离完成非常近。亨利·巴贝奇后来估计,只需要再五百英镑。巴贝奇本可以轻易找到资金,但他对政府和克莱门特的感情和态度不允许他这样做。此外,一两年内,巴贝奇的思想已经在很大程度上转向更复杂和智力上更有回报的“分析机”。然后,他绝对不会回到最初的差分机设计中并将其完成,即使事件使这成为可能。
在19世纪60年代末,巴贝奇说:“我没有完成(差分机),因为在研究它时,我想到了我的分析机的想法,它能做差分机能做的一切,而且更多。实际上,这个想法比完成计算机更简单,因此设计并构造另一个完整的分析机需要更多的工作,所以我转向了分析机。”

然而,毫无疑问,差分机是人类智慧和机械化各种劳动能力的巨大纪念碑。这个想法太重要和令人兴奋,不容忘记。巴贝奇的努力带来了相当大的宣传,这是保持这个想法活跃的重要因素。另一个因素当然是问题本身。在19世纪的过程中,少数发明家都有不同的背景,根据他们自己的想法尝试建造差分机。其中第一个是瑞典人佩尔·乔治·舍茨和他的儿子埃德瓦德,他们只凭巴贝奇的一小部分资源在19世纪中叶成功制造了一台工作中的差分机。

多年来,巴贝奇在自己的一个客厅里展示了差分机的工作部分,并使用计算机制的一部分计算了近百个函数。他甚至设计了一些对原始机制的改进。在差分机中,每当一组计算需要新的常数时,都必须手动输入。1834年,巴贝奇构想出了一种机械插入差异的方式,将差分机的轴线循环排列,使得结果列靠近最后一个差异的列,并且很容易触及到。他称这种排列为“引擎吃掉自己的尾巴”。但很快,这导致了通过完全独立的方式控制机器的想法,并使其能够按照需要以任何顺序和任意次数执行加法以及所有算术运算。第一台差分机的工作于1833年4月10日停止,分析引擎的第一张图纸日期为1834年9月。

在1847年完成分析引擎设计工作后,巴贝奇转向设计第二台差分机,利用为分析引擎开发的改进和简化的算术机制。逻辑设计与早期的差分机相同,但他采用了更简单的机制来存储和相加数字以及进位传递。打印机制简化,使得整数可以一次性印在印版上,而不是逐位数进行。同时,使用有墨色的滚轮制作了常规印刷副本。控制装置通过一个单独的筒简单地安排。设计和一套完整的图纸于1848年中旬准备好。巴贝奇将这些提供给英国政府,显然是为了满足他认为因为第一台差分机建造项目的失败而存在的承诺,但政府对新设计没有表现出任何兴趣。

巴贝奇的计算机及相关资料由他最年轻的儿子亨利·普雷沃斯特·巴贝奇(1824-1918)继承,后者对父亲的工作表现出浓厚的兴趣。亨利和他的哥哥杜加尔德在巴贝奇的绘图室和工作间度过了一段时间,学习工作技能。亨利后来对差分(和分析)引擎设计有了牢固的理解,并与他的父亲建立了密切的联系,他在从印度的长期服役中休假时去探望他的父亲。巴贝奇把他的图纸、工作室和引擎的幸存物遗赠给亨利,后者试图在巴贝奇去世后继续他的工作并宣传这些引擎。

1871年10月18日,巴贝奇去世时,亨利在他的床前。从1872年起,他坚持继续他父亲的工作,然后在1875年退休后间歇性地工作。他组装了六台差分机一号的小型演示装置,其中一台他送给了哈佛大学。在1930年代,这个装置引起了哈佛·马克一的创造者霍华德·艾肯的注意,后者是一台程序控制的计算器。

接下来是…

Written by 小竞 (编辑)

他们称呼我为小竞, 做作为河小马的助理有5年时间了,作为jingzhengli.com的编辑,我关注每天的科技新闻,帮你归纳一些现有科技以及AI产品来提升你的生产力,拥抱AI,让科技和AI为我们服务!