周暢,段耀勇
(1.西安郵電大學 理學院,陜西 西安 710121;2.中國人民警察大學 智慧警務學院,河北 廊坊 065000)
開方術的產(chǎn)生起源于一元高次方程的求解問題?!毒耪滤阈g》中已有相對完整的開方術程序,開平方和開立方都有一個帶從開方的例子。之后經(jīng)劉徽等人改進的開方術一直沿用到唐朝。宋元時期,先后出現(xiàn)了賈憲立成釋鎖開方和賈憲増乘開方,然后經(jīng)歷了立成釋鎖和增乘開方短暫并存的時期,后發(fā)展為秦九韶的正負開方術,而又趨于完善為朱世杰的正負開方。到明朝和清朝初期,中算家的開方是現(xiàn)在算盤上使用立成釋鎖方法完成的,正負開方術已無人會用。直到汪萊、李銳時代,中算家才重拾宋元的正負開方術著手研究了高次方程的求解問題,并得到了一些諸如笛卡兒符號法則、韋達定理等方程論方面的結論。[1]
為了更清楚地描述“益積”和“翻法”的身世,我們按歷史時間順序以開方算法自身的特點將中國的開方術分為五個階段,即前劉益“九章”開方、劉益開方、秦九韶-朱世杰開方、明朝珠算立成釋鎖開方以及焦循-李銳開方。
前劉益“九章”開方具有四個特點:一是沿襲九章的開方法可以稱為前立成釋鎖開方法,開方所用如“1-2-1”和“1-3-3-1”的二項式定理的系數(shù)還是規(guī)定的;二是首項系數(shù)為“1”;三是開方中“實”為正,即方程的常數(shù)項寫在方程右邊,這具有強烈的現(xiàn)實和幾何意義,因為“實”可能為面積或者體積;四是減根的最后一步經(jīng)劉徽改進為“減實”。對應的方程為x2=N(N>0),x3=N(N>0)和x2+Bx=A(A>0,B>0),時稱開帶從方。后來,祖沖之提出了“開差冪”和“開差立”屬于“開帶從平方”和“開帶從立方”的內(nèi)容,可惜沒有文獻傳世。唐朝的王孝通在《緝古算經(jīng)》中記載了許多如x3+Bx2+Cx=A(A>0,B>0,C>0)用開帶從立方求得一個正根的題目,書中還有一個x4+px2=N的方程是用兩次開平方得到結果的。
在宋朝已出現(xiàn)“立成釋鎖”和“增乘開方”兩種開任意高次方的方法。劉益開方稍后于賈憲,他的“減從術”和“翻積術”開方運算說明他熟悉增乘開方,其開方對應的方程為xn+a1xn-1+a2xn-2+…+an-1x=an,ai>0,i=1,2,3,…,n,即方程的首項系數(shù)為“1”且所有系數(shù)均為正數(shù),無論是立成釋鎖還是增乘開方,減根的最后一步都是“減實”。當然,劉益在中國古代數(shù)學史上最先引入系數(shù)可為負數(shù)的方程,并突破了方程首項系數(shù)必須為1的限制,這種根本性的改變對原來的算法會帶來災難和沖擊。[2]劉益開方方程的改變會對原來的開方框架產(chǎn)生沖擊,或者說原來的開方結構已無法解釋新情況,因無法被接納所以需要新的解釋正名。
“增乘開方”由賈憲所創(chuàng),經(jīng)楊輝等人的推廣和傳播,到13世紀已成系統(tǒng),即以“增乘開方法”為主導的求高次方程正根的方法已經(jīng)發(fā)展得十分完備。秦九韶的“正負開方術”在中國數(shù)學史上首次提出“以方約實”的估根方法。秦九韶、李冶、朱世杰等在開方過程中遇“換骨”“投胎”則繼續(xù)開方,遇到系數(shù)是無理數(shù)的情況,則進行了有理化處理。對方程的最高次項系數(shù)出現(xiàn)不為“1”的情況,李冶、朱世杰等便創(chuàng)造了通過變量代換化最高次項系數(shù)為“1”的方法來處理得“之分術”,又稱為“連枝同體術”。
此時方程的各個系數(shù)基本上已無限制,只是秦九韶的増乘開方要求“實常為負”,如果實為正,則方程各項都乘以-1,同解化為“實常為負”。他這樣做,一是可以將開方減根最后一步“減實”變?yōu)榧臃ǎ归_方程序高度統(tǒng)一起來;二是可以保證開方的實與九章開方相同,原來的正統(tǒng)一變成了負。這是秦九韶繼續(xù)解釋劉益的“益積”和“翻法”的原因,他只是把開方的“實”移到了方程的左邊,減根的最后一步已從“減實”變成“加實”。
李冶和朱世杰的開方已無“實常為負”的限制,至此,増乘開方法中各系數(shù)(包括常數(shù))全程都帶符號參與嚴格的、徹底的“邊乘邊加”運算。
元朝仍然以籌算為主,明初開始逐漸以珠算為主,最遲在明正德嘉靖年間珠算完全取代了籌算,清初數(shù)學家已經(jīng)完全不懂籌算了。由于開方術比較復雜,在珠算用于加減乘除法之后,才用于開方。由于明朝時期“增乘開方法”失傳,珠算開方在中國算學史乃至世界數(shù)學史上也是很有特色的。此時在算盤上利用立成釋鎖方法開方,這種方法較增乘開方復雜,但是方程的系數(shù)(包括常數(shù))已經(jīng)沒有任何限制,所以“益積”和“翻法”問題會變得更加復雜。關于2次、3次 和4次方程,則需要提到吳敬、顧應祥、周述學和孔廣森四位數(shù)學家。[3]顧應祥對各種開帶從方的論述最為全面,在《測圓海鏡分類釋術》中有六十多個開帶從方的程序說明,包括2次、3次和4次方程,涉及“益積”“減從”和“翻積”等各種不同的題型類別。
此時的開方特點,系數(shù)不帶符號參與運算,減根最后一步“減實”。
清中葉之后,人們重新發(fā)現(xiàn)“增乘開方法”,幾乎所有著名的數(shù)學家都投入到對秦九韶等開方術的研究?!罢勌烊选蓖羧R、李銳、焦循互相切磋辯詰,討論了方程的分類及根與系數(shù)的關系。這里,焦循使用的是秦九韶的開方法,而李銳用的則是朱世杰的方法,所以焦循會繼續(xù)深化、完備劉益和秦九韶的“益積”和“翻法”問題。李銳和朱世杰一樣認為開方只是一個單純的計算程序,無需討論計算細節(jié)中的問題。而且李銳的開方較朱世杰更進一步,開方可以開得負商,所以商也帶符號參與開方運算。
劉益前的開方因為所有系數(shù)都是正數(shù),“實”也是正數(shù),所以開方過程就是通過不斷“減實”使其變?yōu)?,此時開盡;或者逐漸變小,此時開方不盡,帶奇零。而劉益的“益積術”“減從”“翻積”“益隅”,都是因為開方中系數(shù)出現(xiàn)了負數(shù),所以開方過程中“減實”與以往的經(jīng)驗相比會發(fā)生異變,可能出現(xiàn)“實”越來越大或者干脆變號的情況。如此情況下,“益積”和“翻積”出現(xiàn)了。下面以兩個例題說明這兩種方法,為了敘述方便將籌碼改為阿拉伯數(shù)字。
與之前的方程不同,x2-12x=864出現(xiàn)了“負從”(-12),為此劉益提出“益積術”與“減從術”解決這個問題。圖1為“益積術”,使用的是九章開方法。[4]
按照《九章算術》的開方程序,首次估根為30,那么應該用30×(30-12)減根,但是因為這有悖既有的開方程序的語法,所以對于30×(30-12)=900-360,先 將-360益 積為864+360=1224,然后再歸結為合乎《九章算術》開方語法的程序進行減實。同理,倍根為60,用他估得方程的第二位根是6,按照《九章算術》的減根應為((60+6)+(-12))×6=324,這同樣也不符合既有的語法,所以對于((60+6)+(-12))×6=324,將72益積為72+324=396,然后減實,盡。
劉益的“翻法”,其中負隅的符號不是單獨考慮的,與九章算術開方不同,864-900出現(xiàn)了負數(shù),這與原來開方中“實”會減至0,或越來越小不同,因此,此處稱之為“翻積”,“實”發(fā)生了質(zhì)的改變??梢哉f脫胎換骨了,如錢寶琮在《增乘開方法的歷史發(fā)展》中指出的“投胎”“換骨”本來是神仙家的術語……在某些條件下減根后的方程必須“投胎”“換骨”……目的是在指導開方的人放心地開下去,不要因為“實”數(shù)有不尋常的轉(zhuǎn)變而縮手縮腳,不敢繼續(xù)開方。后來秦九韶稱“翻積”(翻法)為“換骨”,這里的開方算法是増乘開方。
-x2+60x=864出現(xiàn)了“益隅”(-1),為此劉益提出“翻積術”解決這個問題。圖2為“翻積術”,使用的是增乘方法。[4]64
圖2 翻積術
在中算家那里,解方程與開方是同義語,其方法有著鮮明的幾何背景。由于負系數(shù)的引入,使得釋鎖開方的幾何意義在某些情形下掩而不顯。劉益關于翻法的討論亦為秦九韶等繼承并發(fā)揚光大。引入負系數(shù)之后,方程根的個數(shù)、議商的方法問題等都較以前復雜得多,劉益討論了“翻積”“翻從”等,同時也留下了許多問題未及討論。
綜上,無論是“益積”“減從”還是“益隅”,都不過是因為開方時系數(shù)出現(xiàn)了負數(shù),也就是說方程中有的負系數(shù),這是不符合《九章算術》開方的語法的,所以劉益通過將負數(shù)部分產(chǎn)生“減實”的數(shù)值,事先加到“實”(被開方數(shù))上的方式來處理。此時,開方式已合乎系數(shù)都為正的情況,然后再按《九章算術》開方程序處理即可。這里如果古人不拘于《九章算術》系數(shù)為正的開方術的限制,直接負數(shù)帶著符號進行原有的程序計算的話,一種先進的開方法“增乘開方”便呼之欲出。如果考慮符號開方,無論是“益積”“益隅”還是“減縱”,開方的操作程序?qū)蟠蠛喕?,這正是“增乘開方”的優(yōu)越性所在。
關于易名“換骨”和“投胎”,清阮元《疇人傳》(卷二二·宋四·秦九韶):“……其遙度圓城術,以開九乘方得數(shù),運算尤為繁賾。略諸術所載開方圖,正負、加減、益積、翻法、說之尤詳。凡開平、開立及開三乘以上方,通一為道,有投胎、換骨、玲瓏、連枝諸目。”從前面的論述來看,劉益的“益積”和“翻積”都是由開方過程中系數(shù)出現(xiàn)了負號所致。秦九韶等繼承并發(fā)揚光大了劉益的“益積”和“翻積”方法。秦九韶的増乘開方要求“實常為負”,開方減根最后一步變?yōu)椤凹訉崱?。秦九韶的正負開方運算中符號沒有“直接”參與運算程序,而是采用了標注的方式完成,清朝的焦循采用了秦九韶的開方法繼續(xù)研究了“益積”和“翻法”,并完備了這個問題。
關于“益積”和“翻法”的完備,清朝數(shù)學家焦循在《開方通釋》中總結了“投胎”和“換骨”的方法,并給出了“益積”和“翻法”條件:“秦氏于商兩次者,有投胎、換骨二法。投胎即益積,方與實同名相加也。換骨即翻積,方與實異名相消也。大約和在隅,乃有益積,和在方乃有翻積。和在隅,益方大于初商,則益積。初商大于益方,則不益積。和在方,較數(shù)小于初商,則翻積。初商小于較數(shù),則不翻積。皆隨數(shù)目之多寡,而自然得之,非有成法也?!币簿褪钦f開方時,根據(jù)具體情況來定是“投胎”(益積)還是“換骨”(翻積),沒有事先給定判斷方法。
這兩個例題分別是解方程-x2+27x-72=0(圖3)和-x2+54x-720=0(圖4),都開得24的例子,從結果上來看,這兩個題目似乎也是焦循構造出來的。[5]第一個方程開方翻積,第二個不翻積。這里需要指出,焦循與秦九韶相同正負開方正負號標注,帶符號的加法只需“同加異減”即可,使用的是劉徽正負數(shù)的運算法則:“同名相除,異名相益,正無入負之,負無入正之。異名相除,同名相益,正無入正之,負無入負之。”
圖3 例題-x2+27x-72=0
圖4 例題-x2+54x-720=0
這里焦循構造x2-21x-72=0(圖5)和x2-19x-120=0(圖6),都是開得24的例子。[5]1463-14644第一個開方因為“方實同名”而“益積”,第二個因為“方實異名”而“不益積”。
圖5 例題x2-21x-72=0
圖6 例題x2-19x-120=0
從劉益和秦九韶處理的一種情況的兩種變體來看,“實”無論是正還是負都可能存在“益積”(投胎)和“翻積”(換骨)的問題,只是李冶稱秦九韶的“換骨”為“翻法”或者“倒積”,不限于此,如果開方導致一次項符號改變也稱“翻法”,比如-1.75x2+108x-1449=0,開方中常數(shù)項和一次項系數(shù)都變號了,李冶稱之為“倒積倒從開平方”,實際上推廣了“翻法”,此題即翻積又翻從。其益積開方與秦九韶相同,朱世杰對此就更不太關注了,比如他在《算學啟蒙》“開方釋鎖”有7個題目說是用“翻法”,但是實際情況是其中一個題目符號都沒改變,其余6題只是一次項或二次項符號改變,常數(shù)項未變號。另外《四元玉鑒》“端匹互隱”門第一問和“兩儀合轍”門第11問開方都需要“倒積”(翻法/換骨),但是朱世杰沒提此事,此時開方已是計算程序,無需再討論開方中“實”或“系數(shù)符號”的變號問題。[6]
而李銳和朱世杰所采用的增乘開方,方程的系數(shù)帶著符號進行“邊乘邊加”運算,亦無“實常為負”的要求(這個要求和九章開方運算一致,只是從秦九韶開始把九章的“正實”寫成了他在方程中為負的形式)。劉益時,“實”寫作“正”,當“隅”或“從”出現(xiàn)負號時,“減實”為0或者越來越小的慣例可能會被打破,如前所述,當“正實”變大或者變號時就是所謂的“益積”和“翻積”。秦九韶則將“實”按照方程的常數(shù)項系數(shù)寫出來,增乘開方時減根最后一步由“減實”變成“加實”,完備統(tǒng)一了開方程序。同樣,當這個“負實”在開方運算中絕對值變大即為“投胎”,稱謂也容易理解;當他由負變正時就是“換骨”。朱世杰和李銳(商可以為負)的增乘開方,其方程的系數(shù)、常數(shù)項和商都帶符號參與開方運算,算式中系數(shù)帶符號。對于可能會出現(xiàn)的“益積”或“翻積”的情況,也變得無需討論了,此時已沒有必要關注開方中的常數(shù)項是否變號或者絕對值變大,或者方程的其他系數(shù)符號發(fā)生改變的情況,正負開方只是單純求得一元高次方程的一個根的程序。
圖7是一個李銳求得方程負根的例子。[9]其中,在標注方程各系數(shù)(包括常數(shù)項)的符號外,其符號也在系數(shù)中標注出來,這一點與李冶和朱世杰相同。這里的正負開方只需要按程序計算就行,系數(shù)帶符號,常數(shù)項帶符號,商也可以帶符號。之前的開方中,商是不帶位值參與計算,乘后數(shù)值大小由開方各系數(shù)的位置決定。[7]所以朱世杰只是有了舍棄“益積”和“翻法”的傾向,李銳才是徹底放棄這些說法的踐行者。對李銳的開方來說,“常數(shù)項的變號”(系數(shù)的變號)或者實絕對值變大都沒有意義,隨后的相關討論也是無源之水了。
圖7 李銳求得負根的例子
盡管李銳之后無需討論“益積”和“翻法”,但是這些問題在明朝的珠算開方中卻異常豐富,這與珠算開方的過程密切相關。
如蒙語中馬身體的各部位都有特定名稱和因紐特語中有諸多關于白色的詞匯一樣,在開方算法中也有與計算細節(jié)相關的各種稱謂?!胺ā焙汀耙娣e”就是這樣的例子。從劉益的“益積術”和道古“正負開方”中“脫胎”“換骨”“玲瓏”法開始,經(jīng)吳敬、顧應祥和周述學分別對二次方程歸為13、15和18類;再到孔廣森對3次方程和4次方程的歸納分類;最后到汪萊基于方程“可知”的概念對高次方程重新分類而完備。明朝珠算開方方程仍然“實常為負”,自然存在“翻法”和“益積”的問題,所以,在明朝的開方運算過程中出現(xiàn)了以“益積”和“翻法”為核心詞匯的開方算法的分類,實際上這是根據(jù)其開方過程某一步驟的特點而取的名稱。
顧應祥所著的《測圓海鏡分類釋術》研究并且注釋了《測圓海鏡》,于1550年成書。他將《測圓海鏡》的全部問題重新加以分類,厘為十卷,仍得170問,每問之后有釋,釋后有術,對問題解答的演算過程詳加推導,并對其中的開方、開帶從方過程一一寫明(表1,表2)。
表1 吳敬分類
表2 顧應祥分類
顧應祥在吳敬二次方程分類的基礎上,使得這部分內(nèi)容更加豐富和全面,[3]118-123顧應祥算書中載有不同系數(shù)符號的一元二次方程的解法,如對一元二次方程Ax2+Bx=C(A≠0)來說,顧應祥一般稱二次項系數(shù)A為隅,一次項系數(shù)B為從,C一般被稱為實數(shù)且為正。當A=1,B>0,C>0時,他稱用帶從開平方法求解,這和吳敬《九章比類》相同,而楊輝、王文素、程大位等稱之為“益從開平方”;當A>1,B=0,C>0時,用負隅開平方法求解,等等。相較于顧應祥的其他算書,其《測圓海鏡分類釋術》中介紹的帶從開方法最為全面。另外,顧應祥還對3次方程和4次方程[3]118-141進行了分類,分別對應著17種和7種形式。
周述學是明代后期(約16世紀)著名的科學家。他所著的數(shù)學著作《神道大編歷宗算會》簡稱《歷宗算會》,全書十五卷。他在《歷宗算會》中繼續(xù)研究二次方程的分類問題,分為18類情況。[3]118-127表3是周述學《歷宗算會》開帶從平方法分類。
表3 周述學《歷宗算會》開帶從平方法分類
這里,不難發(fā)現(xiàn)以開方算法中的特點對方程的歸類已成傳統(tǒng),其中出現(xiàn)的所有的名稱都與“帶從”“益積”(倒積)、“翻法”“益隅”“減實”“減從”等進行組合得到,原因很簡單,珠算開方用“立成釋鎖”逐漸發(fā)展為“珠算開方”,這里運算各系數(shù)都不帶符號運算,需要對方程的各系數(shù)(包括常數(shù))“是否變號”和“實”的絕對值是否會出現(xiàn)增大的情況、開方的各系數(shù)是否為負都需要作為開方過程中的異變標注出來,也就出現(xiàn)上述豐富的開方分類內(nèi)容,但是實際上更多的開方運算細節(jié)的標準,并非嚴格意義上的方程分類。