主要观点
- 分析机必须具备一些存储问题的数值数据的手段。
- 这篇文章描述了1901年4月28日percy e. ludgate所写的论文。
- 这篇论文的写作原因是因为希望记录percy e. ludgate对c. v. boys教授的感激之情。
percy e. ludgate在1909年撰写的文章首先感谢c. v. boys教授对分析机问题的帮助。ludgate还提到了charles babbage的工作,他之前发明了两台差分机和一台分析机。然而,babbage在他的机器完成之前去世了,他的工作由他的儿子henry继续。在这篇文章中,ludgate继续描述了他对babbage的分析机的了解以及他自己的机器与之的相似之处。
分析机必须有一种方式来存储与需要解决的问题相关的数据,ludgate在接下来详细解释了他是如何通过自己的设计实现这一点的。他在一篇论文中详细说明了他的方法和结果,展示了他对这一主题的广泛知识。
关于一台拟议的分析机
作者:percy e. ludgate
于2月23日读取。于3月9日订购发表。于1909年4月28日发表。
我打算在这篇论文中简要介绍我六年来的工作成果,这是我为了设计能够在没有人类智慧的直接指导下进行计算的机器而进行的工作。
首先,我要感谢c. v. boys教授,f.r.s.的帮助,我对他在与我关于这篇论文所涉及的问题上的通信中的善意表示感激。
在没有提到charles babbage的非凡工作将会很困难,也是不明智的。他首先发明了两台差分机,随后(大约80年前)设计了一台分析机,这被证明至少在理论上是可能的;但不幸的是,在它的发明者去世时,它的建造还没有进行到很远的程度。
自从babbage的时代以来,他的工作似乎已经几乎被遗忘;很可能没有一个活着的人了解其计划的机械细节。我对babbage的机器的了解很少,大部分都限于它们的数学原理。
分析机的整体视图
以下是babbage的同时代人对分析机的定义,从不同的角度描述了其基本功能:
“一个能够使我们对执行部门具有与我们迄今只对数学立法部门所具有的控制相同的机器。”*
* babbage:“一位哲学家的人生篇章”,第129页。
“对于任何一种任意广义和复杂程度的不确定函数(例如:,,,log,sin等),它是所有其他可能的任意数量的函数的函数。”†
†r. taylor的“科学回忆录”,1843年,第三卷,第691页。
‘一个关于操作科学的具体体现,特别参考抽象数作为这些操作的主题。’*
*loc. cit., p. 694.
‘一种织造代数模式的机器。’†
†loc. cit., p. 696.
这四个陈述清楚地表明,分析机‘不与仅仅“计算机”占据共同基础。它拥有完全独立的地位’。
为了避免误解,我必须声明,我的工作并不是基于巴贝奇的成果 – 实际上,在我完成第一次设计我的机器之前,我对他在同一方向上的先前努力一无所知。另一方面,在问题的更高级阶段,我得到了那位博学的学者的著作的很大帮助,并受到了宝贵的建议。
巴贝奇的分析机和我设计的机器在某些方面有很大的相似之处 – 这种相似之处在我看来并不完全是偶然的,而在很大程度上是因为研究的性质,这些研究倾向于导致决定相似性的结论。这种相似性几乎完全局限于问题的更一般、抽象或数学的一面;而两个计划中机器的结构的对比几乎无法更加明显。
我无需证明能够设计一台能够自动解决所有可以通过数字解决的问题的机器的可能性。分析机的基本原理‘已经被检查、承认、记录和证明’。‡我建议那些希望了解相关信息的人参阅洛夫莱斯伯爵夫人翻译的关于巴贝奇的机器的文章,该文章连同翻译者的大量注释出现在r. taylor的‘科学回忆录’第三卷中;参阅巴贝奇自己的著作‘一个哲学家的生活片段’;以及英国协会1878年报告的第92页。这些论文提供了一个完整的证明,分析发展和操作的全部过程都可以通过机器来执行。
‡c. babbage: ‘一个哲学家的生活片段’,第450页。
尽管在提到的论文中可以找到关于这个问题的完整和娴熟的处理,但为了使我后面的评论能够理解,我还需要简要概述分析机的基本原理。
一台分析机必须有某种方法来存储要解决的问题的数值数据,以及每一步工作中产生的数字(连同适当的代数符号);最后,必须有一种方法来记录结果。它必须能够将所存储的两个数字提交给加法、减法、乘法或除法的算术运算。
它还必须能够从它包含的数字中选择要进行操作的正确数字;确定它们要进行的操作的性质;并处理操作的结果,以便这样的结果可以被机器召回并进一步操作,如果问题的条件要求的话。
操作的顺序,被提交给这些操作的数字(仅被视为抽象数量),以及每个操作结果的处理方式,都取决于机器所从事的计算的代数陈述;而参与工作的数字的大小则随着该特定情况下的通用公式的数值数据的变化而变化。
因此,一个自然的问题是如何制造一台机器来按照代数公式所表达的特定发展规律进行操作。对于这个问题,一个非常令人满意的答案(也是babbage和我自己都使用的答案)是由jacquard织机提供的,该有趣的发明采用一套穿孔卡片来指导经线和纬线的移动,以便在织物中产生设计者所期望的图案。
可以想象,一套类似的卡片排列可以被用在数学机器中,以指导数字的编织,使其成为代数模式,这种情况下,所涉及的卡片将构成一种数学符号。必须明确地理解,如果一套这样的卡片根据特定公式一旦准备好,它将具备代数的一切一般性,并包括无限多个特殊情况。
我已经准备了机器及其部件的许多图纸;但是在一篇简短的论文中不可能对评估复杂公式所需的机制进行详细描述,因为这个主题必然是广泛而复杂的;因此,我必须限制自己在表面上进行描述,仅涉及特别有趣或重要的要点。
babbage的jacquard系统和我的系统有很大的不同;因为,虽然babbage设计了两套卡片——一套用于控制操作,另一套用于选择要进行操作的数字——我使用一张或一卷穿孔纸(原则上与一套jacquard卡片完全相对应)来执行这两个功能,以解决分配给该特定纸张的公式。
对于这样的纸张,我使用术语“公式纸”。公式纸上每一行的穿孔指示机器在计算过程中的某个明确定义的步骤,例如完成乘法运算,包括选择要相乘的数字。当然,只要它们都属于同一类型或种类(即代数上相同),一个单独的公式纸可以用于无限多次的计算。
在提及存储在机器中的数字时,困难在于我们是将它们作为仅在限定的算术意义上的纯数字,还是将其作为数量,尽管始终以数字表示,但可以在实际上无限变化。在后一种情况下,它们可以被视为真正的数学变量。babbage(也是我将要采用的方式)在这个意义上提到它们时习惯使用术语“变量”(用大写字母v拼写),同时将“数字”和“变量”应用于通常的含义。
在我的机器上,每个变量都存储在一个单独的梭中,变量的各个数字由梭上突出的金属棒或“类型”的相对位置表示,每个梭上都有一个这样的棒,用于表示变量的每个数字,以及一个用于表示变量符号的棒。根据当前所表示的数字或符号,每个棒的突出距离为1至10个单位。
这些梭存放在两个同轴圆柱形梭盒中,为此目的将其沿轴线划分为与其平行的隔间。目前的机器设计可以存储192个每个有20个数字的变量;但是,如果需要,可以大大增加变量的数量和每个变量的数字数量。还可以注意到,梭与机器是完全独立的,因此可以随时引入代表新变量的新梭。
当两个变量需要相乘时,相应的梭通过一种称为“指数”的滑轨系统被带到一起,机器通过这个系统计算乘积。准确地描述指数的机制是不可能的,但可以将其与一种可移动刻度的游标尺进行比较。指数被安排成可以同时给出几个读数。这些读数的数值由所提到的刻度的周期性位移来指示,这些位移的持续时间是由称为“机床”的一组齿轮上测得的单位记录的,该机床执行十进制进位并指示最终的乘积。
乘积可以从那里转移到任何一个梭中,或者同时转移到两个梭中,前提是它们不属于同一个梭盒。将新值写入梭中的行为会自动取消该梭可能包含的任何先前的值。机器的基本操作可以说是将任意两个梭中的数字相乘,并将乘积写入一个或两个梭中。值得一提的是,巴贝奇机器的基本过程不是乘法,而是加法。
尽管指数类似于滑尺,但它的刻度不是对数刻度,而是根据特定的指数数值进行划分,经过一些困难后,我为此目的进行了安排。我最初打算使用对数方法,但发现其中一些间隔太大;而且,对于我的目的来说,对数零不存在这个事实是一个额外的缺点。我相信这些指数数值是可以给出所需结果的最小整数,这些数值包含在以下表中:
表2
|
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
partial
product |
comp
index no. |
partial
product |
comp
index no. |
partial
product |
comp
index no. |
||||||
15 | 30 | 36 | 16 | ||||||||
16 | 40 | 26 | |||||||||
18 | 15 | 42 | 41 | ||||||||
20 | 25 | 45 | 37 | ||||||||
23 | 21 | 40 | 48 | 11 | |||||||
24 | 10 | 49 | 66 | ||||||||
33 | 25 | 46 | 54 | 22 | |||||||
27 | 21 | 56 | 36 | ||||||||
14 | 28 | 35 | 63 | 47 | |||||||
10 | 24 | 30 | 31 | 64 | |||||||
12 | 32 | 72 | 17 | ||||||||
14 | 34 | 35 | 56 | 81 | 28 | ||||||
零的comp指数:50、51、52、53、57、58、64、73、83、100 |
表3
|
|||||||
---|---|---|---|---|---|---|---|
comp
index no. |
partial
product |
comp
index no. |
partial
product |
||||
34 | 14 | ||||||
35 | 28 | ||||||
36 | 56 | ||||||
37 | 45 | ||||||
16 | 38 |
|
|||||
32 | 39 |
|
|||||
64 | 40 | 21 | |||||
41 | 42 | ||||||
42 |
|
||||||
12 | 43 |
|
|||||
10 | 24 | 44 |
|
||||
11 | 48 | 45 |
|
||||
12 |
|
46 | 25 | ||||
13 |
|
47 | 63 | ||||
14 | 48 |
|
|||||
15 | 18 | 49 |
|
||||
16 | 36 | 50 | |||||
17 | 72 | 51 | |||||
18 |
|
52 | |||||
19 |
|
53 | |||||
20 |
|
54 |
|
||||
21 | 27 | 55 |
|
||||
22 | 54 | 56 | 35 | ||||
23 | 57 | ||||||
24 | 10 | 58 | |||||
25 | 20 | 59 |
|
||||
26 | 40 | 60 |
|
||||
27 |
|
61 |
|
||||
28 | 81 | 62 |
|
||||
29 |
|
63 |
|
||||
30 | 15 | 64 | |||||
31 | 30 | 65 |
|
||||
32 |
|
66 | 49 | ||||
33 |
现在,以一个非常简单的例子来说,假设机器配备了一张公式纸,旨在使其能够在方程ab + cd = x中对于给定的值a、b、c和d进行评估,并假设我们希望找到在特定情况下a为9247、b为8132、c为21893和d为823时的x的值。
首先,通过后面提到的键盘将四个给定的数字传输到机器上;而公式纸会导致它们被记录在四个梭子上。由于内部和外部同轴梭盒的梭子是连续编号的,我们可以假设给定的a和b的值分别记录在内部盒的第一个和第二个梭子上,而c和d的值分别记录在外部盒的第一个和第二个梭子上;但是重要的是要记住,公式纸的功能是选择梭子来接收变量,并选择要进行操作的梭子,因此(除了在更复杂的公式中才会产生的某些特殊情况外),任何给定的公式纸都会以相同的顺序和方式选择相同的梭子,无论变量的值如何。变量的大小只影响其梭子所携带的类型,并且不会以任何方式影响整个梭子的移动。
由公式纸引导,机器现在使梭盒旋转,直到内部和外部盒子的第一个梭子与梭子赛道的一侧对齐。然后,两个梭子被沿赛道拉到靠近指数的位置;同时,某些滑块被释放,它们会向前移动,直到被外部梭子所携带的类型所碰到而停止。
所讨论的滑块将会移动相应于变量a的各个数字的简单指数数字的距离。在我们考虑的特殊情况下,第一个四个滑块将分别移动3、0、7和1个单位,其余的滑块通过移动50个单位来指示零(请参见表1)。
另一个滑块向相反的方向移动,直到被内部梭子的第一个类型所碰到而停止,其移动量与乘数的第一个数字的简单指数数字成比例,即14。由于指数附加在上述最后一个滑块上,并且与其运动保持一致,因此指数和每个四个滑块的相对位移分别为3 + 14、0 + 14、7 + 14和1 + 14个单位(即17、14、21和15个单位),这样,附在四个滑块上的指针,它们通常指向指数上的零,现在将分别指向指数上的第17、14、21和15个刻度。在表3中查找,我们发现这些刻度相应于部分积72、9、27和18。在指数中,部分积是由放置在第三张表的第2列所示间隔处的可移动刀片来机械地表达的。
现在,任何刀片的第一个运动的持续时间都作为它所代表的部分乘积的单位数字,因此,与本例中相关的刀片的运动将作为数字2、9、7和8,这些运动通过指针传送到磨坊,使其记录数字2978。现在,靠近指针的车辆移动一步以实现乘以10,然后刀片进行第二次运动,这次将部分乘积(即7、0、2和1的十位数)转移到磨坊,完成了个位数和十位数的相加,如下所示:
|
|||||
结果是被乘数乘以乘数的第一个数字。之后,指数进行快速的往复运动,将其滑块与内部穿梭的第二种类型(代表数量中的数字2)接触,并为乘数的这个数字及其后续数字重复刚刚描述的过程,直到找到整个乘积ab。然后,将穿梭器放回穿梭盒中,然后将后者旋转,直到两个箱子的第二个穿梭器与穿梭路径对齐。
这些穿梭器像之前的情况一样被带到指数处,并获得它们的变量的乘积(21893 x 823),并将其添加到先前的乘积中(该乘积故意保留在磨坊中),以得到所需的值。可以提到的是,乘积中小数点的位置是由独立于磨坊和指数的特殊机制确定的。上述大部分运动以及许多其他运动都来自于放置在与驱动轴平行的公共轴上的一组凸轮,并且所有这些运动都受公式纸的控制。
表1中的序数在数学上并不重要,但是它们指的是无法在本文中描述的特殊机制,并且仅用于使表格完整。
两个乘积的和是通过保留第一个乘积在磨坊中直到找到第二个乘积来获得的-然后磨坊将指示它们的和。通过在获得第二个乘积之前改变磨坊的旋转方向,可以得到两个乘积的差。因此,通过使乘数在每种情况下为单位,可以进行简单的加法和减法。
在设计计算机时,为了提供快速进行十进制进位是一项特殊的困难和重要性的问题。在大多数机器中,进位是连续快速进行的;但是babbage发明了一种(我无法确定其细节)的设备,通过该设备,机器可以“预见”进位并根据预见行动。在该问题上经过多年的工作后,我设计出了一种实现进位与加法过程完全机械独立的方法,使得这两种运动同时进行。通过我的方法,数字位数之和将需要9 +个时间单位。
在计算两个二十位数的乘积时,需要进行四十次加法(部分乘积的个位数和十位数分别相加)。将值40和20代入和,我们得到9 x 40 + 20 = 380,即每次加法需要9½个时间单位,时间单位是将数字轮转1/10圈所需的时间。
对于每个20位数的变量,数量n具有一个恒定值20,这是机器在无限次加法之后执行任何未执行的进位所需的时间单位。现在,如果进位是依次执行的,那么每次加法所需的时间不能少于9+ ,即每次加法需29个单位的时间,实践中要大得多。
*有关十进位问题的详细注释,请参见c. babbage:“一个哲学家的生活经历”,第114页等。
在普通的计算器中,除法是通过从被除数中反复减去除数来完成的。除数从表示十的高次幂的数字中减去,直到余数小于除数。然后,将除数向右移动一位,再进行减法。每种情况下执行的减法次数表示商的对应数字。
这是一种非常简单和方便的普通计算器方法,但它几乎无法满足分析机的要求。同时,必须注意到,巴贝奇使用了这种方法,但发现它导致了许多机械上的复杂性。
我的除法方法基于完全不同的原理,为了解释它,我必须假设机器可以乘、加或减去任何变量;换句话说,可以准备一个公式纸,它可以指导机器为给定的变量值计算任何指定函数(不包含除法符号或其等效物)。
然后,假设我们希望找到特定值和的值p/q,这些值已经被传递给机器。让的前三个数字表示为f,并让表示 ,其中表示为20位小数的倒数。将分数的分子和分母乘以 ,我们有(ap)/(aq),其中aq必须给出一个形式为l00…的数字,因为aq = 。将小数点放在单位后面,我们有一个小数加上单位。用表示这个小数:
|
ap
1 + |
or | ap(1 + -1 |
通过二项式定理展开
(1) |
|
ap(1 – + – + – + etc.), |
或者
(2) |
|
ap(1 – )(1 + )(1 + )(l + ),等等。 |
级数(1)收敛较快,通过计算前十个数值,我们可以至少得到正确的结果到二十位;而表达式(2)可以至少准确地得到三十位的结果。商中小数点的位置与这些公式无关。由于该量必须是100至999之间数字的倒数,因此有900种可能的值。
机器必须具备选择适当的数量并根据公式应用该值的能力。为此,900个数值被存储在一个圆筒中,圆筒的外围有从1到9个单位深的孔来表示各个数字。当需要进行除法运算时,通过一个简单的装置将圆筒旋转,直到数值a(通过一行孔在圆筒上表示),即除数的前三个数字的倒数,与一组杆对齐。
然后,这些杆将该数值转移到适当的穿梭器上,从而将其变为普通变量,并根据公式使用。并不需要每次都需要在公式纸上详细计算除法运算的公式。为了避免这样做的必要性,机器配备了一个特殊的永久性“除法圆筒”,其中以适当的穿孔符号表示该公式。
当公式纸上的穿孔排列表明需要进行除法运算,并且变量将构成除数和被除数时,公式纸允许除法圆筒取代其功能,直到该圆筒使机器完成除法运算。
值得注意的是,为了进行除法运算,机器配备了一个小的数字表(数字),它能够以适当的方式进行查询和应用。我还将这个系统扩展到了对数级数,以使该级数具有较高的收敛性。我还引入了一个“对数圆筒”,它具有计算对数公式的能力,就像除法圆筒指导除法过程一样。这种用于特殊公式的辅助圆筒和表格系统可以无限扩展。
机器打印所有结果,并且如果需要,打印出数据和计算过程中出现的任何值。还要提到的是,机器可以通过在纸张上进行穿孔记录其结果,以便当这样的“数字纸”(可以这样称呼)被放回机器时,后者能够“读取”上面指示的数字,并将其刻在专用的穿梭器上。
机器具备的其他功能之一是根据需要或根据给定的数学规律切换公式。因此,机器永远不会闲置;它可以被设置为列举任何函数的连续值,同时可以随时暂停列举工作,以便通过机器确定一个或多个更重要或更紧急的结果。
它还可以“感受”其工作进展中的特定事件,例如函数值的符号变化,或者它接近于零或无穷大;并且当发生这种事件时,它可以对其过程进行任何预先安排的更改。巴贝奇详细阐述了这些和类似的观点,并解释了它们对自动解方程(通过逼近)的影响;* 但我无法确定他达到这些结果的方式与我所做的方法是否有任何相似之处。
*c. 巴贝奇:“一位哲学家的生活片段”, p. 131.
分析机由两个键盘控制,这一点与巴贝奇的计算机不同。上键盘有十个键(编号从0到9),是一种将数字传输到机器的方式。因此,它可以承担之前提到的数字纸的工作。下键盘可以用来控制机器的工作,这种情况下它执行公式纸的工作。
当计算的性质不足以保证准备公式纸或数字纸的情况下,或者当使用它们不方便时,键盘可以用于使用。下键盘使用的一个有趣例子是一个人想要求解许多三角形(例如)的情况,他知道边长的尺寸,但没有准备好的公式纸。
他最好的方法是将一张空白纸放入控制装置中,并通过上键盘将其中一个三角形的已知尺寸传输给机器,然后通过下键盘指导机器按照通常的规则求解三角形。下键盘的操作将记录在纸上,然后可以将其用作公式纸,以便使机器自动求解其余的三角形。
他可以通过上键盘逐个向机器传递这些三角形的尺寸;或者,如果他愿意,可以将尺寸制成数字纸表格,机器将自动读取其中的尺寸。因此,机器可以“记住”一个数学规则;一旦它展示了如何执行某个计算,只要相同的纸张保留在机器中,它就可以自动执行任何类似的计算。
必须明确理解,该机器的设计是完全自动的,以至于一个几乎对数学一无所知的人也可以像最能干的数学家一样成功地使用它。假设这样一个人想要计算一个角的余弦,他可以通过插入带有正确标签的公式纸,依次按下正确的数字键来指示角的大小,并启动机器,尽管他可能完全不了解余弦的定义、性质或特点。
使用该机器时,其中心轴必须以大致恒定的转速运行 – 可以使用一个小电机来实现此目的。据估计,每秒三个旋转的速度是安全的;这样的速度可以确保在大约10秒钟内乘法运算两个各有20位数的变量,并在大约三秒钟内进行加法或减法运算。除法运算所需的时间取决于从除数导出的级数的收敛度,但是可以认为最长可能需要1.5分钟。
因此,在制作公式纸时,应充分考虑到完成除法的相对较长时间;无疑,尽可能少地使用此过程将会发现是明智的。计算任意数的对数需要两分钟,而通过指数定理计算(对于任何)也不需要超过1.5分钟,所有结果均为20位数。
†给定的时间包括所要操作的变量的选择所需的时间。
目前设计的这台机器大约有26英寸长、24英寸宽和20英寸高;因此,它是一种便携式尺寸。关于巴贝奇引擎的确切尺寸我没有任何信息;但显然,它应该是一台庞大的机械设备,每个方向都有数英尺。
这台引擎的相对较大尺寸无疑部分归因于其设计用于容纳每个有50位数的一千个变量,但更重要的是这些变量将存储在列车轮上,而列车轮本身就相当大,这就需要相当复杂的齿轮安排来控制它们的运动。此外,巴贝奇通过重复加法和重复减法进行乘法和除法,虽然从数学角度来看很简单,但却导致了很多机械复杂性。
*参见英国协会报告,1878年,第100页。
为了解释分析机器或引擎的能力和范围,我最好引用洛夫雷斯伯爵夫人的话:“没有明确的分界线来限制分析引擎的能力。这些能力与分析法律的知识本身一样广泛,只需通过我们对后者的了解来界定。”
确实,我们可以将引擎视为分析的实际和机械代表,而引擎使我们能够更有效地掌握代数和数字符号的执行操作,从而使我们在这个人类研究领域的实际工作能力能够更好地跟上我们对其原理和法则的理论知识的步伐。
†r. taylor的“科学文集”,1843年,第三卷,第696页。
一名英国协会委员会被任命就巴贝奇的引擎发表报告,报告说:“除了解决目前可能的操作节省人力以外,我们认为这种工具的存在将使许多过去实际上无法达到的东西成为可能。”
‡英国协会报告,1878年,第101页。
总结而言,我观察到在纯粹和应用科学的众多分支中,它们的发展、记录或应用都依赖于数学这一主导科学。其中没有一门科学不会因为对抽象数学表达式的数字解释的完全掌握以及通过能够迅速、自动和精确地执行最繁琐和复杂的计算的机器的存在而加速进展和方便追求。这也使得科学家从耗时的计算苦工中解脱出来。