蒙特卡洛演算法 投點求圓周率Pi

2021-06-22 00:13:07 字數 1069 閱讀 3405

蒙特卡洛演算法是以概率和統計的理論、方法為基礎的一種計算方法,將所求解的問題同一定的概率模型相聯絡;用電子計算機實現統計模擬和抽樣,以獲得問題的近似解,故又稱統計模擬法或統計實驗法。

蒙特卡洛演算法:蒙特卡洛是美國摩納哥的乙個城市,以賭博聞名於世。蒙特卡洛演算法借用這一城市的名稱是為了象徵性的表明該方法的概率統計特點。蒙特卡洛演算法作為一種計算方法,是由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;

endend%顯示結果

fprintf('當總實驗次數n = %d時計算出來的圓周率:pi = %d\n',n, 4 * m / n);

從實驗結果可以分析得出:

1.隨著投點的次數增加,圓周率pi計算的準確率在增加;

2.但當次數達到一定規模時,準確率精度增加在減緩,其原因是生成的隨機數是偽隨機的,這也是蒙特卡洛演算法達不到祖沖之求圓周率精度的內在原因;

3.同時在進行兩次的1億次投點中也可以發現,對於相同的投點數由於實驗本身的隨機性每次的實驗結果是不同的。

利用蒙特卡洛演算法求圓周率

from 背景知識 蒙特卡洛是摩納哥公國第一大城市,與澳門 美國拉斯維加斯並稱世界三大賭城。位於地中海沿岸,首都摩納哥之北,建於阿爾卑斯山脈突出地中海的懸崖之上。景色優美,是地中海地區旅遊勝地。市內置有豪華的旅館 俱樂部 歌劇院 商店 游泳池 溫泉浴室 運動場等娛樂設施 城內開設有蒙特卡洛大賭場。賭...

蒙特卡洛法求圓周率

利用蒙特卡洛演算法求圓周率是乙個概率的方法,關於這方面的內容很多,而且也很容易理解,更多具體分析過程可以參考如下文章 下面是我的理解和 蒙特卡洛演算法是通過概率來計算pi的值的。對於乙個單位為1的正方形,以其某乙個頂點為圓心,邊為半徑在正方形內畫扇形 乙個1 4的圓形的扇形 那麼扇形的面積就是pi ...

蒙特卡洛方法計算圓周率

import random import math defcalpai n 10000000 隨機實驗次數 r 1.0 圓的半徑 a,b 0.0 0.0 中心點 x neg,x pos a r,a r x座標取值範圍 y neg,y pos b r,b r y座標取值範圍 count 0 落在圓內的...