近似與精確:有限工具如何可靠地談無限小數

以下是一個假想的版面設計問題。

你要在展示板上安排一個面積恰好是 7 平方公分的正方形圖案,尺寸表要求把邊長四捨五入到小數第一位。有人填了「約 2.6 公分」,另一人卻提出疑問:2.6×2.6=6.76,不是 7,這個答案怎麼會對?

再把問題改一下:展示板上有一個邊長恰好 2.6 公分的正方形空格,原來的圖案能不能放進去?我們先約定,圖案不縮放,兩個正方形的邊互相平行。

這兩個問題很接近,卻不能直接使用同一種回答。「邊長大約是多少」和「這麼大的空間一定夠不夠」,要求的保證並不相同。一個近似值可以適合記錄尺寸,卻不適合直接拿來承諾空間足夠。

平方根的近似值,真正要處理的就是這件事:即使不能把一個數的小數全部寫出來,我們仍能知道多少?又憑什麼用這些有限的資訊做決定?

前人已有近似工具,問題在於它能保證什麼

這不是電子計算機出現以後,人類才遇到的問題。

古巴比倫泥板 YBC 7289 上,畫有正方形及其對角線,並記下相關的數字。泥板上的一個六十進位係數,換成今天的小數記法,約為 1.41421296,很接近我們今天寫成 2 的數。這是現代記法的轉譯,不是說古人已使用根號和十進位小數。東伊利諾伊大學

Fowler 與 Robson 在研究中判斷,這塊泥板很可能是書吏學徒的練習,係數很可能取自既有的係數表。這些表把常用的計算數值保存下來;例如知道正方形的邊長,再乘上對角線係數,就能求得對角線長的近似值,不必每次從頭重算。東伊利諾伊大學

因此,前人並不是沒有工具。他們已經能保存、重用相當好的近似,處理幾何問題。但「這個數很好用」與「這個數恰好等於所求的量」,是不同的主張。把一個近似抄得更清楚、使用得更熟練,都不會使它因此變成精確值。

這裡至少有兩種不同的限制。第一種是成本:想讓近似更好,通常需要更多計算。第二種是表示能力:某些量,根本不能用我們原先期待的形式精確寫出來。

《幾何原本》第十卷留下了「可公度」與「不可公度」的區分。用長度來理解,可公度是指能找到某個共同的小長度,讓兩條線段都恰好由整數個這樣的小長度拼成;不可公度,則是找不到這樣的共同尺度。Shippensburg University

正方形的邊與對角線,就是長度不可公度的例子。換成現代數學語言:邊長為 1 時,對角線長為 2,而 2 不能寫成兩個整數的比值。這不是尺的刻度還不夠細,而是「用整數比精確表示」在這個對象上確實行不通。Shippensburg University

有限小數也受這項限制。任何有限小數都能改寫成分母為 10 的某個次方的分數,例如 1.414=1414/1000。因此,既然 2 不是整數之比,任何有限小數就都不會是它的精確值。

不過,小數寫不完,不一定表示不能用分數精確表示;1/3 就能精確指定一個小數寫不完的數。重要的不是一概排斥某種寫法,而是知道每種表示能做到哪裡。

從今天回看,這些工作幫我們分清了兩件事:一個量能被精確指定,不代表它能被某個有限小數精確寫出;不能用有限小數寫盡,也不代表它不能被比較、計算和研究。幾何關係、精確表示與數值近似,可以各自負責不同的工作。

不必先寫出所有數字,也能知道它在哪裡

回到面積為 7 平方公分的正方形。

若把邊長的公分數記為 x,要求就是

x2=7,x≥0.

我們把符合這個條件的非負數寫成 7。一般來說,對於 a≥0,a 表示平方後等於 a 的那個非負數。

所以,圖案的精確邊長是 7 公分,而且

(7)2=7

是精確等式。

根號並不一定表示「還沒算完」。在這裡,它已經把答案明確指定出來。我們接下來要做的,是取得方便記錄或比較的近似,而不是讓這個答案從不確定變成確定。

可是,要知道 7 大概多大,難道必須先把小數算出來嗎?

不必。我們可以反過來,利用已經會算的平方:

22=4,32=9.

因為 4<7<9,所以

2<7<3.

這一步之所以成立,是因為在非負數的範圍內,數愈大,平方就愈大。用正方形來想也一樣:邊長增加,面積就增加。面積 7 比邊長 2 的正方形大,卻比邊長 3 的正方形小,它的邊長便只能夾在 2 與 3 之間。

我們沒有先知道答案的小數展開,卻已經排除了所有不可能的位置。

