大衍求一术

大衍求一术,又名求一术,是中国数学史中通常被用来泛指南宋数学家秦九韶发明的求解中国剩余定理的历史算法(不是中国剩余定理的现代算法)。秦九韶原来的《数书九章》求解一次同余式组的算法的总称叫做大衍总数术,或大衍术、而其中一个计算乘率的子程序,才是大衍求一术

大衍术是秦九韶最得意的创作,特放在《数书九章》之首。欧洲直到18世纪德国数学家高斯,才有相类的结果。秦九韶大衍术领先世界五百余年。

历史

一次同余式组问题,最早见于《孙子算经》卷下第二十六问:

有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?答曰:二十三。術曰:三三數之,賸二,置一百四十;五五數之,賸三,置六十三;七七數之,賸二 ,置三十。并之,得二百三十三,以二百一十減之,即得。凡三三數之,賸一,則置七十;五五數之,賸一,則置二十一;七七數之,賸一,則置十五。一百六以上,以一百五 減之,即得。

宋周密《志雅堂杂钞》述鬼谷算,又名隔墙算
杨辉《继古摘奇算法》记载剪管术解孙子物不知数的算法:

术曰:三数剩一下七十,五数剩一下二十一,七数剩一下五十。三位并之得二百三十三,满一百五去之,减两个一百五,余二十三为答数

七数剩一,八数剩二,九数剩三,问本总数几何?答曰:四百九十八

明严恭《通源算法》:[1]

今有散钱不知其数,作七十七穿之,欠五十凑穿,若作七十八穿之,不多不少。问钱数若干?答曰:二千一百六文

明朝数学家程大位有《孙子歌》如下:[2]

三人同行七十希,五樹梅花廿一支,七子團圓正半月,除百零五使得知

清代学者张敦仁在《求一算术》中提出大衍求一术源自《孙子算经》物不知数,后世学者,多从其说。但近年李俨钱宝琮等学者提出大衍求一术很可能源自西汉《三统历》中计算上元积年的“通其率”近似法,其后《古四分历》和《乾象历》沿用此法。[3][4]

事实上,秦九韶在《数书九章序》中就写道:“独大衍法不载《九章》,未有能推之者,历家推演法颇用之”,“历家虽用,其用不知,小试经世,姑推所为,述大衍第一。”

大衍总数术

 
秦九韶大衍总数术

秦九韶大衍总数术原载《数书九章》第一卷上 大衍类 《蓍卦发微》:

置诸元数,两两连环求等,约奇弗约偶,遍约毕,乃变元数,皆曰定母,列右行,各立天元一为子,列左行,以定诸母,互乘左行之子,各得名曰衍数,次以各定母满去衍数,各余名曰奇数,以奇数与定母,用大衍术求一。

程序如下:[5][6][7]

1。将问数(有关问题中的数字)[  …… ],分为四大类
  • 元数:整数
  • 收数:带小数的有理数。
  • 通数:分数
  • 复数:10的倍数。
2.如果问数[  …… ]是收数,则以10的倍数乘之化为元数列,按元数计算。
3:如果问数[  …… ]包含分数,则化为元数列,按元数计算。
4。当问数[  …… ]是整数
4.1:将问数成对以其最大公约数约化,约奇数不约偶数;如二数都是偶数,约化其中之一。如二数中一个数是10的倍数,另一数的个位是5,则约化偶数不约化奇数。最后得到一组

定母:[  …… ]。

定母之中避免过多1,得到一个“1”即可。各定母为相应问数的因子;定母两两互为质数。定母的乘积称为衍母,是问数的最小公倍数。

衍母 v=∏  ; i=1…n;
4.3:将各定母分别除衍母,得到一组衍数:[  …… ]
其中 衍数   v/ 
4.4 用定母  约化衍数  (i=1……n);余数  称为奇数
4.4 当奇数 =1时,乘率 =1。

奇数 ≠1时,从定母 奇数 ,用大衍求一术计算乘率 ;(i=1……n)。

4.5 衍數乘以乘率,稱為用數
4.6 各餘數乘以相應的用數,得出各總
4.7 各總的總和,稱為總數
4.8 把總數除以衍母所得的餘數,便是所求數
例一:《孙子算经》“物不知数”,
  • 問数:3,5,7;因两两互素,也即定母。
  • 定母:3,5,7
  • 衍母=3*5*7=105
  • 衍数:35,21,15
  • 奇数:2,1,1
  • 乘率:2,1,1
  • 用數:70,21,15
  • 餘數:2,3,2
  • 各總:140,63,30
  • 總數=140+63+30=233
  • 所求數=23
例二
  • 問数:108,57,75,40
  • 定母:27,19,25,8
  • 衍母 =27*19*25*8=102600
  • 衍数:3800,5400,4104,12825
  • 奇数:20,4,4,1
  • 乘率:23,5,19,1

大衍求一术

求乘率

 
秦九韶《数书九章》大衍求一术

秦九韶用大衍求一术解:

乘率 * 奇数≡1(mod 定母)

大衍求一術云︰置奇右上,定居右下,立天元一於左上。先以右上除右下,所得商數與左上一相生,入左下。然後乃以右行上下,以少除多,遞互除之,所得商數隨即遞互累乘,歸左行上下。須使右上末後奇一而止,乃驗左上所得,以為乘率。

例一:定母 83,奇数 65,求乘率x[8][9]

x*65≡1 mod(83)
答:乘率=23
置天元一于左上角,置奇数于右上角,置定数右下角,置0于左下角。
大衍 奇数
0 定母
1 65
0 83
83/65 =1, 置左下,余数 18 置右下。
1 65 0
1 18 1
65/18 商=3,加于左上,余数11,置右上
4 11 3
1 18 0
18/11,商=1,乘左上,加于左下,余数7,置右下。
4 11 0
5 7 1
余类推,直到右上=1 为止。
9 4 1
5 7 0
9 4 0
14 3 1
23 1 1
14 3 0
右上=1,左上=23=乘率。

 1 (mod 83)

参考文献

引用

  1. ^ 李俨 118-120页
  2. ^ 李俨 《大衍求一术的过去和未来》
  3. ^ 钱宝琮 《秦九韶数书九章研究》 621页
  4. ^ 李继闵 145-155
  5. ^ 王守义 10-38
  6. ^ 李俨 123-133
  7. ^ 袁向东,李文林 159-179
  8. ^ 李俨 128-130页
  9. ^ 李倍始 p341

来源

  • 李俨 :《大衍求一术的过去和未来》《李俨钱宝琮科学史全集》卷6 121页《程大位的孙子歌》辽宁教育出版社. 1998
  • 钱宝琮:《秦九韶数书九章研究》》《李俨钱宝琮科学史全集》卷9
  • 吴文俊 主编:《中国数学史大系》 第五卷 第三、四、五编
  • 吴文俊 主编:《秦九韶与数书九章》 北京师范大学出版社 1987
  • [比利时]李倍始(Ulrich Libbrecht):Chinese Mathematics in the Thirteen Century (The Shu-Shu-Chiu-Chang of Chin Chiu shao) Dover Publication ISBN 0486446190
  • 秦九韶 原著,王守义 遗著,李俨 审校:《数书九章新释》 安徽科学技术出版社 1992 ISBN 7-5337-0788-5/O
  • 李继闵:《大衍求一术溯源》,吴文俊 主编 :《秦九韶与数书九章》 138-158页 北京师范大学出版社 1987
  • 袁向东、李文林:《数书九章中的大衍类问题和大衍总数术》 ,吴文俊 主编 :《秦九韶与数书九章》 159-179 北京师范大学出版社 1987

参见