用割圓術計算π
阿新 • • 發佈:2019-01-26
在中國古代,魏晉時期的數學家劉徽於公元263年就提出了“割圓術”的方法,來計算圓的周長,進而可以計算出圓周率。
其實,割圓術的原理並不複雜,它通過圓內接正多邊形細割圓周,從而使正多邊形的周長無限接近圓周長,進而來求得較為精確的圓周率。
割圓術從圓內接六邊形出發,每一次倍增多邊形的邊數,並計算新的多邊形邊長。每一次的計算如下圖所示(以六邊形為例):
設圓半徑為r,已知圓內接正n邊形的邊長為a,即AB=a。如果取正n邊形每兩個相鄰頂點間的弧的中點,和已有的頂點一起,依次相連,就可以獲得圓內接正2n邊形。圖中C即為一個新增的頂點,則正2n邊形的邊長就是AC的長度。由於△OAB和△CAB均為等腰三角形,所以AD
在割圓術的處理中,圓的半徑是不變的,為了簡便可以設為1,而正六邊形的邊長和外接圓半徑是一樣的也是1,根據上面的思路,在esProc中可以通過迴圈計算2n邊形的周長,從而計算出π。以迴圈10次為例,如下圖所示:
A | B | C | D | |
1 | 6 | /sides | 1 | /sides length |
2 | for 10 | =C1/2 | /AD | |
3 | =sqrt(1-B2*B2) | /OD | ||
4 | =1-B3 | /CD | ||
5 | >C1=sqrt(B2*B2+B4*B4) | /AC,new side length | ||
6 | >A1=A1*2 | /new sides | ||
7 | =A1*C1 | /circumference | ||
8 | =A7/2 | /π |
在程式中,用A1儲存多邊形的邊數,C1儲存多邊形邊長,由A2迴圈計算,以迴圈10次為例,在每次迴圈中,通過計算重新設定多邊形的邊數和邊長。迴圈結束後,在A7中通過計算多邊形的周長來擬合圓周長,在A8中計算π。
A8中的計算結尾為: