1. 引言
意大利数学家卡尔达诺(Girolamo Cardano, 1501~1576)的代数学名著《大术》(Ars Magna, 1545)标志着近代数学的开始[1] [2]。这本书共40章,其在数学史上最有名的成就是首次记载了三次方程(第11~23章)和四次方程(第39章)的解法,首次比较系统地讨论了方程的变换(第7章),首次给出二次方程的虚根(第37章),首次给出近似求解高次方程的线性插值法(第30章)。这方面已经有不少研究文献[3]-[7]。除了关于方程的理论研究,卡尔达诺也非常重视将其应用于解决具体问题,例如,他利用“按比例设未知量的法则”来简化平方和的形式(第33章) [8],利用“中间比的法则”来求解齐次方程组(第34章) [9]。
在《大术》第35章,卡尔达诺利用“和的法则”求解未知量具有一定对称性的二元方程组问题,由于是求两个未知量,他也把这条法则称为“两个量的法则”。他把该法则分为两种形式,一种形式是直接设二量之和为未知量(问题35.1~35.13以及35.17~35.19),另一种形式是设出两个未知量,其中一个是二量之和(问题35.14~35.16)。
从现在的观点来看,和的法则至多只能算是一种解题技巧,并且没有普遍适用性,但是在当时的数学背景下,如何有效地解决问题,尤其是如何把问题首先转化成一个方程,是数学家们共同关心的问题。例如,《大术》出版40多年后,法国数学家韦达(Francios Vieta, 1540~1604)写有一本著作《列方程五章》(Zeteticum libri quinque)来专论此事[10],即使在《大术》出版160多年后,牛顿(Issac Newton, 1642~1727)在其《广义算术》(Universal arithmetick)中解释如何列方程时仍然不吝笔墨[11]。因此,卡尔达诺的和的法则是有其历史意义的。
卡尔达诺通过具体问题来说明如何使用和的法则,对法则第一种形式他给出16个问题,对法则第二种形式他给出3个问题,其中第一种形式的问题35.3~35.4和第二种形式都受到了意大利著名数学家帕西奥利(Luca Pacioli, 1445~1517)的启发([1], p. 207, 211)。他对法则第二种形式的处理实质上和我们现在解二元方程组的代入解法相同,因此我们不予详细讨论,而是仅列出其问题的类型,以说明他所解决问题中二量的对称性。我们在表1中用现代数学公式把卡尔达诺利用和的法则求解的19个问题的题设条件展示出来。
Table 1. The problem-setting conditions of the nineteen questions in Chapter 35 of Ars Magna
表1. 《大术》第35章19个问题的题设条件
问题1 |
,
|
问题2 |
,
|
问题3 |
,
|
问题4 |
,
|
问题5 |
,
|
问题6 |
,
|
问题7 |
,
|
问题8 |
,
|
问题9 |
,
|
问题10 |
,
|
问题11 |
,
|
问题12 |
,
|
问题13 |
,
|
问题14 |
,
|
问题15 |
,
|
问题16 |
,
|
问题17 |
,
|
问题18 |
,
,
|
问题19 |
,
,
|
|
|
对法则第一种形式的16个问题,卡尔达诺对其中6个问题(即问题35.1~35.5以及问题35.13)给出了详细的过程,说明如何把它们转化成方程;对于其他10个问题,即问题35.6~35.12以及35.17~35.19,他直接给出了最后的方程,没有给出中间的推导步骤。我们发现,如果按照现在列方程的习惯做法,所得到的方程可能与卡尔达诺的结果并不相同。对此,《大术》的英译者维特默(Richard Witmer)对某些方程会加上这样的注释:“完全不清楚它是如何由前提得到的。”([1], p. 209)那么,卡尔达诺是如何列出这些方程的?以下我们通过分析卡尔达诺的一个例子来说明其列方程的思路,然后按照古证复原的研究范式探究他如何得出了上述10个问题的方程[12] [13]。
2. 卡尔达诺列方程的思路
为了解决上述的复原问题,我们首先要知道卡尔达诺本人列方程的思路。我们以问题35.13为例来考察这一点。这个问题为:“求两个数,使它们的平方差为10,并且每一个数与另一个数的平方所得的乘积之差等于100。”其解法术文如下。
“设这两个数的和为
。根据方法的法则,或者根据第四本书中关于运算的那一章可知,我要把这个和分成两部分,并使它们的平方差为10。用这个差(即10)除以所分之数的2倍(即
),商是
。用所分之数的一半(即
)加上或减去这个商,即可得到这两部分和它们的平方。如图1,把后者按照相反的顺序放在其平方根的下面,并用下面的乘以上面的。当我们求两个乘积的差时,只需把不相同的部分(它在一个乘积中为正、在另一个乘积中为负)相乘,就像在求这两个乘积的和时,只需把相似的部分相乘,因为剩下的部分可以互相抵消。因此,用
乘以−5,用
乘以
1。在一个乘法中得到正数时,在另一个乘法中会得到负数。用正数减去负数,这相当于把每一个乘积都乘以2。由此可得,这两个乘积之差为
,它也等于100。用各项都除以
,再乘以
,可得
。”([1], pp. 209-210)
Figure 1. Cardano’s method for formulating equations
图1. 卡尔达诺列方程的思路
卡尔达诺要解决的问题是,求两个量
和
,使得
。他设二量之和为
,根据
得到
,把此结果代入
中,可得
,
化简最后两行及得他所给出的方程。
这里有两点需要注意。一是卡尔达诺列方程的方法和现在的做法不尽相同。我们现在经常使用简便运算,比如,可以先利用平方差公式得出
,然后利用平方恒等式得出
代入即得
化简后会得到和卡尔达诺同样的方程,但中间的计算要简略不少。二是卡尔达诺在计算过程中并未详细给出所有中间结果的依据,比如在计算的开始,他要把
分成两部分,并且使得其平方差为100,他直接给出这两部分为
,现在我们经常通过解方程或者利用技巧来得到这一点,但他依据的却是“第四本书”。事实上,卡尔达诺曾经计划撰写一个他称之为“完美著作”的数学著作系列,并希望涵盖当时算术、代数与几何的所有领域。这个系列由14本书组成,其中第一本为《整数算术》(Artis Arithmeticae Tractatus de Integris),第二本讨论分数,第三本讨论平方根与立方根,第四本讨论未知量,第五本为《论数的比例》(De Proportionibus Numerorum),第六本为《论数的性质》(De Numerorum Proprietatibus),第七本讨论商业问题,第八本讨论本息问题,第九本讨论某些特殊方程,第十本就是《大术》,第十一本讨论平面的度量,第十二本讨论立体的度量,第十三本讨论算术问题,第十四本讨论几何问题。尽管他已完成了其中的相当一部分,但除了《大术》之外,只有第五本书、第六本书以及第一本书的一部分流传下来([1], p. xvii)。他经常在《大术》各种问题的求解中用这个系列的一些法则作为依据来得出中间结果,其中比较常用的是和积法则(已知二量之和与之积,求这两个量)、平方和法则(已知二量之和及其平方和,求这两个量)与平方差法则(已知二量之和及其平方差,求这两个量)。如果用现代公式表示,这三条法则依次如下:
1) 和积法则:若
,
,则
,
;
2) 平方和法则:若
,
,则
,
;
3) 平方差法则:若
,
,则
,
。
3. 卡尔达诺列方程过程的复原
现在,我们已经知道了卡尔达诺列方程的思路以及他经常使用(但未明确说明)的法则,接下来我们就可以对第1节中所述的10个问题(即问题35.6~35.12以及问题35.17~35.19)的列方程过程展开复原工作([1], pp. 208-209, 213-214)。
3.1. 问题35.6的列方程过程复原
现在卡尔达诺对这个问题的全部表述为:“求两个数,使它们的平方和为10,立方和为30。设这两个数的和为
,把它分成两部分,使它们的平方和为10。然后把这两部分的立方相加,可得
。”
我们对此方程的复原如下。设这两个数为a、b(
),则它们满足
,
。由于,所以结合第一个条件,根据平方和法则可得
,
将此结果代入第二个条件可得
因此
化简即得卡尔达诺的方程。
3.2. 问题35.7的列方程过程复原
卡尔达诺对这个问题的全部表述为:“求两个数,使它们的平方和为10,立方差为15。如前所述,设这两个数的和为
,可得
”
我们对此方程的复原如下。设这两个数为a、b (
),则它们满足
,
。由于
,所以结合第一个条件,根据平方和法则可得
,
,
将此结果代入第二个条件可得
,
,
因此
,
两边平方得
,
化简即得卡尔达诺的方程。
3.3. 问题35.8的列方程过程复原
卡尔达诺对这个问题的全部表述为:“求两个数,使它们的平方和为10,并且每一个数与另一个数的平方所得的两个乘积之和等于20。和以前的方法相同,设这两个数的和为
,可得
。”
我们对此方程的复原如下。设这两个数为a、b (
),则它们满足
,
。由于
,所以结合第一个条件,根据平方和法则可得
,
,
将此结果代入第二个条件可得
,
化简得
,
两边平方得
,
化简即得卡尔达诺的方程。
3.4. 问题35.9的列方程过程复原
卡尔达诺对这个问题的全部表述为:“求两个数,使它们的平方和为10,并且每一个数与另一个数的平方所得的两个乘积之差等于4。如前所述,设这两个数的和为
,可得
。”
我们对此方程的复原如下。设这两个数为a、b (
),则它们满足
,
。由于
,所以结合第一个条件,根据平方和法则可得
,
,
将此结果代入第二个条件可得
,
化简可得
合并同类项可得
两边平方并化简,即得卡尔达诺的方程。
3.5. 问题35.10的列方程过程复原
卡尔达诺对这个问题的全部表述为:“求两个数,使它们的平方差为10,立方和为100。把这两部分升幂为它们的立方,可得
。”
我们对此方程的复原如下。设这两个数为
、
(
),则它们满足
,
。由于
,所以结合第一个条件,根据平方差法则可得
,
,
将此结果代入第二个条件可得
,
,
因此
化简即得卡尔达诺的方程。
3.6. 问题35.11的列方程过程复原
卡尔达诺对这个问题的全部表述为:“求两个数,使它们的平方差为10,立方差为100。如前所述,设这两个数的和为
,可得
。”
我们对此方程的复原如下。设这两个数为
、
(
),则它们满足
,
。由于
,所以结合第一个条件,根据平方差法则可得
,
,
将此结果代入第二个条件可得
,
,
因此
,
化简即得卡尔达诺的方程。
3.7. 问题35.12的列方程过程复原
卡尔达诺对这个问题的全部表述为:“求两个数,使它们的平方差为10,并且每一个数与另一个数的平方所得的乘积之和等于100。如前所述,设这两个数的和为
,可得
。”
我们对此方程的复原如下。设这两个数为
、
(
),则它们满足
,
。由于,所以结合第一个条件,根据平方差法则可得
,
,
将此结果代入第二个条件可得
,
化简即得卡尔达诺的方程。
3.8. 问题35.17的列方程过程复原
卡尔达诺对这个问题的表述为:“求两个数,使第二个数的平方等于第一个数与这两个数之和的乘积,并且这两个数的平方和为10。显然,如果
被设成它们的和,它会按照黄金分割比分成两部分,它们是
和
,它们的平方和是
,它也等于10。因此,根据正、负数的加法法则可得
因此,这两部分如图2所示。”
Figure 2. Cardano’s way of setting up and solving the equation in Problem 35.17
图2. 卡尔达诺对问题35.17的列方程的解
我们对此方程的复原如下。设这两个数为
、
(
),和为
,则它们满足
,
。根据黄金分割比
,
,
将此结果代入第二个条件可得
,
化简即得卡尔达诺的方程
。
解得
。
代入
、
有
,
。
需要注意的是,这些结果与卡尔达诺给出的两部分在形式上并不相同,尽管它们在数值上分别是一样的。通过计算会发现,如果我们用平方和法则来表示
、
,有
,
。
将
代入有
,
。
此时的
、
值与卡尔达诺得出的两部分完全相同。
3.9. 问题35.18的列方程过程复原
卡尔达诺对这个问题的表述为:“求三个成连比的数,使第一个数加上第二个数等于第三个数,并且第一个数与第二个数的平方和为10。设第三个数为
,把它分成两部分,使它们的平方和为10。这两部分是
和
。用
乘以较小的部分,这个乘积等于较大部分的平方。或者,按照黄金分割比把
分成两部分,并把这两部分平方,则这两个平方之和为10。因此,这些数如图3所示。”
Figure 3. Cardano’s way of setting up and solving the equation in Problem 35.18
图3. 卡尔达诺对问题35.18的列方程的解
我们对此方程的复原如下。设这三个数为
、
、
(
),
,则有
,
,
,根据平方和法则可得
,
,
代入第三个条件可得
,
解得
。
代入
、
有
,
,
与问题3.8的分析类似,这些结果与卡尔达诺的结果在形式上并不相同但是在数值上分别相等。我们通过计算发现,将
代入由黄金分割比得到的结果,即可得到卡尔达诺计算所得的两部分。
3.10. 问题35.19的列方程过程复原
卡尔达诺对这个问题的表述为:“类似地,如果有人说:求三个成连比的数,使第一个数与第二个数的乘积为10,并且第一个数与第二个数之和等于第三个数。根据与前面相同的方法,可得如图4所示的这些量。”
Figure 4. Cardano’s way of setting up and solving the equation in Problem 35.19
图4. 卡尔达诺对问题35.19的列方程的解
我们对此方程的复原如下。设这三个数为
、
、
(
),
,则有
,
,
,根据和积法则可得
,
,
代入第三个条件可得
,
解得
。
代入
、
有
,
,
与35.9的分析类似,利用和积法则得到的结果与卡尔达诺的结果在形式上差别很大但是在数值上分别相等。我们通过进一步计算发现,将
代入由黄金分割比得到的结果,即可得到卡尔达诺计算所得的两部分。
至此,我们就完成了对卡尔达诺的上述10个方程的复原工作。
4. 结语
卡尔达诺显然是为了节省篇幅而略去了上述10个问题中方程的推导过程,但我们第3节的分析表明,这个过程并非一目了然,因此现代读者自然会关心他的具体步骤到底是什么。不过,由于《大术》距今已有480年,接受现代数学教育的读者很难适应卡尔达诺当时的独特做法,尤其是,他对很多基本法则并未在这本书中明示,例如我们在第2节列出的和积法则、平方和法则、平方差法则等。这种做法的独特性无疑来自当时特殊的数学背景。在16世纪中期,即《大术》的写作年代,代数学的理论研究才刚刚起步,这门学科甚至直到一百年以后还主要表现为代数法则的汇编;此外,代数符号的发展还处于缩略代数阶段,这种现状使得当时的数学家无法像现在这样进行合并同类项、因式分解等代数操作。卡尔达诺的独特做法导致很多读者按照现代方法列出的方程与他给出的方程往往并不相同,如前所述,即使是像《大术》英译者维特默这样的专家也会遇到同样的问题。
比如,对于问题35.8,如果我们同样设
,并结合第一个条件,但不是利用卡尔达诺的平方和法则,而是利用现在常用的平方恒等式,我们可以得到
,
然后将此结果代入第二个条件,并利用常用的因式分解技巧,我们将得到
,即
,
而卡尔达诺的方程则是
。
也就是说,我们用现代技巧得出的方程与卡尔达诺本人的方程并不一致。事实上,这个方程按照现代书写可以分解为
,
也就是说,卡尔达诺在列方程的过程中由于两边平方而添加了三个增根。这种不一致性反过来也印证了我们上述复原工作的合理性。
通过本文的工作,我们比较圆满地解决了上述历史谜题,即卡尔达诺是如何利用“和的法则”列出这些方程的。另一方面,通过对卡尔达诺原始数学思想的复原和分析,我们也可以为现代初等代数学中相关问题的解决提供一些不同的思路。卡尔达诺的这种解法与现在相比虽然略显笨重,但是它更强调结构性的法则,并且更重视代数运算的统一性。这种做法可以帮助学生更好地理解代数恒等变形的本质,而不是仅仅将其作为机械的符号操作。
基金项目
国家社会科学基金一般项目“文艺复兴时期代数学经典文献译注与研究(25BKX075)”。
NOTES
1拉丁本(284页)误为“因此,用乘以,并且”(duc igitur position in m. m. 5 &
quadrati p. )。