歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> MATLAB:蒙特卡羅法解決投針實驗

MATLAB:蒙特卡羅法解決投針實驗

日期:2017/3/1 9:56:40   编辑:Linux編程

研究物理或數學過程的一種隨機模型的計算方法。蒙特-卡羅法是以隨機抽樣技巧作為工具的一門近代數值分析的學科。 蒙特卡羅法的思想提出雖然較早,但系統性的研究實開始於1944年前後。當時由於研制原子彈,需要研究中子在裂變物質中的輸運,提出了一些不易用一般數學方法求解的問題。

蒙特卡羅法可以用來求解兩類問題。第一類問題稱之為概率問題,用直接模擬某種物理過程的方法解決。第二類問題,是所謂定數問題。在解定數問題時,必須把問題化為相適應的能作模擬的概率問題。

投針實驗:在兩平行線中投針,取針的中點為參考,它到平線的距離為x,而針與平行線的交角為α,針長為l (當然要小於平行線間的距離D啦)

下面就在數學建模必備工具Matlab中寫出這個實驗過程吧:

D = 1;
L = 0.6;
counter = 0;
n = 10000;
x = unifrnd(0, D/2, 1, n);%在0-D/2的范圍內產生的隨機數填到1*n的矩陣當中
phi = unifrnd(0, pi, 1, n);
axis([0,pi, 0,D/2]);
for i=1:n
if x(i) < L*sin(phi(i))/2
plot(phi(i), x(i), 'r.');
counter = counter + 1;
hold on;
end
end
fren = counter/n;
pihat = 2*L/(D*fren);

Copyright © Linux教程網 All Rights Reserved