37203 重訪重差術
重訪重差術

歷來討論重差術的文章很多, 最具代表性的當推中研院數學所李國偉教授的兩篇論文 (註一) 。 本文的一些觀點在李教授的論文中多已提到, 談不上創新; 只是想將《周髀算經》中有關測日遠近及大小的紀載與重差術連結, 同時具體的點出「損益寸千里」這句話在重差術中扮演的關鍵角色 (註二) 。
本文的第一部分略複習重差術, 並指出「重差」--- 兩竿影差與兩竿距的比值 --- 是測量模型的一個內在常數。 只要掌握這個常數, 便可測出竿子與被測物的距離。 本文的第二部分詳細介紹《周髀》如何測日遠近及日徑大小, 雖然《周髀》只用一根竿子 (單表) (重差術要用兩根 (雙表)), 但是《周髀》用「勾之損益寸千里」來代替了重差術中的關鍵常數。「損益寸千里」雖然不切實際, 但似乎對重差術的發明有相當啟發, 這一點在李國偉的論文中也有提到 (見註一, 從單表到雙表一文, 「表」就是立在地上的竿子) 。

(一)

重差術出於劉徽原置於《九章算術》內有關勾股如何用於測量的專章, 在唐初選定算經十書時, 才由九章分出, 單成一部《海島算經》, 重差術的方法可由下例來說明 (註三):

今有望海島, 立兩表, 齊高三丈, 前後相去千步, 令後表與前表參相直。從前表卻行一百二十三步, 人目著地, 取望島峰, 與表末參合。 從後表卻行一百二十七步, 人目著地, 取望島峰, 亦與表末參合。問島高及去表各幾何?答曰:島高四里五十五步, 去表一百二里一百五十步。 術曰:以表高乘表間為實, 相多為法除之, 所得加表高, 即得島高。求前表去島遠近者, 以前表卻行乘表間為實, 相多為法除之, 得島去表數。

如圖一, $E,F$ 是人目, $\overline{CD}=\overline{AB}=h=3$丈=5步 是表高, $\overline{BD}=1000$步 是兩表間距, $\overline{BE}=123$步, $\overline{DF}=127$步, $\overline{PQ}=y$ 是島峰之高, $\overline{QB}=x$ 是前表到海島 $Q$ 的距離。

圖1

利用兩個直角三角形 $PQE$ 和 $PQF$, 可以立下聯立方程式: \begin{equation} \left\{\begin{array}{l} \dfrac{y}{x+\overline{BE}}=\dfrac{h}{\overline{BE}}\\ \dfrac{y}{x+\overline{BD}+\overline{DF}}=\dfrac{h}{\overline{DF}} \end{array}\right. \label{1} \end{equation} 式中 $h$ 是立竿的高度, $h=\overline{CD}=\overline{AB}$, 由此解出 $x$ 和 $y$。

現在, 我們要從另一個角度來看同樣的問題。為了方便說明, 將圖一中的 $P$ 點想成是一個點光源, $\overline{DF}$ 和 $\overline{BE}$ 分別是立竿的竿影, 我們要問:

影長 $s(=\overline{DF})$ 如何隨立竿到 $Q$ 點的距離 $d(=\overline{QD})$ 而變化?

如圖二:

圖2
我們有 \begin{eqnarray} \dfrac sh&=&\dfrac{s+d}{y}\nonumber\\ {\hbox{或}} ys&=&hs+hd\nonumber\\ s&=&\dfrac h{y-h} d\label{2} \end{eqnarray} 亦即 $s$ 與 $d$ 成正比。注意到 \eqref{2} 式亦可由圖一中三角形 $PRC$ 和 $CDF$ 相似求得: $\overline{PR}=y-h$, $\overline{RC}=\overline{QD}=d$, $\overline{CD}=h$, $\overline{DF}=s$。

因此, 我們需要立第二根竿子來決定 $\dfrac{h}{y-h}$, 如圖一所示, 令竿距 $\overline{QB}$ 為 $d'$, 影長 $\overline{BE}$ 為 $s'$, 則同樣有: $$s'=\dfrac{h}{y-h}d'$$ 與 \eqref{2} 式相減得 $$s-s'=\dfrac{h}{y-h}(d-d')$$ 從而解出  \begin{equation} \dfrac sd=\dfrac h{y-h}-\dfrac{s-s'}{d-d'}\label{3} \end{equation}

由於第一個差 $s-s'$ 和第二個差 $d-d'$ 都是已知, 求其比值得到 $\dfrac h{y-h}$ 而解 $y$ 值。 上述二差之比稱為重差, 知道重差便可從 $s$ 求 $d$。 一個具體的說法是:

$\dfrac{s-s'}{d-d'}$ 其實代表每當竿子移動一個單位時, 影長的差額。想像我們把竿子移到圖一中的 $Q$ 點, 此時竿子無影, 因此顯然有 \begin{equation} d=\overline{QD}=\dfrac s{\dfrac{s-s'}{d-d'}}\label{4} \end{equation}

以圖一來說, $s=\overline{DF}=127$, $s-s'=127-123=4$, $\overline{BD}=d-d'=1000$, 所以 $\dfrac{s-s'}{d-d'}=\dfrac 4{1000}=\dfrac 1{250}$ 代表每向 $Q$ 點移動 250 步影長會減 1 步, 由於起始的影長是 127 步, 所以 $$\overline{QD}=127\times 250 \,\hbox{步}$$ 而所謂"前表去島遠近"指的是 $x=\overline{QB}=\overline{QD}-\overline{BD}=127\times 250-1000$ 步。

