圆周率pi的七个方法

%圆周率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)]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值