MATLAB:蒙特卡罗法解决投针实验

本文介绍了蒙特卡罗法,一种利用随机抽样技巧进行物理或数学过程计算的现代数分析学科。重点阐述了其在解决概率问题和定数问题的两种方式,并通过投针实验在Matlab中实现,直观展示了该方法的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       研究物理或数学过程的一种随机模型的计算方法。蒙特-卡罗法是以随机抽样技巧作为工具的一门近代数值分析的学科。 蒙特卡罗法的思想提出虽然较早,但系统性的研究实开始于1944年前后。当时由于研制原子弹,需要研究中子在裂变物质中的输运,提出了一些不易用一般数学方法求解的问题。 
       蒙特卡罗法可以用来求解两类问题。第一类问题称之为概率问题,用直接模拟某种物理过程的方法解决。第二类问题,是所谓定数问题。在解定数问题时,必须把问题化为相适应的能作模拟的概率问题。

       投针实验:在两平行线中投针,取针的中点为参考,它到平线的距离为x,而针与平行线的交角为α,针长为l (当然要小于平行线间的距离D啦)

                                        

下面就在数学建模必备工具Matlab中写出这个实验过程吧:

D = 1;
L = 0.6;
counter = 0;
n = 10000;
x = unifrnd(0, D/2, 1, n);%在0-D/2的范围内产生的随机数填到1*n的矩阵当中
phi = unifrnd(0, pi, 1, n);
axis([0,pi, 0,D/2]);
for i=1:n
    if x(i) < L*sin(phi(i))/2
        plot(phi(i), x(i), 'r.');
        counter = counter + 1;
        hold on;
    end 
end
fren = counter/n;
pihat = 2*L/(D*fren);

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值