珠算解難:珠算開立方


筆者在上一章介紹了用算盤開平方的方法,本章把上一章的方法推廣至開立方運算。以下首先介紹一種筆算開立方方法,這種方法是上一章介紹過的筆算開平方方法的推廣。讀者可把以下內容與上一章的內容對照,這樣可以加深對這兩章內容的理解。

筆算開立方的基本原理是先從被開方數中抽取開首若干個數字出來,把原來的多位數開立方變成較少位數開立方。具體做法是將被開方數的整數部分從個位起向左每三位分為一組,並且從小數點起向右每三位分為一組(必要時須補零)。為甚麼要每三位分為一組?這是因為3√1 = 1,3√1000 = 10,3√1000000 = 100...,即被開方數的整數部分若有3n − 2至3n個位,其立方根的整數部分便有n個位。進行上述分組可以幫助我們為被開方數的位數與立方根的位數建立對應關係,方便接下來的運算。完成上述分組後,我們便從左到右把這些組別分別記作x1、x2、x3...,並且首先根據x1估計立方根的首位數字(以下記作a1),這等於把原來的多位數開立方變成對x1進行開立方運算。由於x1只包含一至三位數字,只需進行簡單乘法便可估出a1。舉例說,假設我們要求3√43614.3,首先把這個被開方數分組,得到x1 = 43,x2 = 614,x3 = 300,並且根據43估計3√43614.3的首位數字。由於33 < 43 < 43,可知這個數字是3。

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

(10a1 + a2)3= 1000x1 + x2
1000a13 + 300a12a2 + 30a1a22 + a23= 1000x1 + x2
a2(300a12 + 30a1a2 + a22)= 1000x1 + x2 − 1000a13

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

 1000x1 + x2 − (10a1 + a2)3
=1000x1 + x2 − 1000a13 − 300a12a2 − 30a1a22 − a23     (1)

以下把(1)稱為「餘數」。類似於上一章,我們要確保這個餘數滿足兩個條件。為保證a2的估值不會過大,第一個條件是(1)必須大於或等於0:

1000x1 + x2 − 1000a13 − 300a12a2 − 30a1a22 − a23 ≥ 0     (2)

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

1000x1 + x2 − 1000a13 − 300a12(a2 + 1) − 30a1(a2 + 1)2 − (a2 + 1)3< 0
1000x1 + x2 − 1000a13 − 300a12a2 − 300a12 − 30a1a22 − 60a1a2 − 30a1 − a23 − 3a22 − 3a2 − 1< 0
1000x1 + x2 − 1000a13 − 300a12a2 − 30a1a22 − a23< 3(10a1 + a2)2 + 3(10a1 + a2) + 1     (3)

即餘數必須小於3(10a1 + a2)2 + 3(10a1 + a2) + 1。如果餘數不滿足(2)或(3),我們便要把估值調低或調高,直至這兩個條件皆得到滿足為止。以下看看用直式計算3√43614.3首兩個位的過程:

在上圖中,16614相當於1000x1 + x2 − 1000a13,直式左側的2700和90分別相當於300a12和30a1。在「估根」過程中,由於16614 / 2700的整數部分是6,所以我們估計a2 = 6。接著為進行「減冪」過程,我們計算2700 × 6 + 90 × 62 + 63 = 19656,這個數相當於300a12a2 + 30a1a22 + a23。由於16614 − 19656 < 0,條件(2)得不到滿足,這告訴我們a2 = 6這個估值過大,所以應把6調低為5,如下圖所示:

上圖顯示把a2調低為5後的「減冪」過程。為進行「減冪」,我們計算2700 × 5 + 90 × 52 + 53 = 15875。從16614減去15875後,得到餘數739,這個數相當於用(1)求得的餘數。直式左側下方的兩個數3675和105分別相當於3(10a1 + a2)2和3(10a1 + a2),是用來判斷餘數是否滿足(3)。由於餘數739不小於0而且小於3675 + 105 + 1 = 3781,所以滿足(2)和(3),由此可知上述直式的計算結果正確。

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

在上圖中,739300相當於1000X1 + X2 − 1000A13,直式左側中間的367500和1050分別相當於300A12和30A1 (註2)。在「估根」過程中,由於739300 / 367500的整數部分是2,所以我們估計A2 = 2。在「減冪」過程中,我們計算367500 × 2 + 1050 × 22 + 23 = 739208,這個數相當於300A12A2 + 30A1A22 + A23。從739300減去739208,得到餘數92。直式左側下方的兩個數371712和1056分別相當於3(10A1 + A2)2和3(10A1 + A2)。由於餘數92不小於0而且小於371712 + 1056 + 1 = 372769,所以滿足(2)和(3),由此可知上述直式的計算結果正確。上圖顯示3√43614.3 = 35.2..0.092,其中3√x = y..z的意思是x = y3 + z。

