服务热线
0530-5837666
Sketch of
from theBibliothèque Universelle de Genève, October, 1842, No. 82
With notes upon the Memoir by the TranslatorADA AUGUSTA, COUNTESS OF LOVELACE
分析机草稿
查尔斯·巴贝奇发明
L·F·梅纳布雷亚著
都灵,军事工程部官员
日内瓦世界图书馆,1842年10月,第82号
以及译者对回忆录的注释
艾达·奥古斯塔,洛夫莱斯伯爵夫
注:分析机是什么?点进这个话题的自然懂,不赘述。本文是在机器译文基础上校对修改完成的。由于本人并非数学专业,对文中提及的数学问题不甚了了,有待方家指正。本文仅供有兴趣者了解分析机的基本原理。
原文见:https://www.fourmilab.ch/babbage/sketch.html
那些属于数学科学各个分支的工作,虽然乍一看似乎是智力的专属领域,但却可以分成两个截然不同的部分;其中一种可以称为机械性,因为它受精确而不变的规律支配,这些规律可以用物质的作用来表示;而另一个要求推理的介入,则更特别地属于知性的范畴。如承认这一点,我们可以建议用机器来执行这些劳动的机械部分,而把那些依赖于推理能力的部分留给纯粹的理智。因此,那些规范数值计算的规则的严格精确性,必然经常建议使用物质手段,要么用于执行全部计算,要么用于简化计算;因此,出现了几种旨在达到这一目的的发明,但它们大体上只是部分地达到了这一目的。例如,广受尊敬的帕斯卡(Pascal)机器现在只是人们好奇的对象,虽然它展示了发明者的强大才智,但其本身却没什么用处。它的威力不过是前四个算术运算的执行,实际上也仅限于前两个运算,因为乘法和除法是一系列加减运算的结果。迄今为止,大多数这类机器的主要缺点是,它们需要人的不断干预来调节它们的运动,因此就产生了误差;因此,如果它们在大型数值计算中没有得到普遍应用,那是因为它们实际上没有解决问题所提出的双重问题,即结果的正确性和时间的节省性。
巴贝奇先生也有类似的想法,他花了几年时间来实现一个伟大的想法。他向自己提出了这样一个设想:如果知道运算法则,那么他就能设计出一种不仅能进行算术运算,而且能进行分析运算的机器。这样的想法首先会使人感到惊奇;但我们越冷静的赋予思考,越觉得成功不可能出现——这是觉得这可能取决于一些原理的发现,如果应用于机械,后者可能能够机械地翻译代数符号赋予的操作。这位杰出的发明家在访问都灵期间曾向我介绍了他对这一问题的一些看法,经他同意,我把这些看法在我脑海中留下的印象拼凑在一起。但是读者不要指望能找到关于巴贝奇先生的机器的描述;要理解这一点,就必须进行大量的研究。我所要努力的,只是对所提出的目标提供一种见解,并发展出实现目标所依赖的原则。
我必须首先假设,这台机器与同一作者的《机器经济论》中所提到的发动机是完全不同的。但是,由于后者引起了关于这台机器的想法,我认为,简单地回顾一下巴贝奇先生最初的几篇论文,以及它们产生的环境,将会是一个有用的先导。
众所周知,法国政府为了推广十进制,曾下令大量建造对数表和三角表。M·德·普朗尼先生受委托负责这项工作。他把它分成三部分,每一部分都被指定给特定的一群人。在第一部分,公示被结合使他们屈从于数值计算的目的;第二部分,相同的公示用于计算变量的值,变量按固定连续的距离选择;在第三部分中,大约有八十个人,他们大多数只懂加法和减法,那些经过第二部分计算出的值,通过简单的加减法进行插值。
在英国,一向与上述提及的类似的工作也在进行,巴贝奇先生设想第三部分的工作可以由一台机器来完成;他通过一种机制来实现这一想法,这种机制是部分的组合起来,并且命名为差分机——因为它的结构是建立在这个原理之上的。为了给出一些概念,比较合适的是考虑整数的平方数,1、4、9、16、25、36、49、64等等。通过从后面的数字减去前面紧邻的数字,我们得到一个新的差值系列,我们将其命名为第一差值系列,它由数字3、5、7、9、11、13、15等组成。再做一次上述操作,我们得到第二个差值系列,它们都是常数,都等于2。我们可以在下表中表示这一系列操作及其结果。
从最后两列B和C构成的形式来看,很容易看出,例如,如果我们要从数字5过渡到后面的数字7,我们必须在前面加上常数差2;同样地,如果从平方数9转到平方数16,我们必须在前者的基础上加上差7,也就是前面的差5,加上常数差2。再者,同样的事情,要获得16我们只需要三个数字2,5,9加在一起,上表中是ab的斜向序列。相似的,我们可以获得25,通过相加斜方向dc的三个数字:通过相加2 + 7,我们得到了第一差值系列中7后面的9;9加16得到了平方数25。这样,我们就可以看出,对于给定的2,5,9这三个数,连续的整个平方数系列,以及它们第一差值系列,同样可以通过简单的加法得到。
现在,为了设想这些操作是怎样被一台机器复现出来的,假设机器有三个转盘,分别命名为A、B、C,每一个转盘上都有刻度,比方说,有一千个刻度,而上面有一根指针可以经过。C和B应该还有一个定位锤,其击打数应与指针所指示的刻度相同。转盘C的定位锤每敲一次,转盘B指针要前进一格;同样地,转盘A的指针会在转盘B的定位锤的每一次敲击中前进一格。这是机制的一般情况。
了解了这一点之后,让我们开始执行一系列操作。将指针C放在刻度2,指针B放在刻度5,指针A放在刻度9。然后我们让转盘C的定位锤敲打;它敲打两次,于此同时指针B将越过2个刻度。此时后者将指示数字7,也就是在上表中第一差值系列中5后面的数字。如果我们现在允许转盘B的定位锤继续敲打,它将敲打七次,在此期间,指针A将前进七格;由于指针A开始时定位在9,这样就会得到数字16,它9之后的平方数。如果我们现在重新开始这些操作,从指针C开始,指针C总是留在刻度2上,我们将会发现,通过无限地重复这些操作,我们可以用一种非常简单的方法,连续地再现平方数的序列。
基于我们刚才描述的机器所得出的定理,是下述更一般定理的一个特例:如果在任何多项式中,其变量的最高次幂是m,且该变量每次增加相同的程度;多项式对应的值就可以被计算,以及第一、第二、第三差值系列等可以被取定 (如前面的平方数系列);第m差值系列都是相等的。因此,为了用类似于上面描述的机器来重现多项式的系列值,有(m+1)个转盘就足够了,它们之间有我们已经指出的相互关系。由于这种差值可以是正的,也可以是负的,机器就会有一种办法,可以使每根针前进,也可以使每根针后退,根据用代数方法加上的数字的正负来决定。
如果我们从一个多项式过渡到有无限元的数列,依照上述的变量的冥排序,它会首先出现问题,为了用机器完成由这样一个数列所代表的函数的计算,这个机制要求配置无限的转盘,这事实上是不可能。但在许多情况下,如果我们注意到对于许多函数,表示它们的数列是收敛的,那么困难就会消失。因此,根据所要求的近似程度,我们可以局限在只计算数列中的一定数量的元,而忽略其余的。通过这种方法,问题被归结为一个有限多项式的问题。因此,我们可以计算对数的连续性。但由于,在这个特殊的例子中,最初被舍弃的元会按一定比例接收增量,从而给变量不断增相同的增量,我们所要求的近似度最终将受到影响;在特定的时间间隔,通过不同的方法计算函数的值是必要的,然后分别使用获得的结果,作为数据来推断,通过机器得到的差值。我们看到,这里的机器执行的是在描述法国政府命令计算的表格时提到的计算器的第三部分的功能,因此,最初提出的目的是由它来实现的。
这就是巴贝奇先生设想的第一台机器的性质。我们看到,它的使用仅限于需要的数字是可以通过简单的加减法获得的情况;可以说,机器只是一个特定的分析定理的表达;简而言之,它的运算不能被扩展到包含在数学分析领域中的无数其他问题的解决。巴贝奇先生放弃了他原来的论文,在考虑这一尚待探索的广阔领域时,设想了另一种机械系统的计划,这种机械系统的操作本身应该具有代数符号的全部普遍性,因此,他把它命名为分析机。
现在已经解释了问题的状态,现在是我阐发基于后一种机器构造的原理的时候了。当分析被用于解决任何问题时,通常有两类操作要执行:首先,对各种系数的数值计算;第二,它们的分布与它们所影响的量的关系。例如,如果我们要得到两个二项式(a+bx)(m+nx)的乘积,结果可用am + (an + bm) x + bnx2表示,其中必须先计算表达式am、an、bm、bn;然后取an + bm的和;最后,将得到的系数分别分配到变量的幂中。为了用机器再现这些运算,机器必须具有两种不同的能力:第一,执行数值计算的能力;二是合理分配所得的值。
但是,如果指导这每一种局部操作都需要人工干预,那么,在时间的正确性和经济性的前提下,什么也得不到。因此,当一个问题的原始数值数据一旦被给定时,机器必须有一个附加的必要能力,那就是它必须自己执行为解决向它提出的问题所需要的所有后续操作。因此,从需要执行的计算的性质或需要解决的问题给出的时刻起,这台机器由自身内在动力,通过所有中间操作导向预期的结果。它必须排除所有测试方法和猜测,而且只承认计算的直接过程。
这是必然的;因为机器不是一种思考的存在,而只是一种按照强加给它的法则行动的自动机。这是最基本的,也是作者最早要做的研究之一,那就是找到一种方法实现一个数字被另一个数字相除,而不是用通常的算术规则所给出的猜测方法。实现这一组合的困难远非最小的,但这关系到其他人的成功。由于我在这里无法解释达到这一目的的过程,我们必须强制自己承认,算术的前四个运算,即加减乘除,可以经由机器的干预以一种直接的方式进行。当然,这台机器因此能够执行各种数值计算,因为所有这些计算最终都会分解成我们刚才提到的四种操作。为了理解机器现在如何根据规定的法则来完成它的功能,我们将首先给出它在物质上代表数字的方式。
让我们设想一个由无数圆盘组成的桩或立柱,所有圆盘都有一个共同的轴穿过它们的中心,每个圆盘围绕该轴可做独立的旋转运动。如果每个圆盘的边缘都写有组成数字字母表的十个数字,那么我们就可以把一系列数字排列在同一条垂直线上,用这种方式表示任何数字。为了达到这个目的,第一个圆盘代表个位数,第二个十位数,第三个百位数等等就足够了。当两个数字被写在两个不同的柱上时,我们可以用算术方法把它们结合起来,在第三根柱上得到结果。一般来说,如果我们有一系列由圆盘组成的柱子,我们依次把他们命名为V0, V1, V2, V3, V4等,例如,我们可能需要将柱V1上的数字除以柱V4上的数字,然后在柱V7上得到结果。为了实现这一操作,我们必须赋予机器两种不同的安排;通过第一,个,为执行除法而做准备,通过第二个,指定要操作的柱,和要得出结果的柱。如果要在除法之后继续做其他柱上的两个数字的加法,则必须同时改变机器的两个原始安排。相反的,如果要实现一系列性质相同的操作,那个第一个安排可以保持不变,第二个安排单独做出改变,。因此,可以与机器不同部分沟通的安排(arrangements)可以被分成两个主要的类型:
第一类,与运算有关;
第二类,与变量有关。
我们所说的后者指的是要在其上执行操作的柱。至于运算本身,它们是由一种特殊的设备来执行的,这种设备叫做工厂 (mill,磨坊,巴贝奇从纺织厂借用的词,即现代计算机中的处理器,译者按),它本身包含一定数量的柱,类似于变量的柱。当两个数字要组合在一起时,机器首先把它们从代表它们的柱上抹去,也就是说,把两个柱上表示数字的系列圆盘都归位到0;它将数据传输给工厂。在那里,设备已经根据所需的运算被适当地配置,运算被执行,完成后,结果本身被传输指定的显示变量的柱。因此,工厂是机器工作的那部分,而变量的柱构成了结果的表示和安排。在前面的解释之后,我们可以看到所有的分数和无理数结果都将以小数表示。假设每柱有40个圆盘,这样的扩展就足以满足一般要求的所有近似程度。
现在我们要问的是,机器如何能够在不依靠人手的情况下,自行承担起与操作相适应的连续的配置。解决这一问题的方法来自于提花设备,用于织锦材料的生产,方法如下:
在纺织物中,通常有两种不同的线;一种是经线,另一种是纬线——由一种叫做梭子的设备传送的,它穿过经线。当需要纺织时,必须依次防止某些线穿过纬线,而这是根据要再现的设计的性质所决定的连续性来进行的。以前,这个过程是漫长而困难的,工人必须按照要复制的设计来调整线的运动。因此,这类织物的价格很高,尤其是当各种颜色的线进入织物时。为了简化这一工序,雅卡尔设计了一种方案,用一根独特的杠杆把每一组要共同动作的线连接起来。所有这些杠杆端部为棒状,连接在一起形成一个束,通常是带矩形底座的平行的杆形式。这些棒是圆柱形的,彼此之间间隔很小。因此,抬起线的过程被分解为按必要的顺序移动这些不同的杠杆臂的过程。为了达到这个目的,我们取了一块长方形的纸板,比那一捆杠杆臂的截面稍大一些。如果这张纸被固定到束的基础上,然后一个前进的运动被传达到纸板,后者将与它一起移动束内的所有棒,随后是连接到每一个棒的线。但是,如果纸板不是平的,而是在与杠杆相连接处开孔,那么,纸板在运动时,每一个杠杆都会穿过纸板,并且它们就都保持在这个位置上。因此,我们可以很容易地在纸板上确定孔的位置,在任何给定的时刻,都有一定数量的杠杆,因此也就有一定数量的线,这些线被拉起,而其余的线则保持在原来的位置。假设这一过程按照所要执行的图案所指示的规律依次重复,我们认为这个图案可以在物体上复制。为了达到这个目的,我们只需要按照所要求的规则,把一系列的卡片一张接一张地排列好;然后,通过使它们通过一个多边形梁,这个梁如此连接,在梭子每一次敲击时都要转到一个新的面,然后将这个面与杠杆臂平行地推进,这样就可以有规律地进行提升线的操作。因此,我们看到,织物可以以一定的精度和以前很难获得速度生产。
类似于刚才描述的那些安排被引入到分析机中。它包含两种主要的卡:第一种是运算卡,机器的一部分被配置执行任意确定的一系列运算,如加、减、乘、除。其次,变量卡,它向机器指出要表示结果的柱。当卡片开始运动时,根据将要完成的过程的性质,依次排列机器的各个部分,同时,机器通过组成它的各种机械部件来执行这些过程。
为了更完美地理解这个问题,让我们以两个一阶方程和两个未知量的解法为例。设以下两个方程,其中x和y是未知数:-
我们可以推导出
对于y也有类似的表达式。我们继续用V0 V1 V2 等表示包含数字的不同柱,我们假设选择了前八柱来表示m、n、d、m、n、d、n和n表示的数字,这意味着V0=m, V1=n, V2=d, V3=m, V4=n, V5=d, V6=n, V7=n。
由卡片指示所进行的一系列操作,以及所得到的结果,可以用下表表示:
由于卡片除了指出机器应该以什么方式和在什么柱上工作外,什么也不做,很明显,我们仍然必须在每一种特殊情况下,为计算引入数值数据。因此,在我们所选择的示例中,我们必须预先在所指示的柱中按顺序输入m、n、d、m、n、d的数值,在此之后,机器运行将给出该特定情况下的未知数x的值。为了得到y的值,必须执行与前面类似的另一系列操作。但是我们看到它们的数量只有4,因为y的表达式的分母,除了符号,和x是一样的,等于nm-nm。在上表中,我们注意到运算一栏表示四次连续的乘法、两次减法和一次除法。因此,如果需要,我们只需使用三张运算卡;要管理这些,应当把一个设备引入机器,例如应当在第一次乘法后,保留卡片与这个操作,而不是让它前进被另一个卡片取代,直到同样的操作被重复四次。在前面的例子中,我们已经看到,为了求出x的值,我们必须先在8个柱上写出系数m, n, d, m, n, d,这样n和n重复两次。根据同样的方法,如果需要计算y,这些系数必须写在12个不同的柱上。但有可能简化这一过程,从而减少出错的机会,因为出错的机会越大,在机器开始工作之前必须记录的数量就越大。为了理解这种简化,我们必须记住,写在一柱上的每一个数字,为了与另一个数字进行算术组合,必须从它所在的柱上抹去,并转移到工厂。因此,在我们已经讨论过的例子中,我们将取两个系数m和n,它们分别进入两个不同的乘积,即m进入mn和md, n进入mn和n。这些系数将被赋值在V0和V4柱上。如果我们开始的一系列操作得到m和n’的乘积,这些数字将从列V0和V4中抹去,他们会转移到工厂,将相互相乘,然后命令机器把结果显示到柱V6上。但是,由于这些数字将在另一个操作中再次使用,它们必须再次被记录在某个地方;因此,当工厂计算出他们的乘积时,机器将把它们重新写在由卡片指定的其他两柱上;在实际情况下,没有理由为什么他们不把他们恢复以前的地方,我们将假设再次刻在V0, V4,那里在短时间内他们不会消失,也不再被重现,直到他们已经通过所有可能会被使用的组合。
因此,我们可以看到,解决上述两个一阶方程所必需的全部运算可以明确地在下表中表示出来:
为了最大限度地减少在输入问题的数值数据时出错的机会,它们被依次放置在工厂的一个柱上;然后,通过为此目的而排列的卡片,使这些相同的数字排列在所需的柱上,不需要操作员给予额外的关注,这样他就可以一心一意为这些相同的简单数据赋值。
根据到现在的解释,我们可以把变量的柱集合看做是数字的存储器,通过工厂积累起来, 以执行卡片的形式按照指令传输到机器,交替的从工厂到存储器,从存储器到工厂传输,并且可以按照正在运行的计算的性质的需求进行转换。
到目前为止,还没有提到结果中的符号,如果机器不能表达组合中的每一个正值和负值,那它就远非完美。为了达到这一目的,在工厂和存储器的每一柱的上方都有一个转盘,与柱的转盘相同。根据这个转盘上数字是偶数还是奇数,其下方对应柱上的数字将被认为是正的或负的。这样,我们就可以用下面的方法来设想如何把这些符号在机器里代数地结合起来。当一个数字从存储器转移到工厂,反之亦然,它总是与它的符号一起传输,这将通过卡片的方式实现,正如前面所解释的那样。现在,让我们把要进行算术运算的任何两个数字,把它们和它们各自的符号一起转移到工厂。假设先执行加法操作;运算卡发出加法指令:如果两个数字的符号相同,则其中一个数字将完全从其所在的柱上抹去,并将自己添加到包含另一个数字的柱上;在这一操作过程中,通过某种装置,机器将能够防止属于加数所在的那一柱的标识符号的转盘保持不动,从而使结果保持原来的两个给定数字的符号。当两个数字有两个不同的符号时,通过这种符号的差异所导致的机制的干预,由卡片所指令的加法将变成减法。因为减法只能影响两个数中较大的那个,会有如下的安排:较大的数的符号转盘不动,较小的数字被从它的柱上抹去,并从较大的数字上减去,由此保持了后者的符号,事实上也是如此。由代数减法产生的组合,与前述讨论类似。让我们继续讨论乘法。当两个数相乘的符号相同时,结果是正数;如果符号不同,乘积一定是负数。为了使机器可以按这一规则行动,我们只能设想在显示两个数字乘积的柱上,指示这个乘积符号的数字,是由分别表示两个给定乘数符号的数字相加得到的;很明显,如果两个乘数的符号数字都是偶数或奇数,它们的和将是偶数,因此表示乘积是一个正数;相反,如果乘数符号的两个数字一个是偶数,另一个是奇数,那么它们的和就是奇数,因此就表示乘积是一个负数。在除法的情况下,不是把符号转盘上的数字相加,而是把一个减去另一个,这样就会产生与前述相似的结果:也就是说,如果这两个数都是偶数或都是奇数,那么这个减法的余数就是偶数;相反,它就是奇数。当我说到由符号位所表示的数字相加或相减时,我仅仅是指其中一个符号盘前进或后退一定刻度,等于另一个符号盘上的数字。因此,从前面的解释中我们可以看出,通过机械把把数学量的符号组合起来,可以得到与代数计算相一致的结果。
Copyright © 2020-2023 山东行知科教仪器设备有限公司 版权所有 备案号:鲁ICP备16020776号-2
地址:高新区万福办事处吴拐行政村 电话:0530-5837666 邮箱:2586826320@qq.com
关注我们