蒙特卡洛算法:蒙特卡洛是美國摩納哥的一個城市,以賭博聞名於世。蒙特卡洛算法借用這一城市的名稱是爲了象徵性的表明該方法的概率統計特點。蒙特卡洛算法作爲一種計算方法,是由S.M.烏拉姆和J.馮諾依曼在20世紀40年代中葉爲研製核武器的需要而提出的。
蒙特卡洛方法的基本思想雖然早已被人提出,例如在古典概率中的著名法國數學家布豐利用投針求圓周率Pi值,卻很少被使用。直到電子計算機出現後,使得人們可以通過電子計算機來模擬巨大數目的隨機試驗過程,使得蒙特卡洛方法得到廣泛地應用。
用蒙特卡洛投點法計算Pi的值;
在一個邊長爲a的正方形內一均勻概率隨機投點,該點落在此正方形的內切圓中的概率即爲內切圓與正方形的面積比值,即:Pi * (a / 2)^2 : a^2 = Pi / 4。
%總的實驗次數
n = input('請輸入n:');
%落在圓中點的次數
m = 0;
%使用的圓的半徑
a = 2;
%循環實驗
for i = 1:n
x = rand * a / 2;
y = rand * a / 2;
if (x^2 + y^2 <= (a/2)^2)
m = m + 1;
end
end
%顯示結果
fprintf('當總實驗次數n = %d時計算出來的圓周率:Pi = %d\n',n, 4 * m / n);
從實驗結果可以分析得出:
1.隨着投點的次數增加,圓周率Pi計算的準確率在增加;
2.但當次數達到一定規模時,準確率精度增加在減緩,其原因是生成的隨機數是僞隨機的,這也是蒙特卡洛算法達不到祖沖之求圓周率精度的內在原因;
3.同時在進行兩次的1億次投點中也可以發現,對於相同的投點數由於實驗本身的隨機性每次的實驗結果是不同的。