%圆周率pi的计算
%1.随机投点法
clear all
n=10000;
k=0;
for i=1:n
u=rand(1,1);
x=rand(1,1);
if u^2+x^2<1
k=k+1;
end
end
p=k/n*4;
p
%2.平均值法
clear all;
n=10000;
m=200;
for j=1:m
for i=1:n
u=rand(1,1);
x(i)=sqrt(1-u^2);
end
end
p(j)= mean(x)*4;
p
%重要抽样法
clear all
n=10000;
for j=1:n
for i=1:n
u=rand(1,1);
x(i)=sqrt(1-u^2)*(1-exp(-1))/exp(-u);
end
p(j)=mean(x)*4;
end
[mean(p),var(p)]
%分层抽样法
clear all
n=10000;
m=200;
for j=1:m
for i=1:n
x=0.5*rand(1,1);
y=0.5+0.5*rand(1,1);
z(i)=(sqrt(1-x^2)+sqrt(1-y^2))/2;
end
p(j)=mean(z)*4;
end
[mean(p),var(p)]
%控制变量法
clear all
n=10000;
m=200;
for j=1:m
for i=1:n
u=rand(1,1);
z(i)=sqrt(1-u^2)+0.7363*(u^2-1/3);
end
p(j)=4*mean(z);
end
[mean(p),var(p)]
%对立变量法
clear all
format long
n=10000;
m=200;
for j=1:m
for i=1:n
u=rand(1,1);
z(i)=1/2*(sqrt(1-u^2)+sqrt(1-(1-u)^2));
end
p(j)=4*mean(z);
end
[mean(p),var(p)]
%条件期望法
clear all
format long
n=10000;
m=200;
for j=1:m
for i=1:n
x=-1+2*rand(1,1);
z(i)=sqrt(1-x^2);
end
p(j)=4*mean(z);
end
[mean(p),var(p)]

5748

被折叠的 条评论
为什么被折叠?



