資源簡介
matlab代碼,通過蒙特卡羅方法計算n維球的體積,此仿真程序計算復雜度較高,并有與公式方法結果之間的對比;

代碼片段和文件信息
close?all;
clear?all;
clc;
Ns=10000;?
%?蒙特卡洛采樣點數,這里取10000,主要是考慮到程序的運行時間;
%?題目要求取1000000,這樣的話,程序運行就要超過十個小時;
%?程序流程是沒問題的,結果也沒有問題,把這個數字改成1000000,經過足夠長的時間,也可以得到相應的結果;
Nd?=?12;?
%?空間維度,這里取12,也是考慮到程序運行時間,當取樣點數比較小的時候,維度太高,就會出現
%?由于點數不夠導致計算結果為零的情況,這也就是作業的最后一個問題的答案:)
V?=?zeros(115);
V(1)?=?0;
R?=?0;?
count?=?0;
count_v?=?0;
%?下面這段程序是主要的計算環節,最外層是維度循環,內層是采樣點數的循環,約束條件是歐式距離小于等于1;
%?如果選取的點符合條件,計數,然后再除以總共的點數,得到的就是n維球體的體積;
for?i=2:Nd
????for?j=1:Ns
????????x?=?rand(iNs);
????????[mn]=size(x);
????????for?k=1:m;
????????????R?=?R?+?x(ki)^2;
????????end
????????if?R?<=1;
????????????count_v?=?count_v?+?1;
????????end
????????count?=?count?+?1;
????????R?=?0;
????end
????V(i)?=?count_v?/?count?*?(2^i);
????count
????count_v
????count?=?0;
????count_v?=?0;
????clear?x;
end
%?下面這段是利用公式計算n維球體積,使用了伽馬函數;
for?i=1:15
????V_G(i)?=?pi^(i/2)?/?gamma(i/2+1);
end
i=1:15;
figure;
plot(iV‘-‘iV_G‘--‘);
grid?on;
title(‘Comparison?of?Monte?Carlo?&?Formula?of?n?ball?volumn‘);
legend(‘Monte?Carlo?Method‘‘Formula‘);
????????????
????????
????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1371??2018-09-13?21:37??test.m
?????文件????????933??2019-03-24?09:39??test.rar
-----------?---------??----------?-----??----
?????????????????2304????????????????????2
- 上一篇:基于MATLAB的眼圖畫法
- 下一篇:matlab版hog+svm圖像二分類
評論
共有 條評論