日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Matlab蒙特卡罗模拟

發布時間:2024/3/13 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Matlab蒙特卡罗模拟 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Matlab蒙特卡羅模擬:
可以用蒙特卡羅方法來近似模擬求pi值:
思路:
設相互獨立的隨機變量X,Y均服從[-1,1]上的均勻分布,則(X,Y)服從{-1≤x≤1, 1≤y≤1}上的二元均勻分布(即圖1中正方形區域上的二元均勻分布),記事件A = {x2+y2≤1},則A事件發生的概率等于單位圓面積除以邊長為2的正方形的面積,即P(A) = pi/4,從而可得圓周率pi = 4P(A). 而P(A)可以通過蒙特卡洛模擬法求得,在圖1中正方形內隨機投點(即橫坐標X和縱坐標Y都是[-1,1]上均勻分布的隨機數),落在單位圓內的點的個數m與點的總數n的比值m/n可以作為A事件的概率P(A)的近似,隨著投點總數的增加,m/n會越來越接近于P(A),從而可以得到逐漸接近于pi的模擬值。
function piva=PiMonterCarlo(n)
x=0;y=0;d=0;
m=length(n);
pivalue=zeros(m,1);
for i=1:m
x=2rand(n(i),1)-1;
y=2rand(n(i),1)-1;
d=x.2+y.2;
pivalue(i)=4sum(d<=1)/n(i);
end
if nargout==0
if m>1
figure;
plot(n,pivalue,‘k.’);
h=refline(0,pi);
set(h,‘linewidth’,2,‘color’,‘r’);
text(1.05n(end),pi,’\pi’,‘FontSize’,15);
xlabel(‘投點個數’);
ylabel(’\pi的模擬值’);
else
figure;
plot(x,y,‘r.’);
hold on;
h=rectangle(‘Position’,[-1 -1 2 2],‘LineWidth’,2);
t=linspace(0,2*pi,100);
plot(cos(t),sin(t),‘k’,‘LineWidth’,2);
xlabel(‘X’);ylabel(‘Y’);
title(‘Pi的模擬值:’,num2str(pivalue));
axis([-1.1 1.1 -1.1 1.1]);axis equal;
end
else
piva=pivalue;
end


還可以模擬K值

times = 300; % 蒙特卡洛的次數 R = zeros(times,1); % 用來儲存擾動項u和x1的相關系數 K = zeros(times,1); % 用來儲存遺漏了x2之后,只用y對x1回歸得到的回歸系數 for i = 1: timesn = 30; % 樣本數據量為nx1 = -10+rand(n,1)*20; % x1在-10和10上均勻分布,大小為30*1u1 = normrnd(0,5,n,1) - rand(n,1); % 隨機生成一組隨機數x2 = 0.3*x1 + u1; % x2與x1的相關性不確定, 因為我們設定了x2要加上u1這個隨機數u = normrnd(0,1,n,1); % 擾動項u服從標準正態分布y = 0.5 + 2 * x1 + 5 * x2 + u ; % 構造yk = (n*sum(x1.*y)-sum(x1)*sum(y))/(n*sum(x1.*x1)-sum(x1)*sum(x1)); % y = k*x1+b 回歸估計出來的kK(i) = k;u = x2 + u; % 因為我們忽略了x2,所以擾動項要加上x2r = corrcoef(x1,u); % 2*2的相關系數矩陣R(i) = r(2,1); end plot(R,K,'*') xlabel("x_1和u'的相關系數") ylabel("k的估計值")

結果:

總結

以上是生活随笔為你收集整理的Matlab蒙特卡罗模拟的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。