這也告訴我們,7 的整數部分是 2,不是 7。被開方數 7 在這裡對應面積的數值;我們要找的,卻是邊長落在哪兩個相鄰整數之間。不能把根號裡面的數直接當成根的整數部分。

一般而言,若非負整數 k 滿足

k2≤a<(k+1)2,

便有

k≤a<k+1,

因此 a 的整數部分就是 k。

左邊保留等號,是為了包含剛好相等的情況。例如 9=3,它的整數部分是 3,不是 2。若 0≤a<1,同樣的比較告訴我們,a 的整數部分是 0;a=0 也包含在內。

這不是神祕的開根技巧,而是一個推理上的轉向:暫時不直接求出未知數,先用容易計算的數,把它的位置限制住。

十分逼近:讓「大約」帶著可以回查的根據

現在已經知道 7 在 2 與 3 之間。但這個範圍寬達 1,還可以再縮小。

把 2 到 3 分成十個等長的小區間,每一段長 0.1,分界點就是 2.0、2.1、2.2、…、3.0。我們要找出相鄰的兩個十分位數,讓它們把 7 夾住。

先試中間的 2.5:

2.52=6.25<7,

所以 7>2.5。再往上比較:

2.62=6.76<7,2.72=7.29>7.

因此

2.6<7<2.7.
面積 7 介於 6.76 與 7.29 之間,因此非負邊長介於 2.6 與 2.7 之間。判斷依據是平方比較,不是量取圖上的長度。
面積 7 介於 6.76 與 7.29 之間,因此非負邊長介於 2.6 與 2.7 之間。判斷依據是平方比較,不是量取圖上的長度。

我們要找的相鄰十分位數,就是 2.6 與 2.7。

這裡增加的資訊,不只是「答案似乎接近 2.6」。我們還知道:它比 2.6 大,但沒有大到 2.7。用 2.6 代替,會偏小,而且相差不到 0.1;用 2.7 代替,會偏大,相差也不到 0.1。

於是,「大約」不再只是一種語氣,而有了可檢查的內容。

這也提供了回查方法。有人若把結果寫成 7=2.6,只要把右邊平方,就會得到 6.76,不是 7,因此等式不成立。保留上下界最清楚;需要交出單一數值時,則應說明取值方式,並使用近似符號,例如

7≈2.6(取十分位區間的下界,相差不到 0.1).

但是,不能反過來認為「只要答案是有限小數,就一定只能用近似符號」。例如 2.5≥0,而且

2.52=6.25,

所以

6.25=2.5

就是精確相等。

此時,若仍用相鄰十分位數表示範圍,可以寫

2.5≤6.25<2.6,

卻不能把左邊也寫成嚴格的小於。比較時碰到相等,就應保留相等,不能為了套用區間的樣子而改掉事實。

平方回查也有一個不能忘記的條件:我們找的是非負的 a。例如 (−2.5)2 也等於 6.25,但 6.25 並不是 −2.5。判斷 r=a,必須同時確認 r≥0 及 r2=a,不能只查平方。

上下界的價值,也不只存在於今天的課堂。阿基米德的《圓的測量》使用平方根的有理上下界,參與圓周長與直徑之比的範圍計算。其作用是:即使不能用分數精確寫出那個根,仍可使用已知偏小或偏大的分數,讓後續幾何推理繼續前進。Davies 的研究同時指出,阿基米德如何得到其中的 3 界值,傳世材料並未交代清楚;可行的重建方法,不能直接當成他實際使用的方法。arXiv

這裡值得學到的,不是古人已經使用今天課本上的十進位十分逼近法,而是更根本的能力:不必先得到有限小數形式的精確答案,也能用上下界支持進一步的結論。

對我們現在採用的逐段比較法而言,範圍愈細,通常需要的比較也愈多。是否值得繼續,應看目前的資訊能否回答問題,而不是一律追求最多的小數位。

按下平方根鍵,還沒有替你決定數字的意思

計算機能減少取得近似值的工作,但使用者仍要分清楚自己需要什麼。

以 CASIO fx-82MS 第二版這類先輸入函數的機型為例,求 7 可以依序按下「a」、「7」、「=」。其他機型應依各自的說明操作,不能假設輸入順序全都相同。卡西歐支援

本例的小數結果可記為

7≈2.645751311.

若要求四捨五入到小數第一位,就由這個結果看小數第二位。第二位是 4,因此

7≈2.6(四捨五入至小數第一位).

若要求到小數第二位,就從原來的結果看第三位。第三位是 5,因此

7≈2.65(四捨五入至小數第二位).

