重訪重差術
張海潮
歷來討論重差術的文章很多, 最具代表性的當推中研院數學所李國偉教授的兩篇論文 (註 一) 。 本文的一些觀點在李教授的論文中多已提到, 談不上創新; 只是想將 《周髀算經》 中有關 測日遠近及大小的紀載與重差術連結, 同時具體的點出 「損益寸千里」 這句話在重差術中扮演 的關鍵角色 (註二) 。
本文的第一部分略複習重差術, 並指出 「重差」— 兩竿影差與兩竿距的比值 — 是測量模 型的一個內在常數。 只要掌握這個常數, 便可測出竿子與被測物的距離。 本文的第二部分詳細介 紹 《周髀》 如何測日遠近及日徑大小, 雖然 《周髀》 只用一根竿子 (單表) (重差術要用兩根 (雙 表)), 但是 《周髀》 用 「勾之損益寸千里」 來代替了重差術中的關鍵常數。「損益寸千里」 雖然不 切實際, 但似乎對重差術的發明有相當啟發, 這一點在李國偉的論文中也有提到 (見註一, 從單 表到雙表一文, 「表」 就是立在地上的竿子) 。
( 一)
重差術出於劉徽原置於 《九章算術》 內有關勾股如何用於測量的專章, 在唐初選定算經十 書時, 才由九章分出, 單成一部 《海島算經》, 重差術的方法可由下例來說明 (註三):
今有望海島, 立兩表, 齊高三丈, 前後相去千步, 令後表與前表參相直。 從前表卻行 一百二十三步, 人目著地, 取望島峰, 與表末參合。 從後表卻行一百二十七步, 人目著 地, 取望島峰, 亦與表末參合。 問島高及去表各幾何? 答曰: 島高四里五十五步, 去 表一百二里一百五十步。 術曰: 以表高乘表間為實, 相多為法除之, 所得加表高, 即 得島高。 求前表去島遠近者, 以前表卻行乘表間為實, 相多為法除之, 得島去表數。
如圖一, E, F 是人目, CD = AB = h = 3丈=5步 是表高, BD = 1000步 是兩表間 距, BE = 123步, DF = 127步, P Q = y 是島峰之高, QB = x 是前表到海島 Q 的距離。
33
圖1
利用兩個直角三角形 P QE 和 P QF , 可以立下聯立方程式:
y
x + BE = h y BE
x + BD + DF = h DF
(1)
式中 h 是立竿的高度, h = CD = AB, 由此解出 x 和 y。
現在, 我們要從另一個角度來看同樣的問題。 為了方便說明, 將圖一中的 P 點想成是一個 點光源, DF 和 BE 分別是立竿的竿影, 我們要問:
影長 s(= DF ) 如何隨立竿到 Q 點的距離 d(= QD) 而變化?
如圖二:
圖2 我們有
s
h= s + d y 或
ys = hs + hd s = h
y− hd (2)
亦即 s 與 d 成正比。 注意到 (2) 式亦可由圖一中三角形 P RC 和 CDF 相似求得: P R =
y− h, RC = QD = d, CD = h, DF = s。
因此, 我們需要立第二根竿子來決定 h
y− h, 如圖一所示, 令竿距 QB 為 d′, 影長 BE 為 s′,則同樣有:
s′ = h y− hd′ 與 (2) 式相減得
s− s′ = h
y− h(d− d′)
從而解出 s
d = h
y− h = s− s′
d− d′ (3)
由於第一個差 s − s′ 和第二個差 d − d′ 都是已知, 求其比值得到 h
y− h 而解 y 值。 上 述二差之比稱為重差, 知道重差便可從 s 求 d。 一個具體的說法是:
s− s′
d− d′ 其實代表每當竿子移動一個單位時, 影長的差額。 想像我們把竿子移到圖一中的 Q 點, 此時竿子無影, 因此顯然有
d = QD = s s− s′ d− d′
(4)
以圖一來說, s = DF = 127, s − s′ = 127− 123 = 4, BD = d − d′ = 1000, 所以 s− s′
d− d′ = 4
1000 = 1
250 代表每向 Q 點移動 250 步影長會減 1 步, 由於起始的影長是 127 步, 所以
QD = 127× 250 步
而所謂“前表去島遠近”指的是 x = QB = QD − BD = 127 × 250 − 1000 步。
我們作一個簡短的總結:
在重差術中, 之所以要立兩根竿子, 主要是想求得式 (3), 亦即每移動一個單位, 影長的差 額。 由於 P 點為光源, 所測之點 Q 處不會有影子, 所以一旦得出單位影長差 (3), 即可以影長 除以單位影長差而得到立竿點到所測之點的距離 (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×108 公里, 太陽直徑是 1.39×
106 公里, 兩者相除是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里, 便會 「日中立竿無影」。
—本文作者為台大數學系退休教授—