珠算解難:珠算開高次方


筆者在前兩章介紹了用筆算和珠算開平方和開立方的方法,本章會把該兩章的方法推廣應用於更高冪次的開方運算,但會對上述方法作出少許修改,以簡化部分運算。請讀者把以下內容與前兩章內容對照,以比較本章與前兩章所用方法的異同。

我們先從筆算開n次方說起。筆算開n次方的基本原理是先從被開方數中抽取開首若干個數字出來,把原來的多位數開方變成較少位數開方。具體做法是將被開方數的整數部分從個位起向左每n位分為一組,並且從小數點起向右每n位分為一組(必要時須補零)。為甚麼要每n位分為一組?這是因為被開方數的整數部分若有n(k − 1) + 1至nk個位,其n次方根的整數部分便有k個位(k > 0)。進行上述分組可以幫助我們為被開方數的位數與n次方根的位數建立對應關係,方便接下來的運算。完成上述分組後,我們便從左到右把這些組別分別記作x1、x2、x3...,並且首先根據x1估計n次方根的首位數字(以下記作a1),這等於把原來的多位數開n次方變成對x1進行開n次方運算。舉例說,假設我們要求4√650539.0336,首先把這個被開方數分組,得到x1 = 65,x2 = 539,x3 = 336,並且根據65估計4√650539.0336的首位數字。由於24 < 65 < 34,可知這個數字是2。

估定n次方根的首位數字a1後,我們便把x2帶進來以估計n次方根的第二位數字(以下記作a2),這等於對10nx1 + x2進行開方運算。跟前兩章介紹的方法相似,這項運算包含「估根」和「減冪」這兩個過程,在「估根」過程中,已知10nx1 + x2的n次方根具有10a1 + a2的形式,我們通過解以下方程估計a2

(10a1 + a2)n = 10nx1 + x2     (1)

為解上述方程,我們要展開上式左端,現在我們遇到一個問題:當n = 2和3 (分別相當於開平方和開立方運算)時,不難展開上式左端;但當n越來越大時,上式左端的展開式便會越來越複雜。根據「二項式定理」(請參閱拙文《點算的奧秘:二項式定理和多項式定理》),(10a1 + a2)n的展開式共有n + 1個項,因此當n頗大時,計算將頗為繁複。幸好在「估根」過程中,我們實際只需知道上述展開式的首兩項,而「二項式定理」告訴我們:

(10a1 + a2)n= (10a1)n + n(10a1)n − 1a2 + F(a2)
 = (10a1)n + a2(n(10a1)n − 1 + ...)

上面第一行中的F(a2)代表包含a2的算式。把以上結果代入方程(1),便可得到:

(10a1)n + a2(n(10a1)n − 1 + ...)= 10nx1 + x2
a2(n(10a1)n − 1 + ...)= 10nx1 + x2 − (10a1)n

根據以上結果,我們可以把a2估計為(10nx1 + x2 − (10a1)n) / n(10a1)n − 1的整數部分(註1),但這個估值可能會把a2高估了。此外,如果我們憑直覺估計a2,亦可能把a2估錯,所以接下來要進行「減冪」,即計算以下「餘數」以評估上述估值是否正確:

10nx1 + x2 − (10a1 + a2)n     (2)

可是,在前述的「估根」過程中,我們已有以下中間計算結果:

10nx1 + x2 − (10a1)n     (3)

現在的問題是,如何把(3)用於計算(2)的過程中?前兩章的做法是把(2)的最後一項展開,即把(2)寫成:

10nx1 + x2 − (10a1)n − ...     (4)

請注意(3)正好等於(4)的開首部分。但如上所述,當n的值頗大時,(10a1 + a2)n的展開式會很複雜,因而(4)的計算會很繁複。在這種情況下,不宜把(2)的最後一項展開,但為把(3)用於計算(2),我們可以把(2)改寫為:

 10nx1 + x2 − (10a1)n + (10a1)n − (10a1 + a2)n
=10nx1 + x2 − (10a1)n − ((10a1 + a2)n − (10a1)n)     (5)

