一个以大引申求技巧的例子
“三人走七十回,五树二十一棍。
七子团聚半个月,到105年才知道。"
这些有趣的数学游戏,以各种形式介绍了世界著名的“孙子问题”的解决方案,通俗地反映了中国古代数学的一项杰出成就。
“孙子问题”是现代数论中的一次同余问题,最早出现在公元四世纪孙子的数学经典中。《孙子算经》书名《物不明》说:有不明之物,三算二多,五算三多,七算二多。东西的总数是多少?显然,这相当于解不定方程。
N=3x+2,N=5y+3,N=7z+2
n的正整数解,或者用现代数论符号表示,等价于解以下线性同余组:
N 2(mod3) 3(mod5) 2(mod7)②
孙子的计算中给出的答案是N=23。因为孙子的问题数据比较简单,所以这个答案也可以通过试算得到。但孙子的计算没有做到这一点。“不知物数”的技巧指出了解题方法:从三或三中取数70,与余数2相乘;五个或五个数字中,取数字二十一,乘以余数三;对于77这个数,用15乘以余数2。把乘积加起来,然后减去105的倍数。列进公式是:
n = 70×2+21×3+15×2-2×105 .
这里105是模3、模5、模7的最小公倍数。很容易看出孙子算经给出了满足条件的最小正整数。对于一般余数的情况,《孙子兵法》指出只需将上述算法中的余数2、3、2分别替换为新的即可。用R1,R2,R3来表示这些余数,孙子算经相当于给了一个公式。
n = 70×r 1+21×R2+15×R3-p×105(p为整数)。
孙子算法的关键在于三个数的确定:70,21,15。后来流传的《孙子兵法》中的“七十稀罕”、“二十一枝”、“全半月”等词,暗指了这三个关键人物。孙子算经没有解释这三个数的由来。事实上,它们具有以下特征:
也就是说,这三个数可以通过最小公倍数M=3×5×7=105减去模数3、5、7,再分别乘以整数2、1、1得到。假设k1=2,K2=1,K3=1,那么选择整数Ki(i=1,2,3)使得得到的三个数70,21,15除以相应的模数。由此可以立即推出,在余数为R1的情况下,R2、R3、
结合以上三个公式,我们可以得到
因为M=3×5×7可以被它的任何因子整除,所以有:
这里p是一个整数。这就证明了孙子算经的公式。应用上面的推理,孙子的算法可以完全类似于一般情况:有一个数n,被两两互质数a1,a2,...安获得余数R1,R2、...……Rn,也就是。
N≡Ri(戴莫)(i=1、2、……n)、
只需要一组数Ki来满足
那么适合于给定同余群的最小正解是
(p为整数,m = a1× a2× …× an),这是现代数论中著名的余数定理。如前所述,它的基本形式已经包含在《孙子兵法》“不知数物”问题的解决中。但是,这个普遍定理在《孙子算经》中并没有说清楚。
孙子问题出现在4世纪中国的计算中并非偶然。从我国古代天文历法的资料来看,同余的研究显然是天文学和历法的需要推动的,尤其与古代历法中所谓“上元积年”的计算密切相关。众所周知,日历需要指定开始时间。中国古代历法数学家把这个起点称为“纪元”或“上元”,把从纪元到历年的累计时间称为“上元纪年”。上元累计年数的计算需要解一组一次同余。以公元三世纪三国时期魏推行的荆为例。这种历法规定,冬季至日、新月(新月的午夜)和甲子在零时相遇的时间为纪元。设A为回归年的天数,B为农历正月的天数,当冬季至日为甲子日R1,平朔时为R2日时,则荆楚历法中的元素数n为同余群。
安里(mod60)R2(MDB)
解决方案(1)。南北朝时,祖冲之《大李明》(公元462年)要求历元必须同时为甲子年始,且日月同向,月亮恰好经过其近地点和升交点。在这样的条件下,计算最后一个元素累积年份相当于求十次同余的解。天文历数据一般都很复杂。所以,在《孙子算经》前后的魏晋南北朝时期,中国的天文历法计算器无疑能够解出比《孙子算经》中“不知数事”问题复杂得多的一个同余式,所以他们一定掌握了按一定程序计算一个同余式的方法。这一事实在《孙子算经》中以比例问题的形式进行了概括和反映。未来天文学家将长期使用孙子的算法计算上元累积年,这必将引发更深入的讨论。到了13世纪,伟大的数学家秦终于在同余的研究上取得了辉煌的成果。
秦·九韶,字子古,生活在南宋。他从小就喜欢数学。经过长期的积累和潜心研究,他于公元1247年写成了《舒舒九章》。这部中世纪的数学杰作是在多方面创造的。其中“求解一个同余组的大求导”和求解高次方程数值解的“正负平方抽取”更是国际上意义重大的成果。
本文主要介绍秦对同余理论的重大贡献。
秦在《舒舒九章》中清晰系统地描述了解一次同余组的一般计算步骤。秦的方法正是前面提到的余数定理。我们知道,余数定理把一般的
选择一组数Ki。秦将这些数命名为“乘率”,并在《蜀九章》卷一中详细介绍了乘率的计算方法——“大绕求法”。
为了介绍“以大拓求一技之长”的技巧,我们以任意倍率ki的计算为例。如果Gi=
gi gi(戴莫)
所以kiGi kiGi(戴莫)、
但是因为kiGi 1(戴莫)
所以问题归结为让ki适合kigi 1(戴莫)。秦称艾为“定数”,称吉为“奇数”。他的“大推导求一技之长”的理论,用现代语言解释。其实就是把奇数gi和定数ai相除,先后得到商q1,q2,...……qn和余数r1,r2,...……rn。当奇数GI和定数AI相除时,会立即相除。
秦指出,当rn=1,n为偶数时,最终cn为所需的倍增率ki。如果r1=1,n是奇数,那么把rn-1和rn相除,形式上让qn+1 = RN-1,那么余数rn+1还是1。无论哪种情况,余数1都出现在最后一步,整个计算到此结束。所以秦把他的方法称为“求一技”(至于“大衍”的含义,秦自己在《九章》的序言中,把它附在《周易》的“大衍之数”上)。可以证明秦的算法是完全正确且非常严格的。
在秦的时代,算计还是用算计。在一个小方盘上,秦把奇数G排在右上角,定数A排在右下角,1排在左上角(他称之为“天元1”),然后在右排上下互动,把少除以多。得到的商乘以左上角(或底部)合并到左下角(或顶部),直到右上角出现1。下一页是秦的通用计算图式,右边是一个数值例子(g=20,a=27,K= c4=23)。
秦在《舒舒九章》中收集了大量的事例,如"古历必积"、"依规求源"、"计土工"、"计地工"等,并广泛运用"一技之长"的手法解决历法、工程、税收、兵役等实际问题。在这些实际问题中,模ai不总是成对互质整数。秦区分了“一元数”(ai为整数)、“收到数”(ai为小数)、“通过数”(ai为分数)等不同情况,并给出了每种情况的处理方法。“总计法”计算的是将“收到数”和“一般数”转化为“元素”的情况,但对于元素不是两两互质的情况,给出了可靠的程序,适当选取那些元素的因子为常数,将问题归结为两两互质的情况。所有这些系统的理论和周密考虑即使在今天看来也不简单,这充分显示了秦高超的数学水平和计算技巧。
秦小时候跟随父亲来到南宋都城杭州,向太史馆(掌管天文历法的机构)的官员学习天文历法。大概是他总结天文历法上元积年计算方法的结果。但“大发展求一技之长”似乎并没有被他同时代的人完全理解。明中叶以后几乎失传。直到清代,“大衍求一术”的理论被重新发现,引起了许多学者的兴趣(张敦仁、李锐、罗、黄宗宪等。).他们对“以大拓求术”的理论进行了解释、改进和简化,其中黄宗宪的《以通解求术》对于模数不是两两的情况给出了更为简洁的方法,但时代在晚清。
从孙子计算中的“不知数多少”到秦的“推而广之”,中国古代数学家对一个同余式的研究,不仅在中国数学史上,而且在世界数学史上都占有光辉的地位。在欧洲,与秦同时代的意大利数学家佩波纳奇(1170-1250)最早接触到第一个同余公式。他在《算法之书》中给出了两个一次同余问题,但没有通用算法。这两个问题在形式和数据上和孙子的问题差不多,整体水平没有超过孙子的计算。直到18、19世纪,大数学家欧拉(1707-1783)和高斯(1777-1855)在1801中也做了同样的比较。欧拉和高斯事先并不知道中国的工作。1815—1887年英国传教士(1852)出版了《中国科学札记》,介绍了孙子计算中的未知问题和秦的解法,引起了欧洲学者的注意。1876年,德国人马西森(1830-1906)首先指出孙子问题的解法与高斯法是一致的。当时德国著名的数学史家康托尔(1829-1920)看到马西森的文章后,对《大衍术》给予了高度评价。时至今日,“大拓求术”的理论仍然引起西方数学史家的浓厚研究兴趣。比如1973,美国出版的一部数学史专著《十三世纪的中国数学》,系统地介绍了中国学者在一个同余理论上的成就。在评论秦的贡献时,作者利布雷希特(比利时人)说:“秦关于不定分析的著作是相当早的。考虑到这一点,我们会看到萨顿②称秦为的‘他的民族,他的。
印度学者也对同余理论做出了重要贡献。从6世纪到12世纪,他们开发了一种叫做“Kutaka”的算法,用于求解相当于一个线性同余的不定方程。“Kutaka”法出现在孙子算法之后。在印度数学家婆罗门·古普塔(七世纪)、莫克维罗(九世纪)等人的著作中,有一个同余问题与事物未知的问题是一样的。这当然不是断言Kutaka法一定受孙子算法的影响,而是有些人(如万海依等。)硬说中国“大发展求一技之长”出自Kutaka,毫无根据。万海依居然把中国算法中的数字从左向右横着写,作为印度人影响《大衍书》的重要依据。众所周知,中国在古代最迟从春秋战国时期就开始使用计数和计数。今天,我们还可以从现存的公元前三世纪的货币上看到这种从左到右的计数方法。由此可见,万海义的说法是多么可笑。中国古代数学家在一个同余理论的研究上有明显的独创性和继承性。“推而广之求一技之长”在世界数学史上的崇高地位毋庸置疑。正因为如此,在西方数学史著作中,求解一个同余组的剩余定理被理所当然地称为“中国剩余定理”。
-
(1)《孙子之歌》又名《韩信点兵》,明代程大伟在《算术大一统》(公元1592年)中发表,但其实早在此之前就在民间流传了。
①根据大纪元的定义,从大纪元到冬季至日,刚过N个热带年,a×N天。甲子的日期是一个60天的周期,甲子为头,所以60除以安,余数应该是当年冬季至日最晚甲子日起的天数,这就给出了同余公式aN≡R1(mod60)。同理可得第二个同余公式。
累积年数的方法最初始于汉代。但由于汉代天文学家利用了当时天文观测的特殊数据,只需解一两个数据不太复杂的一次同余式就可以推算出上元积年。例如可以验证,三通历(公元前1世纪)的上元累计年满足145×4617×p≡135(mod 1728)的形式(p为整数,累计年号x = 4617)。
类型。这个同余公式可以通过试算来解答。三世纪以来,随着天文测量技术的提高,对历法提出了更精确的要求。此时计算上元累积年的同余公式越来越复杂,促使当时的天文历法计算者寻求一种同余公式的通用计算方法。
①其实设l2=q2,L3=q3L2+1,L4=q4L3+L2,...ln = QLN-1+LN-2,则r 1 = AI-giq 1 = AI-c 65438。R2 = gi-r 1q 2 = gi-(ai-c 1gi)Q2 = C2 G4-l2a 4,R3 = r 1-r2g 4 =(ai-c 1gi)-(c2gi-l2ai)Q3 = l3ai-。rn = cngi-李艾=1,也就是cngi(戴莫)。这证明Cn是期望的K3。
(2)秦的方法是从那些元素ai中去掉适当的公因子,从而得到每个元素的一个因子ti,使得m = t1× t2× …× tn是那些ai的最小公倍数,每个ti是两两素数。然后把这些ti作为一个定数,按照大求导的技巧计算出对应的ki。