圓周率大家都不陌生,最早由歐幾裡德《幾何原本》中提到圓周率是常數,第一個用尋求圓周率數值的人是阿基米德,中國數學家劉徽,和後來大名鼎鼎的祖衝之分別對圓周率進行了計算,從古到今對圓周率的計算方法有幾十種。
下面就介紹幾種求圓周率的方法:
這是粗略的求圓周率一種常用算法
在(0,0)和(1,1)範圍內隨機投test_sum個點,如果落到圓內,hit_sum數量加1,最後用hit_sum/test_sum算出落在圓內的概率,
由得圓周率 PI=hit_sum / test_sum * 4
public class PI {
public static void main(String[] args) {
int test_sum = 1000000;// 投的點數
int hit_sum = 0;// 投中的個數
double x, y;// x和y坐標點
for (int i = 0; i < test_sum; i++) {
// 隨機得到一個坐標
x = Math.random();
y = Math.random();
if (x * x + y * y <= 1)// 判斷擲入的這個點在不在在圓內
hit_sum++;
}
// 統計得到π的值
double pi = (double) hit_sum / test_sum * 4;
System.out.println("π的結果為:" + pi);
}
}
隨機測試的幾次結果:
π的結果為:3.140336
π的結果為:3.141012
π的結果為:3.141396
圓周率的公式特別多,介紹其中一個
這是一個迭代過程,code很容易,直接貼代碼了
public class PI {
public static void main(String[] args) {
double my_pi = 2;
int _jingdu = 1000;//精度控制
for (int i = _jingdu; i > 0; i--)
my_pi = my_pi * i / (2 * i + 1) + 2;
System.out.println(my_pi);
}
}
輸出結果:3.141592653589793
這一方法的步驟是:
1) 取一張白紙,在上面畫上許多條間距為d的平行線。
2) 取一根長度為l(l<d) 的針,隨機地向畫有平行直線的紙上擲n次,觀察針與直線相交的次數,記為m
3)計算針與直線相交的概率.
18世紀,法國數學家蒲豐和勒可萊爾提出的「投針問題」,記載於布豐1777年出版的著作中:「在平面上畫有一組間距為d的平行線,將一根長度為l(l<d)的針任意擲在這個平面上,求此針與平行線中任一條相交的概率。」布豐本人證明了,這個概率是 p=2l/(πd) π為圓周率。
這個方法真是不可思議,感興趣的朋友可以模擬一下。
證明:http://files.cnblogs.com/ysjxw/蒲豐投針與蒙特卡洛模擬.pdf
福利:四行代碼計算圓周率800位的怪異程序
#include
#include
int a=10000, b, c=2800, d, e, f[2801], g;
main()
{
for(;b-c;)
f[b++]=a/5;
for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)
for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);
return 0;
}
————
編輯 ∑Gemini
來源:CSDN
更多精彩:
☞泰勒定理的奇聞軼事
☞丘成桐:漫談微分幾何
☞Leibniz 如何想出微積分?(一)
☞線性相關和秩的物理意義
☞數學史上你認為最醜陋的公式是什麼?
☞陶哲軒談什麼是好的數學
☞田淵棟:數學的用處(下篇)
☞你絕對沒想過原來數學家這麼流氓,一言不合就進行暴力證明
☞世界上最牛的五篇博士論文
☞數學中有哪些巧合讓人眼前一亮?
☞算法立功!清華畢業教授美國被搶車,警察無能為力自己用「貪心算法」找回
☞學術史上的奇文:怎樣用數學抓獅子
☞臺大教授的反思:最難的一課 我們卻沒教給學生
☞麻省理工學院(MIT)研究生學習指導—— 怎樣做研究生
☞分享 數學,常識和運氣 ——投資大師詹姆斯·西蒙斯2010年在MIT的講座
算法數學之美微信公眾號歡迎賜稿
稿件涉及數學、物理、算法、計算機、編程等相關領域,經採用我們將奉上稿酬。
投稿郵箱:math_alg@163.com