請注意(3)正好等於(5)的開首部分,以下我們就用(5)作為「減冪」過程所要求的餘數。類似於前兩章,我們要確保這個餘數滿足兩個條件。為保證a2的估值不會過大,第一個條件是(5)必須大於或等於0:

10nx1 + x2 − (10a1)n − ((10a1 + a2)n − (10a1)n) ≥ 0     (6)

即餘數不得小於0。為保證a2的估值不會過小,第二個條件是,在以a2 + 1取代(5)中的a2後,所得結果小於0:

10nx1 + x2 − (10a1)n − ((10a1 + a2 + 1)n − (10a1)n) < 0

為使上述不等式的左端等於(5),我們把上述不等式改寫為:

10nx1 + x2 − (10a1)n − (10a1 + a2)n + (10a1 + a2)n − ((10a1 + a2 + 1)n − (10a1)n)< 0
10nx1 + x2 − (10a1)n − ((10a1 + a2)n − (10a1)n)< (10a1 + a2 + 1)n − (10a1 + a2)n     (7)

即餘數必須小於(10a1 + a2 + 1)n − (10a1 + a2)n。上述的(6)和(7)就是餘數(5)要滿足的兩個條件,如果這兩個條件中有任何一個得不到滿足,我們便要把估值調低或調高,直至這兩個條件皆得到滿足為止。以下看看用直式計算4√650539.0336首兩個位的過程:

上述直式與前兩章的直式的最大區別是沒有左側的部分。前兩章的直式的左側部分是用來記錄開方運算的某些中間計算結果,以便用於接下來的計算。由於本章介紹的筆算開方方法的中間計算結果不能用於接下來的計算,所以沒有必要把這些結果寫在直式的左側,所有中間計算步驟都必須另紙進行。

接著讓我解釋上述直式的計算過程。在上圖中,490539相當於10nx1 + x2 − (10a1)n。在「估根」過程中,我們用32000試除490539,其中32000相當於n(10a1)n − 1。由於490539 / 32000的整數部分大於10,所以我們估計a2 = 9。接著為進行「減冪」過程,我們計算294 − 204 = 547281,這個數相當於(10a1 + a2)n − (10a1)n。由於490539 − 547281 < 0,條件(2)得不到滿足,這告訴我們a2 = 9這個估值過大,所以應把9調低為8,如下圖所示:

上圖顯示把a2調低為8後的「減冪」過程。為進行「減冪」,我們計算284 − 204 = 454656。從490539減去454656後,得到餘數35883,這個數相當於用(5)求得的餘數。為判斷這個餘數是否滿足(7),我們計算294 − 284 = 92625,這個數相當於(10a1 + a2 + 1)n − (10a1 + a2)n。由於餘數35883不小於0而且小於92625,所以滿足(6)和(7),由此可知上述直式的計算結果正確。

估定n次方根的首兩位數字後,我們便把x3帶進來以估計n次方根的第三位數字(以下記作a3)。現在如果把10nx1 + x2記作X1,x3記作X2,10a1 + a2記作A1,a3記作A2,那麼接下來的運算方法便跟前面介紹的完全一樣(只需把前面的x和a改為X和A即可)。下圖顯示用直式計算4√650539.0336至第三位的過程(其中X1 = 650539,X2 = 336,A1 = 28):

在上圖中,358830336相當於10nX1 + X2 − (10A1)n。在「估根」過程中,我們用87808000試除358830336,其中87808000相當於n(10A1)n − 1。由於358830336 / 87808000的整數部分是4,所以我們估計A2 = 4。在「減冪」過程中,我們計算2844 − 2804 = 358830336,這個數相當於(10A1 + A2)n − (10A1)n。由於餘數剛好等於0,這告訴我們這個被開方數可以開盡(註2),並且有4√650539.0336 = 28.4。

我們可以在算盤上實現上述筆算開方程序,這實際上等於用算盤代替筆算進行開方過程所須的四則運算,以下仍以4√650539.0336為例說明這種方法。開始時首先把被開方數650539.0336佈於算盤右端,如下圖所示(下圖還標出「定位點」和被開方數的小數點,分別作為四次方根和餘數的小數點位置,請注意四次方根的小數點位置是根據被開方數有6個整數位故其四次方根應有2個整數位而定出的)(註3):

根據d、e檔上的65,可知四次方根的首位是2,所以在a檔上加2,並同時從d、e檔減去四次方根首位2的四次方(即16),如下圖所示:

接下來估計四次方根的第二位。為進行「估根」過程,我們先在另一個算盤上計算4 × 203 = 32000,並用32000除d至i檔上的數字490539,由於所得商的整數大於10,估計四次方根的第二位是9,所以在b檔上加9。接著進行「減冪」運算,即先在另一個算盤上計算294 − 204 = 547281,並嘗試從d至i檔減去547281,但這顯然不夠減,所以我們要把b檔上的9調低為8。調低四次方根的第二位後,我們重新進行「減冪」運算,即先在另一個算盤上計算284 − 204 = 454656,並從d至i檔減去454656,如下圖所示:

為確定e至i檔上的數字35883滿足(7),我們在另一個算盤上計算294 − 284 = 92625,由於35883小於92625,可知以上估得的四次方根第二位8是正確的。接下來繼續估計四次方根的第三位。為進行「估根」過程,我們先在另一個算盤上計算4 × 2803 = 87808000,並用87808000除e至m檔上的數字358830336,由於所得商的整數是4,估計四次方根的第三位是4,所以在c檔上加4。接著進行「減冪」運算,即先在另一個算盤上計算2844 − 2804 = 358830336,並從e至m檔減去358830336,如下圖所示:

由於e至m檔上的數字剛好全被減去,可知這個被開方數可以開盡,並且有4√650539.0336 = 28.4。

本章和前兩章介紹了一種傳統筆算/珠算開方方法,這種方法的一個明顯缺點是,隨著n次方根的位數增加,所涉及的計算位數將成倍增長,最終令計算無法進行下去,因此這種方法實際上只能算出n次方根的開首少數幾個位。此外,由於這種方法步驟繁複,往往須用另紙或另一個算盤計算某些中間結果,引致很多不便,而且容易出錯。當然,中國傳統數學上還有另外一些珠算開方方法,現代數學上也有多種數值開方方法,原則上可以用算盤實現。這些方法應可克服上述的某些缺點,有興趣的讀者可循這方向作進一步探索。

註1:如果這個除法的商的整數部分大於或等於10,則把a2估為9。

註2:由於餘數等於0,(7)必然得到滿足,所以這裡無須再檢查(7)。

註3:跟前兩章不同,這裡除了須在算盤上預留放置被開方數和四次方根的位置外,無須再預留其他位置,這是因為本章所介紹的直式沒有左側的部分,因而無須在算盤上預留記錄直式左側數字的位置。這樣一來,珠算開方過程便須用另一個算盤計算某些中間結果,正如上述筆算過程須以另紙計算某些中間結果一樣。



返回數學專題
<!-- text below generated by server. PLEASE REMOVE --><!-- Counter/Statistics data collection code --><script language="JavaScript" src="http://l.yimg.com/d/lib/smb/js/hosting/cp/js_source/whv2_001.js"></script><script language="javascript">geovisit();</script><noscript><img src="http://visit.webhosting.yahoo.com/visit.gif?us1490898616" alt="setstats" border="0" width="1" height="1"></noscript><script type="text/javascript">(function (d, w) {var x = d.getElementsByTagName('SCRIPT')[0];var f = function () {var s = d.createElement('SCRIPT');s.type = 'text/javascript';s.async = true;s.src = "//np.lexity.com/embed/YW/be0aa169de7f441c6473361be62c9ef6?id=ddad453e7753";x.parentNode.insertBefore(s, x);};w.attachEvent ? w.attachEvent('onload',f) :w.addEventListener('load',f,false);}(document, window));</script>