好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

《九章算术》开方算法系统及其与现代计算机程序的比较.doc

11页
  • 卖家[上传人]:F****n
  • 文档编号:97977113
  • 上传时间:2019-09-07
  • 文档格式:DOC
  • 文档大小:76.50KB
  • / 11 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 《九章算术》开方算法系统 及其与现代计算机程序的比较傅海伦 中国古代把开方法与二次、三次或高次数字方程解法统称为开方术《九章算术》少广章提出了完整的开平方、开立方程序 一、《九章算术》的开平方程序 开平方相当于求x2 = N的根开方术曰:「置积为实借一算,步之,超一等议所得,以一乘所借一算为法,而以除除已,倍法为定法其复除,折法而下复置借算,步之如初,以复议一乘之,所得副以加定法,以除以所得副从定法复除,折下如前…」[1] 《九章算术》给出的术文言简意赅,在开方筹式中每一个数字的记数和入算,都严格遵循位置值制由于其中明确指出:「复除,折而下」、「复除,折下如前」,可见,这是一个具有一般性的机械化算法程序即是说,不论平方根有多少位数,反复实施这一程序都可求出来所以,在此有必要对一般情形下的这种机械化程序加以剖析 以总的来说,开平方的程序是:首先作四行的筹式布算,即从上到下的四行依次布以方根(「议所得」)、被开方数(实)、法和借算,然后机械反复实施「超」、「议」、「除」、「折」的四大步骤,直至「适尽」、结束 「超」:将置于个位上的借算自右向左隔一位移一步,移到与实的最高位(N为奇数位)或次高位(N为偶数位时)对齐为止。

      若移n位,这相当于将方程进行倍根变换,变换后的方程为102nx12 = N的形式,如图 (2) 「议」:议得根的第一位得数为a1  「除」:以a1乘借算102n得102na1作 为法置于第三行,使得以法除实时,恰得商a1,而余数N1小于102na12:N ÷(102na1) = a1 + N1 / 102na1[2]         「折」:撤去借算,将法102na1加 倍为定法,并将定法向右退一位为2‧102n-1a1如图 (4),再在下行个位上布置借一算         为求方根第二位得数,需要重复以上四个步骤:        「超」:将置于个位上的借算自右向左隔一位移一步,显然祇需移n-1 步,即102n-2如图 (5),这又相当于求方程102n-2x22 + 2‧102n-1a1x2 = N-102na12的 正根         「议」:复议得根的第二位得数a2          「除」:以a2乘借算102n-2, 加定法,得法:2‧102n-1a1 + 102n-2a2, 同样以法除实:(N-102na12) ÷ (2‧102n-1a1 + 102n-2a2) = a2 + N2/(2‧102n-1a1 + 102n-2a2),余数N2小于 (2‧102n-1a1 + 102n-2a2)a2。

      如图 (6),如果余数为零,则开方完毕;若不为零,则「折下如前」,按接下来的程序步骤继续开方         通过对上述筹算开平方法的分析,可知它是根据下面这些公式来逐步 推求的,与现代的迭代法完全一致,可以通过计算机来实现:        (a + b)2 = a2 + (2a + b)b         (a + b + c)2 = (a + b)2 + [2(a + b) + c]c         (a + b + c + d)2 = (a + b + c)2 + 2[(a + b + c) + d]d         ……         开平方术文还有对几种特殊情况的处理方法:一是被开方数为分数的 情形,要「通分内子」,若分母是平方数,则分子、分母分别开方,然后相除,即A = b/a,;若分母不可开,则以分母乘分子,开分子后再以分母除,即A = b/a,A = ab/a2,二是开方不尽的情形,这相当于求无理根,称为不可开,求出整数部分后,「以面命之」         显然,有了以上程序和处理方法,任何一个数可以开平方,说明《九 章算术》的术文更具有抽象性、普适性 二、《九章算术》的开立方程序        开立方相当于求x3 = N的根。

              《九章算术》开立方术是:开立方术曰:「置积为实借一算,步之,超二等议所得,以再乘所借一算为法,而除之除已,三之为定法复除,折而下以三乘所得数,置中行复借一算,置下行步之,中超一,下超二等复置议,以一乘中,再乘下,皆副以加定法除已,倍下,并中从定法复除,折下如前…」[3]         对比开平方术和开立方术,不难看出,两种开方的程序基本上是统一 的,都是通过筹式布算,机械重复地实施「超」、「议」、「除」和「折」的四大步骤,直至适尽,结束祇是在开立方的筹式布算中,在「法」和「借算」之间增加一行「中行」,使原来的四行布算变为五行布算,并在相应的「超」和「折」的步骤中有细小的变动或调整对被开方数是分数、或分母不是立方的情形,处理的方式也与开平方相同,这说明,开立方的程序也具有抽象性和普适性,适应于任何一个数的开立方根据术文,对一般情形下的开立方及其与开平方程序过程的比较可见下表:   商   10na110na110na110na1实开 平方NNN-102na12N-102na12N-102na12(N-102na12)-(2‧102n-1a12 + 102n-2a2)a2 开 立方  N-103na13N-103na13N-103na13(N-103na13)-(3‧103n-1a12 + 3‧103n-2a1a2 + 103n-3a22)a2法开 平方  102na12‧102na12‧102n-1a12‧102n-1a1 + 102n-2a2 开 立方  103na123‧103na12103n-1a123‧103n-1a12 + 3‧103n-2a1a2 + 103n-3a22中 行开 平方无      开 立方   3a13‧103n-2a123‧103n-2a1(副)3‧103n-2a1a2借 算开 平方1102n102n 102n-2102n-2 开 立方1103n 1103n-3103n-3(副)103n-3a22  (1)(2)(3)(4)(5)(6)         通过分析上面的筹算开立方方法,可知它是根据下面这些公式来逐步 推求的,也和现代迭代的方法完全一致,可以在计算机上实现。

              (a + b)3 = a3 + (3a2 + 3ab + b2)b         (a + b + c)3 = (a + b)3 + [3(a + b)2 + 3(a + b)c + c2]c         (a + b + c + d)3 = (a + b + c)3 + [3(a + b + c)2 + 3(a + b + c)d + d 2]d        ……         中国古代数学将二次方程x2 + bx + c = 0 (b , c > 0) 的正根称为开带从平方法,《九章算术》虽未给出开带从平方和开带从立方的程序,但在开平方、开立方术中从求根的第二位得数起,就是求形如x2 + bx + c = 0 , x3 + bx2 + cx = d (b , c , d > 0) 正根的程序,这实际上已蕴含了开带从平方和立方的程序 三、刘徽对开方程序的改进        刘徽借助于出入相补原理,对《九章算术》提出的开 平方、开立方程序给予了几何解释,从而证明了开方程序的合理性,使人们对开方术有了直观性的感性认识同时,在阐述其几何意义时,对开方程序也作了改进,以往论者认为刘徽的开方程序与《九章算术》相同,刘徽祇是解释了《九章算术》的程序,郭书春先生经过研究指出二者起码有两个重大不同[4]:         首先,《九章算术》中,在议得某位得数(设第一位a, 第二位b)后,算出法(或定法)(开平方是a及2a + b; 开立方是a2及3a2 + 3ab + b2), 再「以法除实」,使得「实如法」恰恰得到该位得数。

      此「除」即除法,显然它还保留了开方由除法脱胎出来的痕迹,刘徽注开方术,是将「除实」解释成以议得数乘法(开平方a2及 (2a + b)b;开立方是a3及 (3a2 + 3ab + b2)b减实,此「除」,即减,这无疑是程序上的一大进步        其次,《九章算术》的借算在每使用一次后都要撤去,议得次一位得 数时要复置借算(开立方时还要置中行)于个位,再「步之如初」,显得繁琐,刘徽则保留借算,将中行与借算先与法对齐,再通过退位求减根方程,显得简洁        总之,通过刘徽的改进,程序已简便得多,已基本接近于现今方法, 后来在《孙子算经》,《张丘建算经》及贾宪《黄帝九章算经细草》中得到了继承和发展 四、《九章算术》「开方术」与现代计算机程序比较         以上开平方、开立方、开带以平方和立方程序,共同构成中国古代数 学一个独立的算法程序系统——开方算法程序系统,《九章算术》中开方算法程序不仅表现了中国筹算所能达到的高超的算技,而且充份体现了中国数学思想方法的构造性和算法机械化特色《九章算术》与这种开方算法具有的代数意义密切相关由于在开方中都借用一根算筹分别表示未知量的平方和立方,这样就赋予用算筹所列出的开方式以x2 = N和x3 = N两个代数方程,于是,开平方和开立方的各个演算步骤也就成了解方程求正根的过程。

      事实上,要保证算法程序机械化的一步步进行,并在有限步骤内求得方根的每一位得数,从这种二项二次方程或二项三次方程的代数意义上,都要经过以下三个步骤:        I. 首先把方程进行倍根变换,估计方根的第一次近似值        II. 每求得方根的一次近似值之后,就利用二项展开式将原方程进行减根变换,求出一个新的方程        III. 在新方程中,以定法除实即以一次项系数常数项,求得方程的下一次近似值因此这些步骤可循环重复,直至根值全部求出或求到一定数位为止        以开立方为例,相当于求方程f (x) = x3-N = 0的正根,估计方根的第一次近似值为x1,依II进行减根变换,即令x = x1 + y则y = x-x1代 入f (x) = 0得y3 + 3x1y2 + 3x12y = N-x13再依III y = (N-x13)/3x12 =-< I>f (x1)/f '(x1),因此,x = x1-f (x1)/f '(x1)        这就是《九章算术》开方术的演算原理,而这一原理,恰好是 Newton-Raphson解法的根据[5][6]        现代计算机要用牛顿一类的迭代法求一元二次或三次方程f (x) = 0的根,首先大致估计出根的范围,给一个初值x0, 然后可用迭代公式xi+1 = xi-f (xi)/f '(xi) 依次求出第i + 1次根的近似值xi+1, 设 e 是所求根的精度要求,若满足|(xi+1-xi)/xi+1| < e ,则xi+1的值即为所求方程的解,否则再求xi+2 = xi+1-f (xi+1)/f '(xi+1), 然后判断 |(xi+2-xi+1)/xi。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.