论「大衍求一术」
姓名 学号
专业
课程名称
指导教师
开课学期 20 至20 学年 学期
论「大衍求一术」
目录
1. 秦九韶简介
2. 宋元时期历史背景
3. 大衍求一术
4. 中国剩余定理:
5. “大衍求一术”源流
6. “大衍求一术”命名
7. “大衍求一术”的应用
8. 例题解析
9. 大衍求一术算法 (用Algol 60 语言)
10. 民间流传
论「大衍求一术」
一、秦九韶
秦九韶(公元1202~1261年),字道古,生于四川,南宋数学家。秦九韶的一生十分复杂,首先他是学者,知识渊博,思想活跃。他“性格机巧,星象、音律、算术以至营造等事无不精究。迩尝从李梅亭(李刘)学骈俪诗词。游戏、马、弓、剑,莫不能知。”秦九韶从自然科学到社会科学,从技术到天文,从游戏到武术无不通晓,是为但是我国不可多得的通才、全才。
他在1247年著成『数书九章』十八卷。全书共81道题,分为九大类:大衍类、天时类、田域类、测望类、赋役类、钱谷类、营建类、军旅类、市易类。『数书九章』是一部划时代的巨着,它总结了前人在开方中所使用的列筹方法,将其整齐而有系统地应用到高次方程的有理或无理根的求解上去,其中对「大衍求一术」(一次同余组解法)和「正负开方术」(高次方程的数值解法)等有十分深入的研究。
『数书九章』的内容以数学为主,可是把数学用于天文历法、水利工程、建筑、测绘、田亩、军事、商业贸易、税收、气象、货币金融等方面。这也充分说明秦九韶不仅学识渊博,而且有实践精神。但是『数书九章』也有他的美中不足之处,周密说秦九韶“性喜奢好大,嗜老谋身”,他在著作中也有好高骛远哗众取宠的作风。他为了发挥大衍求一术的公用,多方设计可用求一术来解决的应用问题,他而主观愿望积极,但是无可讳言有几个问题出现了纰漏。
二、历史背景
宋元时期是中国数学大放异彩的时期,它像一盏灿烂的明灯,表明了世界数学发展的高度,宋元数学为什么会出现如此盛况
呢?我们要从宋元社会的特点和中国数学发展规律中寻找答案:
整个宋元时期(公元),重新统一了的中国封建发生了一系列有利于数学发展的变化。商业的繁荣,手工业的兴盛,以及由此引起的技术进步(四大发明中的三项:指南针、火药、活字印刷
是在宋代完成并获得广泛应用),给科学文化带来了积极的形象和推动作用,给数学的发展带来了新的活力。
这一时期涌现的优秀数学家最卓越的代表通常称“宋元四大家”的杨辉、秦九韶、李冶、朱世杰等,在世界数学时尚占有光辉的地位,而这一时期印刷出版记载着中国古典数学最高成就的宋元算书,也是世界文化的重要遗产。
三、大衍求一术
中国古代算书《孙子算经》中有一著名的问题“物不知数”,原题为:今有物,不知其数。三、三数之,剩二;五、五数之剩三;七、七数之,剩二.问物几何?
这实际上是求解一次同余式组的问题。后来,南宋数学家秦九韶在其著作《数书九章》中对此类问题的解法作了系统的论述,并称之为大衍求一术。
大衍求一术内容:
设一次同余式组为
式中
如果
(1) 都是整数。 即两两互质。
并设
且
则组(1)的全部解为:
也就是说一次同余式(1)的解化归为解K个同余式的问题:
秦九韶称mi称为定母,V为衍母,Mi为衍数.xi为乘率。
也就是说,秦九韶的解法最后归结到解下面一种类型的同式问题。即A、B为互质的两整数,求出一整数,使满足同余式
1modA
其中A为定母,B为衍数,求出的称乘率。秦九韶把求乘率的方法称“大衍求一术”。
秦九韶先从B中屡减A ,使其余数G
大衍求一术说:
“置寄右上,定居古下,天元一于左上。” 先立一图式:
然后“先以右上除右下,所得商数与左上一相生,入左下,然后乃以后行上下,以少除多,递互除之,所得商数,随即递累乘,归左行上下,须使右上末后奇一而止,乃验左上所得,以为乘率”。
举例如下:71mod17
算式如下:
得=5
“大衍求一术”:
此时左上所得cm即为乘率,即=cm。
现在证明=cm。由上计算变换式的箭头线上下得两组等式:
设l2q2,l3q3l21,l4q4l3l2,,lmqmlm1lm2,则由上两组等式可以推出:
当rm =1时,最后一等式为
由此可知:
再根据 得 , 在各种计算问题中,所给的模数mi不 一定两两互素,且不可能都是整数。秦九韶把模数分为四种:1.元数:指一般整数;
2.收数:指小数;3.通数;指分数;4.复数:指皆为10”的倍数。秦九韶把后三种先化为第一种,然后把不互素的化为互素。
四、大衍求一术——中国剩余定理:
从《孙子算经》“物不知数”题到秦九韶的“大衍求一术”,我国古代数学家对一次同余式的研究,不仅在中国数学史上而且在世界数学史上占有光荣地位。
在欧洲,最早接触一次同余式的,是和秦九韶同时代的意大
利数学家裴波那契,他在《算法之书》中给出了两个一次同余问题,但是没有一般的算法。这两个问题从形式到数据都和孙子物不知数题相仿,整个水平没有超过《孙子算经》。直到十八、十九世纪,大数学家欧拉于公元1743年、高斯于公元1801年对一般一次同余式进行了详细研究,才重新获得和秦九韶“大衍求一术”相同的定理,并且对模数两两互素的情形给出了严格证明。欧拉和高斯事先并不知道中国人的工作。公元1852年英国传教士伟烈亚力发表《中国科学摘记》,介绍了《孙子算经》物不知数题和秦九韶的解法,引起了欧洲学者的重视。
1876年,德国马蒂生首先指出孙子问题的解法和高斯方法一致,当时德国著名数学史家康托看到马蒂生的文章以后,高度评价了“大衍术”,并且称赞发现这一方法的中国数学家是“最幸运的天才”。
直到今天,“大衍求一术”仍然引起西方数学史家浓厚的研究兴趣。如1973年,美国出版的一部数学史专著《十三世纪的中国数学》中,在评论秦九韶的贡献时说道:“秦九韶在不定分析方面的著作时代颇早,考虑到这一点,我们就会看到,萨顿称秦九韶为‘他那个民族、他那个时代、并且确实也是所有时代最伟大的数学家之一’,是毫不夸张的。”
中国古代至迟从春秋战国时期就开始使用算筹记数,我们今天还可以从现存的公元前三世纪的货币上看到这种从左到右的记数方法。中国古代数学家对一次同余论的研究有明显的独创性和继承性,“大衍求一术”在世界数学史上的崇高地位是毋容置疑的,正因为这样,在西方数学史著作中,一直公正地称求解一次同余组的剩余定理为“中国剩余定理”。
五、“大衍求一术”源流
1大衍求一术: ○
就是秦九韶在历代对“上元积年”推算基础上将孙子“物不知数”问题解法发展到最一般的机械化程序。
一部历法,需要规定一个起算时间,我国古代历算家把这个起点叫做“历元”或“上元”,并且把从历元到编历年所累积的时间叫做“上元积年”。大约在三世纪中,修订新历法的天文家开始
有一般的方法推算上元积年。一个历法有了上元积年以后,任何一年冬至节气的日名、时刻,与任何一月平朔的日名、时刻都很容易安排出来了。上元积年的推算需要求解一组一次同余式。
以公元三世纪三国时期魏国施行的《景初历》为例,这部历法规定以冬至、朔旦(朔日子夜)和甲子日零时会合的时刻作为历元。设a是一回归年日数,b是一朔望月日数,当年冬至距甲子日零时是R1日,离平朔时刻是R2日,那么《景初历》上元积元数N就是同余组aN≡Ri(mod60)≡R2(modb)的解。
到了南北朝时期,祖冲之《大明历》(公元462年)更要求历元必须同时是甲子年的开始,而且“日月合壁”、“五星联珠”(就是日、月、五大行星处在同一方位),月亮又恰好行经它的近地点和升交点。这样的条件下推算上元积年,就相当于要求解十个同余式了。
因此,一次同余式问题的解法是适应天文学家推算上元积年的要求而产生的。
中国南北朝时有部《孙子算经》,其卷下第26问是这样的: “今有物不知其数,三三数之剩二,五五数之乘三,七七数之剩二,问物几何。
答曰:23。
术曰:三三数之则剩二,置
140;五五数之剩三,置63;
七七九之剩二,置30;并之
得233,以210减之,即得。
凡三三数之剩一,则置70;
五五数之剩一,则置21;七
七数之剩一,则置15;106
以上,以105减之,即得。
《孙子算经》中的“物不知其数”题,是很著名的数论问题,可以表示成求解如下一次同余式组: N2mod3
N3mod5
N2mod7
也可以表示成求解如下不定方程组:
x3y2
3y25z3
5z37w2
其解法在《孙子算经》的“术” 中也给出来了:N=140+63-210=23
又可以进一步指明:N=2×70+3×21—2×105=23
这里三数剩二对应70,五数剩三对应21,七数剩二对应15,以及105等都在诗句中出现。实际上这个结果还能写成:
N=2×2×5×7+3×1×3×7+2×1×3×5—2×3×5×7
其中只有2、1、1三个数没有出处可交待,或者说这三个数如何确定尚不清楚。到1247年南宋数学家秦九韶在《数书九章》一书中,解决了这个问题,并称其为“乘率”。
2求一术: ○
沈康身认为这些算法源于更相减损术,而严郭杰更深刻的指出:“中国古代数学家研究近似值的成就,首先是“求一术”的发明。”求一术发端于分数近似法,而这种分数近似法又基于“更相减损”术,这不仅是一种入情入理的推测!
求一术很可能是西汉“三统历” 中的一种分数近似法——“通其率”术的衍生物。通其率原本是约减比率或分数的一种算法,及时对辗转相除所得一系列整商,施行类似于“通分纳子”的程序化演算。通其率术是中国古代分数近似法的重要工具,在古代天文历法数据的处理中得到广泛的应用,天算家使用通其率术,首先需要考察渐近分数列的增减性与误差程度,而用课分术求相邻二渐近分数的“相多”,就自然会引导出求一术的发现。
六、“大衍求一术”命名:
在两种情形下(rn=1:n为偶数和n为奇数时),算法的最后一步都出现余数1,即“奇一而止”,整个计算到此终止,秦九韶因此把他的方法叫做“求一术”。
至于“大衍” 的意思,他在《数书九章》序中把它和《易经·系辞传》“大衍之数” 相附会:秦九韶认为这些问题与“卜筮”有关,“衍”同“演”,所以他在研究同余式解法后,便从《易经·系辞传》中的“大衍之数书五十,其用四十有九”摘取了“大衍”冠在算法上,称为“大衍求一术”。
七、“大衍求一术”的应用:
大衍求一术是解决一次同于是问题的关键方法,在使用上很有价值,秦九韶举了很多需要用大衍求一术解决的应用问题,如“古利会积”、“积尺寻源”、“推记土功”、“程行计地”等等,广泛用于解决历法、工程、赋役和军旅等实际问题。
八、例题: N=8(mod 15)=5(mod 8)=13(mod 25)
求“定数”:化15、8、25为3、8、25,其中要满足3、8、25两两互素,
3×8×25的最小公倍数,且3|15,8|8,25|25,
从而使原问题转化为 N=3(mod 3)=5(mod 8)=13(mod 25)
求“衍母”:M=3×8×25=600
求“衍数”:MMM200,75,24 a1a2a3
求“奇数”:g12,g23,g324
求“乘率”:
九、大衍求一术算法 (用Algol 60 语言) 设给出一次同余方程组 x=r(mod ai) (i≤i≤n) i
(a,b)指a,b的等数
for i:=1 step 1 until n do
for j:=1 step 1 until n do
begin d:=( ai,aj);
if (ai,aj/d )=1 then aj:=aj/d else
if (ai/d, aj)=1 then ai:=ai/d end j;
((甲)约奇不约偶,这时可反约)
for j:=i+1 step 1 until n do
begin d:=( ai,aj);aj:=aj/d end j,i;
((乙)约偶,这时必先约后,不能反约)
for i:=1 step 1 until n do
for j:=i+1 step 1 until n do
while (ai,aj)〉1 do
begin d:=( ai,aj);ai:=ai/d;
aj=ai*d
end while ,j,i;
(复乘术定,循环结束时,ai为定母)
M:=1;for i:=1 step 1 until n do
M=m*ai;(M为衍母)
for i=1 step 1 until n do
begin mi=M/ai (mi为第i个衍母)
pi=mi;while pi>ai do pi:
while h2>1 do
begin if h1>h2 then h1=h1-h2;e1=e2+e1;
if h2>h1 begin h2=h2-h1;e2=e2+e1,end while; ki:=e2 (ki为第i 个乘率)
si=ki*mi (si为第i个泛用数) end i;
N=N +si*ri;
N=rs(N,M);(N即为所求答数)
十、民间流传:
“秦王暗点兵”、“韩信点兵”、“监管术”等。明代程大位的诗歌《算法统宗》:
三人同行七十稀,五树梅花廿一枝。
七子团圆正半月,除百零五便得知。
这就是韩信点兵的计算方法,它的意思是:凡是用3个一数剩下的余数,将它用70去乘(因为70是5与7的倍数,而又是
以3去除余1的数);5个一数剩下的余数,将它用21去乘(因为21是3与7的倍数,又是以5去除余1的数);7个一数剩下的余数,将它用15去乘(因为15是3与5的倍数,又是以7去除余1的数),将这些数加起来,若超过105,就减掉105,如果剩下来的数目还是比105大,就再减去105,直到得数比105小为止。这样,所得的数就是原来的数了。根据这个道理,可以很容易地把前面的五个题目列成算式:
1×70+2×21+2×15-105
=142-105
=37
因此,原来这一堆蚕豆有37粒。
参考文献:
钱宝琮著《宋元数学史论文集》科学出版社
李继闵著《秦九韶与》
李文林著《数学的进化》科学出版社
李兆华著《中国数学史》文津出版社
《中国传统数学思想史》科学出版社
王渝生著《中国算术史》上海人民出版社
李继闵著《算法的源流》科学出版社
沈康申著《中算导论》
杜石然著《中国·历史·社会》 辽宁教育出版社