Matlab模擬蒲豐投針實驗計算Π值
文章目錄
1.前言
學習了概率論,決定自己動手程式設計實現蒲豐投針實驗來計算 π \pi π的值,其中本文程式碼部分參考了這篇文章.
2.實驗目的
通過模擬模擬實現蒲豐投針實驗來計算 π π π 值.
3.實驗原理
(1)問題描述
平面上畫著許多間距為
a
a
a的平行線,隨機地向此平面任投擲一長度為
l
(
l
<
a
)
l(l<a)
l(l<a)的針
N
N
N次,觀察針與直線相交的次數記為
n
n
(2)問題求解
以
x
x
x表示針的中點到最近的一條平行線的距離,
ϕ
\phi
ϕ表示針與平行線的夾角。可知
0
≤
x
≤
a
2
,
0
≤
ϕ
≤
π
,
0≤x≤\frac{a}{2},0≤\phi≤\pi,
0≤x≤2a,0≤ϕ≤π,以
S
S
S表示長寬分別為
a
2
\frac{a}{2}
2a和
π
π
π的長方形,要使針與平行線相交,必須保證
x
≤
l
2
s
i
n
ϕ
x≤\frac{l}{2}sin\phi
x≤2lsinϕ,滿足這個關係式的區域
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}
(圖來源網路,侵刪)
4.實驗過程
根據實驗原理用Matlab編寫程式,通過蒙特卡洛法生成規定量的隨機數模擬蒲豐投針實驗的結果,通過不斷增加試驗次數來得到更加精確結果.
5.實驗結果
a a a | n n n | P i Pi Pi | |
---|---|---|---|
第一次 | 1 | 10000 | 3.148779847809 |
第二次 | 1 | 10000 | 3.147128245476 |
第三次 | 1 | 100000 | 3.149440974227 |
第四次 | 1 | 100000 | 3.140539125883 |
第五次 | 1 | 1000000 | 3.144044393907 |
第六次 | 1 | 1000000 | 3.145742237881 |
第七次 | 1 | 10000000 | 3.139098147566 |
第八次 | 1 | 10000000 | 3.142210146825 |
第九次 | 1 | 20000000 | 3.140213681074 |
第十次 | 1 | 30000000 | 3.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)