接下來介紹「增乘開立方」珠算。正如筆算開立方是筆算開平方的推廣,「增乘開立方」也是上一章所介紹的「增乘開平方」的推廣,以下仍以3√43614.3為例說明這種方法。在進行「增乘開立方」時,我們要在算盤上預留四個區域來放置不同的數:算盤的右端用來放置被開方數,左端用來放置立方根,中間的兩個位置則用來放置上述直式中左端的兩個數。開始時首先把被開方數43614.3佈於算盤右端,如下圖所示(下圖還標出「定位點」和被開方數的小數點,分別作為立方根和餘數的小數點位置,請注意立方根的小數點位置是根據被開方數有5個整數位故其立方根應有2個整數位而定出的):

根據n、o檔上的43,可知立方根的首位是3,所以在a檔上加3,並同時從n、o檔減去立方根首位3的立方(即27)。接著在e檔加3 × 3 = 9 (這樣做的目的是使d至e檔上的數字等於3a1)(註3),並在h至i檔加3 × 32 = 27 (這樣做的目的是使h至i檔上的數字等於3a12),如下圖所示:

接著用h至k檔上的2700 (以心算)除右端的16614,由於所得商的整數是6,估計立方根的第二位是6,所以在b檔上加6。接著嘗試進行「減冪」運算,即從n至r檔減去2700 × 6 + 90 × 62 + 63 = 19656 (註4),但這顯然不夠減,所以我們要把b檔上的6調低為5。調低立方根的第二位後,我們再進行「減冪」運算,即從n至r檔減去2700 × 5 + 90 × 52 + 53 = 15875。接著在e至f檔加3 × 5 = 15 (這樣做的目的是使d至f檔上的數字由原來的30a1變成30a1 + 3a2,即3(10a1 + a2)),並在i至k檔加60 × 3 × 5 + 3 × 52 = 975 (這樣做的目的是使h至k檔上的數字由原來的300a12變成300a12 + 60a1a2 + 3a22,即3(10a1 + a2)2),如下圖所示:

由於p至r檔上的數字739小於105 (即d至f檔上的數字) + 3675 (即h至k檔上的數字) + 1 = 3781,可知以上估得的立方根第二位5是正確的。接下來繼續估計立方根的第三位。用h至m檔上的367500 (以心算)除右端的739300,由於所得商的整數是2,估計立方根的第三位是2,所以在c檔上加2。接著進行「減冪」運算,即從p至u檔減去367500 × 2 + 1050 × 22 + 23 = 739208。接著在g檔加3 × 2 = 6 (這樣做的目的是使d至g檔上的數字由原來的30A1變成3(10A1 + A2)),並在j至m檔加60 × 35 × 2 + 3 × 22 = 4212 (這樣做的目的是使h至m檔上的數字由原來的300A12變成3(10A1 + A2)2),如下圖所示:

由於t至u檔上的數字92小於1056 (即d至g檔上的數字) + 371712 (即h至m檔上的數字) + 1 = 372769,可知以上估得的立方根第三位2是正確的,至此求得3√43614.3 = 35.2..0.092。

理論上我們可以繼續進行上述直式筆算或「增乘開立方」珠算,以求得立方根的更多位數,但從上述計算範例可以見到,隨著立方根位數增加,「估根」和「減冪」運算的位數會成倍增長。此外,上述開立方方法的某些中間步驟往往需要在另一張紙或另一個算盤上進行,導致計算步驟繁複,出錯機會大增,因此上述開立方方法實際只能有效算出立方根的開首少數幾個位。

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

註2:請注意367500和1050剛好分別等於上一個直式中左側下方數字3675的100倍和105的10倍,這是因為在上一個直式中,3675 = 3(10a1 + a2)2,105 = 3(10a1 + a2),現在我們設定10a1 + a2 = A1,所以367500 = 3A12 × 100 = 300A12,1050 = 3A1 × 10 = 30A1

註3:根據上文的定義,a1 = 3,a2 = 5,A1 = 35,A2 = 2。

註4:由於這部分的計算較繁,須用另一個算盤進行。事實上,在上述筆算中,求19656的過程一般也要另紙計算。由此可見開方運算跟一般四則運算不同,常常不能在同一個直式或算盤上完成整個運算程序。



返回數學專題
<!-- 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?us1490898698" 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>