據說華羅庚曾講過乙個故事,說:有個教書先生喜歡喝酒,一天,他叫學生背圓周率,自己卻提壺酒到山上廟裡找老和尚喝酒去了。有個聰明的學生把圓周率編了個
打油詩「山巔一寺一壺酒,爾樂苦煞吾,把酒吃;酒殺爾殺不死,樂爾樂」。其實是
3.1415926535897932384626
的諧音。先生一回來,學生居然背了下來,可一想,發現學生是在諷刺他。
究其「山巔一寺一壺酒」的來歷,眾所周之,可上溯至南北朝時的祖沖之
(429
—500年)
,當時獲得的結果是圓周率在
3.1415926
與3.1415927
之間。那麼,祖沖之是怎麼算出來的呢?
《隋書·
律曆志》記載,祖沖之所用的方法叫「綴術」,並說祖沖之「所著之書名為《綴術》,學官莫能究其深奧」。傳說唐時此書為朝庭欽定教科書,後來《綴術》失傳。從而祖沖之的神奇演算法成為千古之迷。
作為猜測,華先生曾說「他的演算法也是極限的最好說明,他從單位圓的內接正六邊形和外切正六邊形出發……再作內接的和外切的正
12邊形、正
24邊形……邊數愈多
, 內接的和外切的正6·2
n-1邊形的面積就愈接近圓的面積
,由此可以逐步地精確地算出圓周的長度。」內接和外切正
多邊形的方法是阿基公尺德的「窮竭法」。
但仔細一想,用「窮竭法」來算也是有問題的。要得到祖率的精度,需要算正
24576
邊形,也就是從正六邊形出發要剖分
12次,即同一演算法要迭代
12次,在用算籌的手工年代要完成如此浩大的計算量其困難是很大的,也可能是很能難實現的。
於是,錢寶琮先生在主編《中國數學史》時猜測採用了與劉徽割圓術相仿的方法,錢先生猜測說:「祖沖之鑽研了《九章算術》劉徽注之後,認為數學還應該有所發展,他寫成了數十篇專題**,附綴於劉徽注的後面,叫它『綴述』。」
「綴」有附著之意,故華中王能超先生同意錢先生的觀點,認為「綴術」實際上是《九章算術》劉徽注的「祖沖之注」。但「綴術」決不是「綴述」。
然而,「綴」又有拼合、組合之意,故「綴術」可能是劉徽割圓術的組合之術。
王先生堅信「綴術」是割圓術的組合之術,並由此發現了「綴術」是與當今外推算法相類似的一種加速演算法,祖沖之肯定是用這種加速演算法減少了迭代次數,解決了計算量大的困難。這種加速演算法的智慧型是阿基公尺德窮竭法所不能比的。果真如此的話,王先生就破譯了綴術的千古疑案,所以林群先生講「我認為王教授的發現是數學史上的重大事件」。
那麼,該如何「組合」呢?
從圓內接正六邊形做起,第一次割得正
12邊形,用
s(12)
記其面積,劉徽稱其為「觚之冪」,於是得:
s(12)
,s(24)
,s(48)
,s(96)
,s(192)
,……劉徽稱多邊形的面積為冪,而稱偏差
a(n)=s(2n)-
s(n)
為差冪,並給出了雙側逼近公式,即圓面積介於
s(2n)與
s(2n)+
a(n)
之間,由此給出了乙個計算圓面積的近似例項:
由此得到圓周率為
3.1416
,將此例項寫成公式就是:
圓面積≈
s(2n
)+c[
s(2n)-
s(n)
]即是現代的組合加速技術,其關鍵是係數
c的選取。為此,劉徽在割圓術中說了一句人稱「十字文」的話:「以十二觚之冪為率訊息」,一千多年來讓多少行家費盡思量也不解其迷。王先生從劉徽的思想方式與語言行文特徵出發,認為是人們傳抄之誤,實應為「以十二觚之冪率為訊息」,意為係數
c的訊息在十二觚之冪率中。十二觚之冪率為
d(12)=
a(12)
/a(24)
=[s(24)-
s(12)
]/[s(48)-
s(24)]=
3.95
可得係數c=
1/(3.95-1)
=1/2.95
,這是劉徽的偉大之處,也是劉徽與
3.1415926
失之交臂而把更精緻的結果留給了
200年後的老祖的原因。如果把
d(12)、
d(24)、
d(48)、
d(96
)都算出來,就會發現它們穩定在
4.0上,從而係數c=
1/3。如果取c=
1/3,只需算到正
96邊形的
s(96)和
正192
邊形的s(192
),再利用加速公式就可以得到
3.141592646
,這時只需要迭代
5次而不是
12次,也不需要算到正
24576
邊形,大概這就是老祖的絕技之迷。
西元前300
年,阿基公尺德為得到
3.14
,已經割到正
96邊形了,如果他老先生知道如何跑得快一點就能喝到一壺酒了,沒有離「山巔一寺一壺酒」的一步之遙了。
這一絕技在現代已不重要了,在大學本科的計算方法中只是很簡單的外推加速技術。所以,著名的克萊因在《古今數學思想》自敘稱:「為著不使資料漫無邊際,我忽略了幾種文化,例如中國的文化,因為他們的工作對於數學思想的主流沒有重大的影響。」
如果再問乙個問題:老劉和老祖在那個時代是怎麼想到加速與c=
1/3的?
乙個比較靠得住的猜想是,他們是從數字的分析中直覺地感悟到的,在邏輯上不是從分析邏輯上得到的,而是從直覺邏輯上得到的。有人把這類直覺、感悟叫做智慧型。擅長數學主流分析邏輯的西方數學家伊恩
·斯圖爾特說:「數學的全部力量就在於直覺和嚴格性巧妙地結合在一起。受控制的精神和富有靈感的邏輯正是數學的魅力所在,也是數學教育者努力的方向。」他更是一語道破了數學的真諦:「直覺是真正的數學家賴以生存的東西」。
無獨有偶,迪瓦多內也說:「這些富有創造性的科學家與眾不同的地方,在於他們對研究的物件有乙個活生生的構想和深刻的了解,這些構想和了解結合起來,就是所謂『直覺』」。
也許對數學主流思想產生重大影響的恰好是人類的直覺思維,這才是今天人們仍然尊敬劉徽與祖沖之的原因。
如何讓數學家經常帶點直覺的靈感呢,德國數學家維爾斯特拉斯說:「不帶點詩人味的數學家,絕不是乙個完美的數學家。」
所以,乙個完美而又簡單的修練方法就是到學人亭來。
2004
年,獲王能超先生慧贈《千古絕技「割圓術」——劉徽的大智慧型》,謹以此文答謝。
4 蒙特卡羅演算法求圓周率PI
蒙特卡羅演算法的典型應用之一為求圓周率pi問題。思想 乙個半徑r 1 的圓,其面積為 s pi r 2 pi 4 乙個邊長r 1 的正方形,其面積為 s r2 1 那麼建立乙個座標系,如果均勻的向正方形內撒點,那麼落入圓心在正方形中心,半徑為1的圓內的點數與全部點數的比例應該為pi 4,根據概率統計...
Codeup 求圓周率pi的近似值
用如下公式 求圓周率pi的近似值,直到發現某一項的絕對值小於10 6為止 該項不累加 要求輸出的結果總寬度佔10位,其中小數部分為8位。程式中使用浮點型資料時,請定義為雙精度double型別。如果需要計算絕對值,可以使用c語言數學庫提供的函式fabs,如求x的絕對值,則為fabs x 輸入 無輸出 ...
圓周率PI的高精度計算 C C
某次碰到pi,想用程式設計列印出它的比較多的有效位 至少比背的要多 開始考慮到 pi 4 arctan 1 arctan x 展成多項式 arctan x 1 1 x 1 3 x 3 1 5 x 5 所以有 pi 4 1 1 3 1 5 1 7 但是上式後面的式子收斂太慢了,程式設計很難求到很多的有...