p=rand(100000,2);%兩列數,第一列為x,第二列為y,相當於100000個點
%定義x y 的範圍
x=2*p(:,1)-1;%x範圍為-1到1
y=2*p(:,2);%y範圍為0到2
%找出在函式範圍的數
% k = find(x) 返回乙個包含陣列 x 中每個非零元素的線性索引的向量。
% 如果 x 為向量,則 find 返回方向與 x 相同的向量。
% 如果 x 為多維陣列,則 find 返回由結果的線性索引組成的列向量。
% 如果 x 包含非零元素或為空,則 find 返回乙個空陣列。
ii=find(y<=2-x.^2&y.^3>=x.^2);//找出100000個點中,在兩曲線之間的點,返回符合條件的點的序列
%計算符合條件的點的個數
m=length(ii);
%計算面積
s=4*m/100000;%正方形面積為4,m/100000為符合條件的點的個數佔總點的個數的比例,兩者乘積為面積
plot(x(ii),y(ii),'g.');%通過索引找到符合條件的點,並繪製。
程式來自:matlab-蒙特卡羅方法
n=100000;
x=rand(n,1);
y=rand(n,1);
count=0;
for i=1:n
if (x(i)^2+y(i)^2<=1)
count=count+1;
endendpi=4*count/n
matlab蒙特卡羅方法求體積 蒙特卡羅演算法
原創 袁恆 本文介紹了蒙特卡羅演算法,蒙特卡羅演算法是思想和技巧的藝術品,本文沒有演算法公式,共2000餘字,是領略演算法魅力的佳作。在介紹蒙特卡洛演算法之前,請大家先思考乙個問題 我們從小學就知道圓的面積 一 蒙特卡羅演算法簡介蒙特 卡羅方法 monte carlo method 也稱統計模擬方法...
蒙特卡羅演算法
蒙特卡羅演算法並不是一種演算法的名稱,而是對一類隨機演算法的特性的概括。說 蒙特卡羅演算法打敗武宮正樹 這個說法就好比說 我被乙隻脊椎動物咬了 是比較火星的。實際上是zen的演算法具有蒙特卡羅特性,或者說它的演算法屬於一種蒙特卡羅演算法。那麼 蒙特卡羅 是一種什麼特性呢?我們知道,既然是隨機演算法,...
蒙特卡羅模擬
最優化問題的計算方法是很重要的,因為很多最優化的問題難於解析地解出來,對於動態模擬,通常人們能夠解析地確定定常態的行為,但是關於瞬態行為的研究則需要計算機模擬,概率模型更加複雜,不具有時間動態特性的模擬有時能夠解析地求解出來,且對於簡單的隨機模型,定常態的結果通常是可用的,但是對於許多情況,概率模型...