內容梗概:前幾次說到冬至是從陰到陽的轉折點,“日北至”,“一陽生”。但冬至不是某一天而是一個時刻。如何測量這一時刻?最常見的方法是測量冬至前后幾天的影長。但如果那幾天陰天怎么辦?冬至時刻不是正午怎么測量影長?祖沖之提出了巧妙的方法解決了這一問題。這種方法后來為歷代所采用,它所用的數學和幾何原理非常簡單,初中生都明白,但卻蘊含著科學發現的普遍規律:長期觀測、分析數據、深入思考、提出假設、實驗驗證。
一周以后,老師和學生又在老地方碰面了。這天餐廳里有些擁擠,中間的大長條桌坐滿了人,好像在聚餐。他們好不容易找到了一個靠墻的座位。
剛一坐下老師就問:“上次我們提到的那位中國古代科學家,你猜到了嗎?”
“是祖沖之吧?” 學生說道。
“對,正是他。”
“提到圓周率就想到了祖沖之,以前只知道他是數學家,還真不知道他還測量過冬至時刻!” 學生說到。
“除此之外,祖沖之還對天文歷法做出了很大的貢獻!你記得祖沖之是什么時候的人嗎?”
“是南北朝的?”
“對,也就是公元500年左右,距今已經1500多年了。那時既沒有望遠鏡、也沒有精確的秒表,更不用說其它先進的儀器和設備了。”
“那祖沖之是用什么工具來測量冬至時刻的呢?” 學生不解地問道。
“只是用一根桿子而已,測定正午時分桿子投射在地面上的影長。當然準確的叫法應該是圭表。”
“就這么簡單?”
“是的,如果僅僅是想知道冬至大概是在哪一天,那么只需要測量冬天正午影子最長的那一天即可。但是由于“景之差行,當二至前后,進退在微芒之間”,冬至附近影長變化經歷了一個拐點,本來變化就不明顯,再加上冬天日影變淡,很難精確測量,所以根據《左傳》等資料推算,那時連冬至日都測不準,通常會有2-3天的誤差。”
“可是我有個疑問:冬至那幾天要是“陰天”怎么辦? 就沒法測量日影了吧?”
“是的,這是個棘手的事情,畢竟天氣沒法輕易改變。其實,祖沖之還有更大的挑戰呢!”
“什么挑戰?” 學生問道。
“冬至不是一個日子,而是一個時刻。而要精確地測量出冬至時刻,才能夠幫助制定出準確的歷法。但我們知道冬至時刻每年都在變,不一定正好是正午,如果冬至時刻在晚上,那又如何測量影長呢?古人總不會繞過大半個地球跑到美國去測量正午時分的影長吧!”
“那該怎么辦呢?”
“這說明,單單測量影長已無法準確得到冬至時刻,必須進行推算。祖沖之之前的何承天,他連續測量十年,并且利用古人提出“要取其中”的方法來推算冬至時刻。但是具體如何做,現在已經不可考了。祖沖之長袖善舞,提出了一種很巧妙的方法,化解了陰天無日影問題、冬至時刻不在正午的問題。他提出的方法不局限在一定要在冬至這一天測量影長,而是在冬至前后幾十天的范圍內挑選幾個晴天的日子測影長,然后進行一些簡單計算就可以了,這樣一來,天氣的原因對于祖沖之來說就不是問題了。”
“哦,是嗎?真巧妙!那需要測量多少次呢?”
“需要三天正午的測量數據,因為不知道未來會不會陰天,為了保險可以多測幾次,但做計算時只要有三次的有效影長的數據就夠了。”
“只需3次的數據?”
“是的。”
“我對祖沖之越來越好奇了”,學生感嘆道:“他究竟是個什么樣的人呢?既精于數學,又通天文!”
“你說的沒錯,一個人的性格、經歷和治學態度,決定了他采用的方法,而方法又決定了成就大小。”
“嗯。祖沖之的家庭是怎么樣的呢?”
“祖沖之生于429年,在他出生前九年,東晉滅亡。接下來中國進入了南北朝時期,形成了南北對立的局面。 祖沖之生活在南朝的宋和齊兩個朝代,都城是建康,也就是今天的南京。祖沖之家族屬于低級士族,地位不高,但是有世代鉆研學習的傳統。祖沖之的祖父祖昌善于發明,在朝廷擔任過大匠卿,父親祖朔之是皇帝的侍從官員。根據《隋書》記載,祖家世代掌管歷法。祖沖之自幼生活在這樣的家庭里,對天文學和數學非常感興趣,廣泛搜羅閱讀鉆研前朝留下的著作,但是他發現古人留下的論述中又有一些不可靠的地方,所以他每每“親量圭尺,躬察儀漏,目盡毫厘,心窮籌策”,“不虛推古人”。”
“這讓我想到了歐洲十六、七世紀的開普勒。開普勒繼承了他的老師第谷留下的大量觀測數據,同時又不拘泥于古人的結論,終于推翻了行星軌道是圓形的觀念。”
“是的,既能夠占有大量數據,又自己親自測量和計算,不囿于古人的結論和成法,從而才能開創出一片新天地。祖沖之自己是這樣說他如何利用古人的文獻資料的:
“搜煉古今,博采沈奧。
唐篇夏典,莫不揆量。
周正漢朔,咸加核驗。
罄策籌之思,究疏密之辨”。
祖沖之對張衡的天文著作、東漢時期劉洪的《乾象歷》和三國時期楊偉的《景初歷》都進行了系統研究考察,對前人的觀點批判地繼承。”
“比如說呢?”
“例如祖沖之看到東漢初年班固所寫的《漢書》里提到了六種古代歷法:《皇帝歷》、《顓頊歷》、《夏歷》、《殷歷》、《周歷》和《魯歷》。后人曾以為是這幾個朝代當時所采用的歷法,而經過祖沖之的推斷發現,這些只不過是后人的偽作而已,他說:“古術之書,皆在漢初周末,理不得遠”。”
“祖沖之在哪里進行研究呢?”
“祖沖之在青年時代就進入了南北朝時期宋朝設立的華林學省的機構,專門從事天文歷法和數學研究。因為工作出色,被朝廷“省賜宅宇車服”。后來祖沖之雖然出任了地方官,但仍然沒有中斷天文測量和研究。”
“那祖沖之是如何利用手頭的影長數據來推算冬至時刻呢?”
“雖然說祖沖之的方法只需要進行三次測量,但是實際上祖沖之每天都堅持觀測,并且積累了大量的一手數據,并且他還利用工作上的便利接觸到大量的古代觀測數據。他平時沒事就去琢磨這些數據。”
“那他從中琢磨到了什么嗎?”
“就比如關于影長的觀測數據吧,他經過長年累月的觀察,發現冬至前后影長的數據都與下表類似。比方說有這么一組由于陰天導致觀測記錄不完整的桿子影長數據:
日期 | 影長 |
---|---|
十月三十 | 12尺 |
十一月初一 | 12.06尺 |
十一月初二 | 12.12尺 |
十一月初三 | *陰天沒有影長數據 |
十一月初四 | 12.12尺 |
十一月初五 | 12.06尺 |
十二月初六 | 12尺 |
十二月初七 | *陰天沒有影長數據 |
“你能看出有什么規律嗎?” 老師問道。
“讓我看看,影長一開始不斷增加,突然來了一個陰天,后來又不斷減少,又來了一個陰天。總體趨勢是這樣先增加后減少的。”
“對。”
“既然如此,那么從增加變得減少的拐點應就是冬至日。”
“對,如果假設冬至前后影長增加的速度和減少的速度都是均勻的,冬至前每天增加0.06尺,冬至后每天減少0.06尺。即使有兩天是陰天,那么我們也可以估計出十一月初三那天應該是影子最長,是冬至日。”
“嗯,同意!”
“祖沖之手頭上積累了很多這樣的數據,分析研究這些數據是他從事研究的基礎。換句話說,現代科學研究也是如此:大量占有數據,并且深入思考、科學地進行分析才有可能取得突破。”
“嗯。”
“祖沖之經過仔細琢磨得到了兩個基本判斷:冬至前影長增加,冬至后影長減少,并且基本對稱。影子的變化速度是近似均勻的。”
“那根據這兩個假設就能夠計算出冬至時刻嗎?”
“還要加上一點點最基本的幾何知識。”
“什么樣的幾何知識呢?” 學生問道。
“兩個相似三角形的對應邊長成比例。”
“就這么簡單嗎?”
“方法是簡單,但是能想到這一方法本身并不簡單。它需要十年如一日的觀測,翻閱幾百年的觀測數據,還要有恒心、細心和毅力才可以。在祖沖之之前,就已經有了測量冬至時刻的粗糙方法。北朝的周琮指出:“晉、漢歷術,多以(至)前后所測晚晷,要取其中。” 但是古人是如何“要取其中”,卻沒有明確交代,因此具有很大的主觀性和隨意性,而祖沖之是第一個從嚴格的數學意義上推導出冬至點的觀測方法。”
“那么他是具體怎么測量的呢?”
“祖沖之曾經簡要介紹了自己的計算方法,我在手機里查到了南朝《宋史 歷律志》里的原文:
“大明五年十月十日影一丈七寸七分半,
十一月二十五日一丈八寸一分太,
二十六日一丈七寸五分強,
折取其中,則中天冬至應在十一月三日。
求其蚤(早)晚,令后二日影相減,則一日差率也,倍之為法;
前二日減,以百刻乘之為實。
以法除實,得冬至加時在夜半后三十一刻,在元嘉歷后一日,天數之正也”。”
“是什么意思呢?”
“ 簡單翻譯一下就是,
- 大明五年十月十日影長為10.775尺,
- 十一月月二十五日影長為10.8175尺(“太”是古代的一個計數符號,是最小單位的3/4),
- 十一月二十六日影長為10.7508尺(“強”也是古代的一個計數符號,是最小單位的1/12)。
- 十月十日的影長落在十一月二十五日和二十六影長之間,所以根據對稱原理,冬至日應在十月十日和十一月二十五日之間,也就是十一月三日。
- 令十一月二十五日和二十六日測得的兩個影長相減:10.8175-10.7508=0.0667,
- 然后乘以2倍,0.0667 x2=0.1334,這個值稱為“法”。
- 再令十月十日和十月二十五的影長相減:10.8175-10.775=0.0425,
- 這個值乘以100(古代每天等分成100刻)得到4.25,稱為“實”。
- 用“實”除以“法”:4.25/0.1334=31.86刻,
- 即大明5年的冬至點是在11月3日31刻多一些。”
“讓我換算一下,一天是100刻,那么31.86刻就是在一天的三分之一附近,也就是早上8點前一點,大約是現在的早上7點37分26秒。那具體是怎么計算的呢?”
“如果把三天的影長按照時間順序分別是a,b和c,那么計算的公式就是:
冬至在一天100刻中所處的相對時刻:100(b-a)/2(b-c)。”
“哦,這個計算真簡單,加減乘除四則運算就夠了。可是這只是具體的計算方法,那背后的原理是什么呢?” 學生問道。
“后人推測祖沖之應該是利用了相似三角形的原理。”
“相似三角形?果然有初中幾何知識就夠了。”
“嗯。首先,祖沖之在冬至前后選擇了A/B/C三天,正午的影長分別為a,b,c。我們可以把這三個影長畫在時間軸上(如圖),橫軸代表日期,而縱軸代表影長。a的影長介于b和c之間,根據對稱性,所以冬至日應該在A和B中間的那一天,我們標識為D日零時。也就是說A在冬至前N天,B在冬至后N天,C在冬至后N+1天。有了這三天的數據就可以推算冬至時刻了,這樣即使冬至日是陰天也沒有關系,因為并不需要在冬至那一天進行測量。退一步講,即使A/B/C三個測量日期是陰天也沒關系,只要把A提前一天,把B和C分別推后一天,我們就可以利用新的數據來計算了。”
“太妙了!”
“對。下面我們就開始驗證祖沖之的腳步開始推算了,你準備好了嗎?”
“想想都激動,這可是祖沖之一千五百多年前使用的方法!”
“讓我們開始吧”。老師說道。
- 首先,既然冬至日D是AB的中點,所以AD=DB 。
又因為D是冬至日子夜零時,所以冬至時刻在D右邊的E點,且DB=DE+EB。
這個E點的位置就是我們要找的冬至時刻,換句話說只需求出DE的長度就能確定冬至時刻。
- 接下來,因為冬至前后影長是對稱的,而且a介于b和c之間,c<a<b,所以在BC之間必有一個A的對稱點A1,其影長a1=a。
所以可以得到:AE=EA1,即AD+DE=EB+BA1。 - 然后,我們很容易推導出DE剛好是BA1的一半。(推導方法:把AD=DB=DE+EB帶入到上式,就得到了AD+DE=DE+EB+DE=EB+BA1,約去左右的EB,得到2DE=BA1)”
既然我們要求出DE,那么可以先求出BA1,然后減半就可以求得DE了!
“那怎么求BA1的長度呢?”
“關鍵之處就要找出兩個相似三角形。”
“找哪兩個相似三角形呢?”
“我們一起看一看。既然是要求BA1,那其中一個三角形肯定和BA1有關,它剛好對應了一個小三角形B'FA'1的底邊,而GC'剛好是另一個大三角形B'GC'的底邊,GC'的長度是B的正午和C的正午的間隔,剛好是一天100刻(注:古代一天分為100刻,1刻相當于現在14.4分鐘)。那么就找到了這兩個相似三角形。小三角形的豎直邊長b-a,大三角形的豎直邊長b-c。”
接下來,根據三角形相似的原理,我們就有:(b-a)/(b-c)=BA1/BC。
所以,BA1=(b-a1)·BC/(b-c)。
而BC為25日至26日1晝夜時長100刻,也就是祖沖之原話中的“百刻”,因此BA1=100(b-a)/(b-c)。
而DE是BA1的一半,所以BA1=100(b-a)/2(b-c)。
“那祖沖之測量到的冬至時刻與理論值有多大誤差呢?”
“誤差大約是20刻,這個值遠遠小于歷代的誤差。例如東漢四分歷測得的公元173年冬至的誤差是239刻,晉朝楊偉的景初歷測的237年冬至的誤差是221刻,王朔之的永和歷測的351年冬至時刻誤差是102刻,與祖沖之同時代的何承天“立八尺之表,連測十余年”,他的元嘉歷在公元442年測的誤差是50刻,這已經比前人的誤差縮短了一半,而祖沖之的測量誤差比何承天又小了一多半。祖沖之的方法首次提出一種明確的數學表達式來計算冬至時刻。”
“那祖沖之為什么把冬至前后三個日子的距離拉得那么大呢?前后有四十多天。”
“道理也很簡單。這樣就克服了冬至前后影長變化不明顯問題。把測量日期提前或推后到冬至前后二十多天,那時影長的日變化量比冬至大很多,超過了六分,更容易測量影長變化。”
“祖沖之的測量和計算方法對現在有什么意義呢?” 學生問道。
“它的意義在于,用簡單的測量工具和簡單的數學計算得到了非常高的測算精度,這是當前科學研究和工程實踐追求的目標。”
“能舉個例子嗎?”
“如果用一句話來說,就是奧姆卡剃刀原理,又叫“簡單有效原理”,即“如無必要,勿增實體”。你看在祖沖之的測量方法里沒有任何一步是多余的,你無法再精簡了。”
“為什么精簡的就好呢?”
“精簡的東西人們更容易記住,也更容易流傳下來。祖沖之測量冬至時刻所發明的這個方法也被后人所繼續使用,元代的郭守敬后來繼續改進了測量的圭表,讓它的的精度又進一步提高。”
“那郭守敬是如何改進圭表的測量的呢?”
未完,待續...
參考文獻:
郭蕊,《數學泰斗祖沖之》,吉林出版集團,2011-1. ISBN 9787546341040
陳美東. 祖沖之的天文歷法工作[J]. 自然辯證法通訊, 2002, 24(2):68-73.
陳美東. 論我國古代冬至時刻的測定及郭守敬等人的貢獻[J]. 自然科學史研究, 1983, 2(1):51-60.
《全齊文》卷十六 祖沖之
白壽彝,《中國通史(第二版)》,上海人民出版社 江西教育出版社,2013-7