1、用蒙特卡罗法计算多圆体面积更多源代码请到 http:/ 下载1、问题的提出已知平面区域上的 n 个圆的圆心及半径为(x i,yi,ri), i=1,2,.,n, 求由这 n 个圆组成的多圆体的面积。(可采用蒙特卡罗法求近似值)请以下面这组数据为例给出你的计算结果。x 0.0013 -0.0683 0.4976 0.3116 -0.0143 0.3944 -0.3625 -0.1100 0.4274 0.4175y 0.2136 0.1183 -0.1567 0.4360 -0.3752 0.2306 0.1465 0.3332 -0.1017 0.2498r 0.8352 0.3225 0.5
2、523 0.9791 0.5493 0.3304 0.6195 0.3606 0.7565 0.41392、模型的假设我们作如下假设假设落在边界上的点不算。 1假设点落在每个区域的机率是等可能的。 23、模型的建立在矩形区域内产生随机点( x,y) ,如果该点( x,y)到任何一个圆心的距离小于其半径,则表示点落在区域内,否则落在区域外。产生的点数为 N,如果点产生在曲线所围区域内,则计数器 m 加 1,最后根据公式Area Sm 当 N时,越接近于真实值。4、模型的求解取 N=10000 (在长方形区域内产生 10000 个随机点) 运行两次分别得到 10 个面积如表所示%蒙特卡罗法计即面积
3、计算源程序x0=0.0013 -0.0683 0.4976 0.3116 -0.0143 0.3944 -0.3625 -0.1100 0.4274 0.4175;y0=0.2136 0.1183 -0.1567 0.4360 -0.3752 0.2306 0.1465 0.3332 -0.1017 0.2498;r= 0.8352 0.3325 0.5523 0.9791 0.5493 0.3304 0.6195 0.3606 0.7565 0.4139;Cxy=x0 y0;for i=1:length(r)theta=0:2*pi/9000:2*pi;Circle1=Cxy(i,1)+r(
4、i)*cos(theta);Circle2=Cxy(i,2)+r(i)*sin(theta);plot(Circle1,Circle2) hold onendaxis equalhold offfor k=1:10n=10000;m=0;for i=1:nx(i)=unifrnd(-1,1.5);y(i)=unifrnd(-1,2);for j=1:length(r)if(x(i)-x0(j)2+(y(i)-y0(j)2(r(j)2)m=m+1;break;endendendArea=2.5*3*m/nend表1 蒙特卡罗法计算面积所得数据3.9953 4.0193 4.0140 3.9922 3.99833.9413 4.0005 4.0057 4.0118 4.00733.9848 3.9398 3.9315 3.9863 4.09124.0778 3.9915 4.0297 3.9562 4.0403平均值 4.00075、模型分析因为是随机投点,而且边界上的点不算在区域内,所得面积比真实值小一点。如果增加投点数,误差可能会更小。