〖數學演算法〗求圓周率的幾種演算法

來源:互聯網
上載者:User

圓周率大家都不陌生,最早由歐幾裡德《幾何原本》中提到圓周率是常數,第一個用尋求圓周率數值的人是阿基米德,中國數學家劉徽,和後來大名鼎鼎的祖沖之分別對圓周率進行了計算,從古到今對圓周率的計算方法有幾十種。

下面就介紹幾種求圓周率的方法:

1.隨機投點法(蒙特卡洛演算法)

 這是粗略的求圓周率一種常用演算法

在(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

2.公式法

圓周率的公式特別多,介紹其中一個

這是一個迭代過程,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

3.蒲豐投針

這一方法的步驟是:

  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; } 

ps:LZ是看不懂它在幹什麼

我的第一篇博文寫完啦,歎口氣

==================================================================================================

  作者:nash_  歡迎轉載,與人分享是進步的源泉!

  轉載請保留原文地址:http://blog.csdn.net/nash_/article/details/8199357

===================================================================================================

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.