蒙特卡洛方法模拟小例子
![蒙特卡洛方法模拟小例子_第1页](https://file2.zhuangpeitu.com/fileroot2/2022-1/23/5c2330f3-d4c0-4e8f-b1bb-d91b5454d070/5c2330f3-d4c0-4e8f-b1bb-d91b5454d0701.gif)
![蒙特卡洛方法模拟小例子_第2页](/images/s.gif)
![蒙特卡洛方法模拟小例子_第3页](/images/s.gif)
《蒙特卡洛方法模拟小例子》由会员分享,可在线阅读,更多相关《蒙特卡洛方法模拟小例子(7页珍藏版)》请在装配图网上搜索。
1、例 在我方某前沿防守地域,敌人以一个炮排(含两门火炮)为单位对我方进行干扰和破 坏.为躲避我方打击,敌方对其阵地进行了伪装并经常变换射击地点. 经过长期观察发现,我方指挥所对敌方目标的指示有 50%是准确的,而我方火力单 位,在指示正确时, 有 1/3 的射击效果能毁伤敌人一门火炮, 有 1/6 的射击效果能全部毁伤 敌人火炮. 现在希望能用某种方式把我方将要对敌人实施的 20 次打击结果显现出来,确定有效 射击的比率及毁伤敌方火炮的平均值。 使用蒙特卡洛方法模拟 50 次打击结果: function [out1 out2 out3 out4]=Msc(N) % N 开炮次数
2、% out1 射中概率 % out2 平均每次击中次数 % out3 击中敌人一门火炮的射击总数 % out4 击中敌人 2 门火炮的射击总数 k1=0; k2=0; k3=0; for i=1:N x0=randperm(2)-1; y0=x0(1); if y0==1 fprintf('第%d 次:指示正确 ||',i); x1=randperm(6); y1=x1(1); if y1==1|y1==2|y1==3 fprintf('第 %d 次:击中 0 炮 ||',i); k1=k1+1; elseif y1==4|y1==5 fprintf('第
3、%d 次:击中 1 炮 ||',i); k2=k2+1; else fprintf('第 %d 次:击中 2 炮 ||',i); k3=k3+1; end else fprintf('第%d次:指示错误,击中 0炮||',i); k1+1; end fprin tf('\n'); end out1=(k2+k3)/N; out2=(0*k1+k2+2*k3)/20; out3=k2/N; out4=k3/N; 运行: 1. [out1 out2 out3 out4]=Msc(50) 结果: 1. 第1次:指示正确||第1次:击中2炮|| 2. 第2次:指
4、示错误,击中 0炮|| 3. 第3次:指示错误,击中 0炮|| 4. 第4次:指示正确||第4次:击中0炮|| 5. 第5次:指示错误,击中 0炮|| 6. 第6次:指示正确||第6次:击中1炮|| 7. 第7次:指示正确||第7次:击中0炮|| 8. 第8次:指示错误,击中 0炮|| 9. 第9次:指示正确||第9次:击中2炮|| 10. 第10次:指示正确||第10次:击中1炮|| 11. 第11次:指示正确||第11次:击中1炮|| 12. 第12次:指示正确||第12次:击中2炮|| 13. 第13次:指示错误,击中 0炮|| 14. 第14次:指示正确||第1
5、4次:击中1炮|| 15. 第15次:指示错误,击中 0炮|| 16. 第16次:指示错误,击中 0炮|| 17. 第17次:指示正确||第17次:击中0炮|| 18. 第18次:指示错误,击中 0炮|| 第19次 指示正确 ||第19次 击中 1炮|| 第20次 指示错误, 击中 0炮|| 第21次 指示正确 ||第21次 击中 0炮|| 第22次 指示正确 ||第22次 击中 1炮|| 第23次 指示正确 ||第23次 击中 0炮|| 第24次 指示错误, 击中 0炮|| 第25次 指示正确 ||第25次 击中
6、 1炮|| 第26次 指示错误, 击中 0炮|| 第27次 指示正确 ||第27次 击中 1炮|| 第28次 指示正确 ||第28次 击中 0炮|| 第29次 指示正确 ||第29次 击中 0炮|| 第30次 指示正确 ||第30次 击中 0炮|| 第31次 指示错误, 击中 0炮|| 第32次 指示错误, 击中 0炮|| 第33次 指示正确 ||第33次 击中 0炮|| 第34次 指示错误, 击中 0炮|| 第35次 指示正确 ||第35次 击中 0炮|| 第36次 指示正确 ||第36
7、次 击中 0炮|| 第37次 指示错误, 击中 0炮|| 第38次 指示正确 ||第38次 击中 0炮|| 第39次 指示错误, 击中 0炮|| 第40次 指示正确 ||第40次 击中 0炮|| 第41次 指示正确 ||第41次 击中 1炮|| 第42次 指示正确 ||第42次 击中 0炮|| 第43次 指示错误, 击中 0炮|| 第44次 指示正确 ||第44次 击中 1炮|| 第45次 指示正确 ||第45次 击中 0炮|| 第46次 指示错误, 击中 0炮|| 第47次 指示错误,
8、 击中 0炮|| 第48次 指示错误, 击中 0炮|| 第49次 指示正确 ||第49次 击中 0炮|| 第50次 指示正确 ||第50次 击中 1炮|| out1 = 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55.
9、56. 57. 58. 59. 60. 61. 62. 0.2800 out2 = 0.8500 out3 = 63. 64. 0.2200 65. 66. 65. out4 = 68. 69. 0.0600 一位朋友说要贴出 Monte Carlo计算积分的源程序,我就随便做一个简单的吧,复杂的程序 完全可以从这个来演化,我想 Monte Carlo积分的最大优势就在于高维积分,以及不规则区 域,可以节约很多计算机时。 下面只是演示一个 2重积分,可以扩展到 20维的只要添加相应的loop项。 被积函数:exp(sqrt(xA2+yA2))
10、;
x 上下限:xA2 < sin(y)
y 上下限:yA2 11、rt(x(i)A2+y(i)A2));
15.
x_plot( n)
=x(i);
16.
y_plot( n)
=y(i);
17.
end
18.
end
19.
f = f/N;
20. p=n/N;
21. a = 2*1;
22. I1 = f*a; %
23. I2 = a*p; %interesting area
24. I = 11/12
25.
25. plot(x_plot,y_plot,'o')
复制代码
蒙特卡洛法用于求积分时, 与积分重数无关,这点非常重要。虽然四维以下的积分用蒙特卡
洛法效率可能不如传统的一些数值积分方法, 但是维数高的时候,蒙特卡洛法比传统方法要
有效的多,而且实现起来也非常容易。 可以说,计算高维积分是蒙特卡洛方法最成功和典型
的应用。
基本的蒙特卡洛法具有计算不可重复性的缺点。这里共享采用等序列分布的蒙特卡洛法
Dp
L &等分布序列 Monte Carlo 积分.doc (92.5 KB, 下载次数:24)
,具有计算可重复性,误差阶比采用基本蒙特卡洛法好的优点。 就基本的蒙特卡洛法求积分
来说,不管积分重数多少,基本上是计算规模增加 100倍,精度提高10倍。
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。