我們作一個簡短的總結:

在重差術中, 之所以要立兩根竿子, 主要是想求得式 \eqref{3}, 亦即每移動一個單位, 影長的差額。 由於 $P$ 點為光源, 所測之點 $Q$ 處不會有影子, 所以一旦得出單位影長差 \eqref{3}, 即可以影長除以單位影長差而得到立竿點到所測之點的距離 \eqref{4}。

(二)

事實上, 《周髀》就是用類似的想法來測太陽的遠近, 請見引文 (註四):

夏至南萬六千里, 冬至南十三萬五千里, 日中立竿無影。 此一者天道之數。周髀長八尺, 夏至之日晷一尺六寸。 髀者, 股也。 正晷者, 勾也。 正南千里, 勾一尺五寸。 正北千里, 勾一尺七寸。

這段話的意思是:在夏至的時候, (在洛陽) 立竿見影, 影長1尺6寸, 但是若把竿子南移千里, 影長會變成1尺5寸, 少了1寸, 而若將竿子北移千里, 影長會變成1尺7寸, 多了1寸 (並見註二) 。

因此, 若向南方走1萬6千里, 就會到達影子消失的地方, 所以說日中立竿無影 (註五), 這個地方當然是在太陽的正下方。

從本文第一部分的總結可知《周髀》的方法和重差術類似, 只不過若是重差術就必須立兩根距離為1千里的竿子來看出影長之差為1寸。 《周髀》當然不可能靠立兩根竿子來得到「勾之損益寸千里」, 這是因為一則地面不是平的, 二則太陽光射向地球, 不能視為圖一中的點光源 $P$。 從太陽往地球射的光線反而因為距離遙遠, 應該看成是平行光線。而立於各地的竿子影長之有差異是因為地球表面緯度的關係。 如果地面真的是平的, 而太陽沒那麼遠, 可以看成點光源的話, 那麼就本文第一部分的討論, 竿子之間的距離每差上千里, 影長之差必定是一個常數, 只是不知道是不是1寸罷了。 由是觀之《周髀》對重差術一定有相當的啟發。

《周髀》接著又說:

日益表南, 晷日益長。 候勾六尺。 即取竹, 空徑一寸, 長八尺, 捕影而視之, 空正掩日, 而日應空之孔。 由此觀之, 率八十寸而得徑一寸。故以勾為首, 以髀為股。 從髀至日下六萬里而髀無影, 從此以上至日, 則八萬里。 若求斜至日者, 以日下為勾, 日高為股。 勾、股各自乘, 併而開方除之, 得斜至日。從髀所旁至日所十萬里。 以率率之, 八十里得徑一里, 十萬里得徑千二百五十里。 故曰日徑千二百五十里。

這一段的意思是說從夏至以後, 太陽南移, 日影越來越長。等到有一天, 日影長6尺的時候, 如圖:

圖3
從日下量得日高是8萬里 (其實是8萬里加8尺, 8尺不計), 而從立竿處看大直角三角形的斜邊, 以畢氏定理計算, 近似值是10萬里。

另外, 從立竿處用一根直徑為1寸, 長80寸的空心竹管看太陽, 剛好從管孔中看到全部的太陽, 因此由相似形縮放關係, 太陽的直徑是日地距離的八十分之一。 以10萬里除以80, 得到1250里, 所以說太陽的直徑是1250里。

從《周髀》這段文字可以看出古人對太陽的遠近和太陽的大小都非常有興趣, 並且發展了幾何方法來探索這些現象。 以現代的數據看來, 日地距離是 $1.49\times 10^8$ 公里, 太陽直徑是 $1.39\times 10^6$ 公里, 兩者相除是107, 而《周髀》所得是80, 雖不中亦不遠。 尤其是以空心竹管測日的視直徑 (angular size), 和古希臘的測法是一致的, 只不過當時古希臘得到的是110比1, 比《周髀》的80比1準得多。 至於為什麼要等到「候勾6尺」才來測日之大小, 可能是直角三角形三邊比 中, 8相應立竿的高度, 斜邊的長比較好算吧。

註一、 (1) 李國偉 (1984) 〈初探「重差」的內在理路〉, 《科學史通訊》第三期。

   (2) 李國偉 (1995) 〈從單表到雙表---重差術的方法論研究〉, 《中國科技史論文集》, 聯經, 台北。

註二、 《周髀》中言及

法曰:周髀長八尺, 勾之損益寸千里。

這句話的意思是以八尺高的立竿測日影, 若是將竿南 (北) 移千里, 影長便會短 (長) 一寸。一般認為這個法則並不可靠, 詳見本文的討論。

《周髀》約成書於秦漢之際, 是一部數理天文學著作。 唐朝李淳風編算經十書,《周髀》為十書之首, 第二部是《九章算術》, 第三部就是《海島算經》。

註三、中國古代的單位, 1步等於6尺, 1丈等於10尺, 1尺等於10寸, 1里等於300步, 相當於1800尺。 在秦漢之際, 1尺大約是23公分, 因此一里大約是414公尺。

註四、周髀一詞又指在東周時立於洛陽長8尺的表或竿子, 髀是大腿骨的意思, 指直立的竿子, 如圖:

圖4

   勾指日影。以下引文均出自《周髀》。

註五、至於說冬至南十三萬五千里, 那是因為根據《周髀》在冬至時立在洛陽的竿子影長13尺5寸, 同樣靠著「勾之損益寸千里」, 將竿子南移13萬5000里, 便會「日中立竿無影」。

---本文作者為台大數學系退休教授---