1. 程式人生 > 其它 >Matlab模擬蒲豐投針實驗計算Π值

Matlab模擬蒲豐投針實驗計算Π值

技術標籤:概率論概率論演算法matlab

文章目錄

1.前言

學習了概率論,決定自己動手程式設計實現蒲豐投針實驗來計算 π \pi π的值,其中本文程式碼部分參考了這篇文章.

2.實驗目的

通過模擬模擬實現蒲豐投針實驗來計算 π π π 值.

3.實驗原理

(1)問題描述

平面上畫著許多間距為 a a a的平行線,隨機地向此平面任投擲一長度為 l ( l < a ) l(l<a) l(l<a)的針 N N N次,觀察針與直線相交的次數記為 n n

n,計算此針與任意直線相交的概率。

(2)問題求解

x x x表示針的中點到最近的一條平行線的距離, ϕ \phi ϕ表示針與平行線的夾角。可知 0 ≤ x ≤ a 2 , 0 ≤ ϕ ≤ π , 0≤x≤\frac{a}{2},0≤\phi≤\pi, 0x2a,0ϕπ, S S S表示長寬分別為 a 2 \frac{a}{2} 2a π π π的長方形,要使針與平行線相交,必須保證 x ≤ l 2 s i n ϕ x≤\frac{l}{2}sin\phi x2lsinϕ,滿足這個關係式的區域 G G G為下圖(圖中 b b b即為 l l l)中黃色部分,則所求概率即表示為 p = G 的 面 積 S 的 面 積 = 1 2 ∫ 0 π l sin ⁡ ϕ d ϕ 1 2 a π = 2 l π a p=\frac{G的面積}{S的面積}=\frac{\frac{1}{2}\int_0^\pi l\sin \phi d\phi}{\frac{1}{2}a \pi}=\frac{2l}{\pi a}

p=SG=21aπ210πlsinϕdϕ=πa2l.用頻率 n N \frac{n}{N} Nn代替概率 p p p即可得 π = 2 l N a n \pi=\frac{2lN}{an} π=an2lN,並以此來計算 π \pi π值.

在這裡插入圖片描述
(圖來源網路,侵刪)

4.實驗過程

根據實驗原理用Matlab編寫程式,通過蒙特卡洛法生成規定量的隨機數模擬蒲豐投針實驗的結果,通過不斷增加試驗次數來得到更加精確結果.

5.實驗結果

a a a n n n P i Pi Pi
第一次1100003.148779847809
第二次1100003.147128245476
第三次11000003.149440974227
第四次11000003.140539125883
第五次110000003.144044393907
第六次110000003.145742237881
第七次1100000003.139098147566
第八次1100000003.142210146825
第九次1200000003.140213681074
第十次1300000003.141194329202

6.實驗結論

由實驗結果可以看出,可以看出當 n n n足夠大時,頻率接近概率,蒲豐投針模擬實驗可以得到較為精確的 π π π值。

7.Matlab程式碼

l = 0.6; %針長度
a = 1;   %平行線寬度,l和a均可修改,只要滿足l<a即可
n = 100000; %做n次投針試驗
y = unifrnd(0, a/2, 1, n); %[0, a/2]內服從均勻分佈隨機產生n個數
theta = unifrnd(0, pi, 1, n); %[0, pi]內服從均勻分佈隨機產生n個數
k=sum(y<(l/2)*sin(theta));%記錄針與平行線相交的次數
pival = (2*l*n)/(a*k);
z=sprintf('%.12f',pival);
disp(z)