找回密码
 立即注册
查看: 4070|回复: 4

重合圆面积计算

[复制链接]
发表于 2013-6-5 21:13:19 | 显示全部楼层 |阅读模式

请教各位高手:

在正交坐标轴内,任意随机均匀抽取30组(X,Y)做为圆心,做一个半径r=0.218的圆,X和Y的取值【0,1】,这30个圆可以重合,求这N个圆的总面积。重复抽100次,最后出来一组随机数。


回复

使用道具 举报

发表于 2013-6-6 10:23:46 | 显示全部楼层
本帖最后由 snow 于 2013-6-11 08:47 编辑

典型蒙特卡洛求解问题
代码如下:

  1. area<-function(circle_num=30,radius=0.218,MonteCarlo_point_num=1000){
  2. circle_center_x=runif(circle_num)
  3. circle_center_y=runif(circle_num)
  4. randpoint_x=runif(MonteCarlo_point_num)
  5. randpoint_y=runif(MonteCarlo_point_num)
  6. point_num_in_circle=0
  7. for (i in 1:MonteCarlo_point_num){
  8. mark=0
  9. for(j in 1:circle_num){
  10. distance_randpoint_circlecenter=sqrt((randpoint_x[i]-circle_center_x[j])^2+(randpoint_y[i]-circle_center_y[j])^2)
  11. if(distance_randpoint_circlecenter<radius){
  12. mark=mark+1
  13. }
  14. }
  15. if(mark>0){
  16. point_num_in_circle=point_num_in_circle+1
  17. }
  18. }
  19. area=point_num_in_circle/MonteCarlo_point_num
  20. return(area)
  21. }
  22. area(30,0.218,1000)
  23. result=0
  24. for(i in 1:100){result[i]<-area(30,0.218,1000)}
  25. hist(result)

复制代码
还可以调整半径啥的
  1. for(i in 1:100){result[i]<-area(30,0.1,1000)}
  2. hist(result)
复制代码
写的比较仓促,你可以再完善完善代码

回复

使用道具 举报

 楼主| 发表于 2013-6-9 14:18:21 | 显示全部楼层
snow 发表于 2013-6-6 10:23
典型蒙特卡洛求解问题
代码如下:还可以调整半径啥的写的比较仓促,你可以再完善完善代码

抱歉,这两天没上网,刚才看到您的解答,非常感谢!
我试着运行了几次
结果显示:
“area(30,0.218,1000)
[1] 1
警告多于50个(用warnings()来显示第一个到第50个)
> result=0
> for(i in 1:100){result<-area(30,0.218,1000)}”

然后hist(result)这一步总是出不来,一直是等待中
再次请教,请问这是怎么回事?


不甚感激!


——一个菜鸟级的R新手

回复

使用道具 举报

发表于 2013-6-11 08:48:37 | 显示全部楼层
娴娴1988 发表于 2013-6-9 14:18
抱歉,这两天没上网,刚才看到您的解答,非常感谢!
我试着运行了几次
结果显示:

呵呵,代码调试的过程中忘记修改回去了,现在改好了,你可以复制运行了,呵呵
回复

使用道具 举报

 楼主| 发表于 2013-6-13 00:35:43 | 显示全部楼层
O(∩_∩)O谢谢!由于自己在山里出外业,这里网络和信号时断时续,现在才看到您的各种回复,再次感谢!您让我受益匪浅。我自己先慢慢消化着您的解答,有问题再向您请教。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|R语言中文网

GMT+8, 2024-11-25 07:41 , Processed in 0.026378 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表