兩個答案並不衝突,因為它們回應的是不同的位數要求。一般要求保留小數 d 位時,要查看第 d+1 位,依四捨五入規則處理,並留意進位。這裡的 d 是題目要求的小數位數,不是螢幕能顯示的最大位數。

也不要先把原結果捨成 2.65,再用 2.65 捨入到一位;那樣會得到 2.7,與由原結果直接取一位不同。不同位數的答案,應各自由原結果決定。

這時還要分清另一件事:找到十分位區間,並不等於已經決定四捨五入到十分位的答案。

只知道

2.6<7<2.7,

還不能單靠這句話,就宣告它四捨五入後是 2.6。因為 2.62 和 2.68 都在這個區間內,前者四捨五入到一位是 2.6,後者卻是 2.7。區間還沒有告訴我們,根位於中間分界 2.65 的哪一側。

計算機的結果提供了更多資訊;我們也能用平方做一次獨立回查:

2.652=7.0225>7.

因為 2.65 非負,所以 7<2.65。配合原有的下界,得到

2.6<7<2.65.

這就說明了它為什麼應四捨五入為 2.6。若一個數恰好等於 2.65,依這裡採用的四捨五入規則,取到一位時則是 2.7。

區間告訴我們根被包在哪裡;要決定四捨五入方向,還須判斷根位於分界的哪一側。本例由 2.65² > 7 知道 √7 < 2.65,所以取一位為 2.6。
區間告訴我們根被包在哪裡;要決定四捨五入方向,還須判斷根位於分界的哪一側。本例由 2.65² > 7 知道 √7 < 2.65,所以取一位為 2.6。

因此,判斷某個數「是不是合適的近似值」,必須先看要求。若要求「與真值相差不到 0.1」,本例的 2.6 與 2.7 都符合;若要求「四捨五入至小數第一位」,答案則是 2.6。只寫一個「約等於」,還不足以說明採用了什麼標準。

螢幕顯示也有自己的規則。上述機型的 Fix 設定會按照指定的小數位數捨入後再顯示;其數值計算本身也具有有限精度。因此,顯示多少位,不能直接當作數學上是否精確的判準。卡西歐支援

例如

1.4142=1.999396≠2,

足以排除「2=1.414」的說法。不必先找到更長的小數,才有資格指出等號不成立。

不過,「不精確相等」不等於「不是可用的近似」。它是否合用,仍須回到要求的位數或容許差距。計算機方便我們取得數字;平方比較則幫助我們檢查數字的位置,以及它究竟支持哪一種主張。

同一個近似值,為何有時能用、有時不能用

現在可以完整回答開頭的版面問題。

在這個假想設計中,圖案的面積被指定為恰好 7 平方公分,精確邊長便是 7 公分。尺寸表要求四捨五入至小數第一位,因此填「約 2.6 公分」沒有問題。

但這不代表圖案能放進邊長恰好 2.6 公分的正方形空格。在圖案不縮放、兩者的邊互相平行的設定下,由

2.6<7

便知道空格太小。這個結論不需要知道第十位、第一百位小數。

如果預留的是 2.7 公分見方的空間,由

7<2.7

可知,在不另加邊框、不計印刷偏差的數學設定下,空間足夠。

用來報告尺寸的四捨五入值,和用來保證容納的上界,可以是不同的數。前者要一個接近真值的簡短表示,後者要一個不會小於所需尺寸的保證。不能把「很接近」偷偷換成「一定不會不夠」。

若空間限制落在我們已知的上下界之間,現有資訊就可能還不夠。這時應取得更細的資訊,而不是把「尚未判定」當成「應該沒問題」。

在現代數值計算中,區間算術就是一種相關的方法:它不只保存單一近似數,而以區間運算及適當的端點捨入,保留可證明包含結果的範圍,控制有限位運算的捨入影響。這是上下界思考的現代連結,不表示一般計算機都會自動提供這種保證,也不表示把兩個顯示值任意當成上下界就一定可靠。DLMF

最後還要確認輸入的意思。本例的 7 是設計指定的精確面積;假如它來自量測,而且已經捨入,原始面積便另有不確定性。就算把「7」算得再細,也只是更細地處理輸入的 7,不會自動恢復量測時失去的資訊。

理解近似與精確,讓我們多出的能力,不是只會把根號換成小數,而是能分清:根式精確指定的是哪個數,近似值按照什麼規則代替它,上下界又替結論提供了什麼保證。

人類不必寫完無限的小數,才開始做可靠的計算。重要的轉變,是把「不能寫盡」與「不能知道」分開:我們可以不知道所有數字,卻仍知道答案在哪裡、差距受到什麼限制,以及目前的資訊夠不夠支持下一個決定。

【本文完】