例 在我方某前沿防守地域,敌人以一个炮排(含两门火炮)为单位对我方进行干扰和破坏.为躲避我方打击,敌方对其阵地进行了伪装并经常变换射击地点.

经过长期观察发现,我方指挥所对敌方目标的指示有50%是准确的,而我方火力单位,在指示正确时,有1/3的射击效果能毁伤敌人一门火炮,有1/6的射击效果能全部毁伤敌人火炮.

现在希望能用某种方式把我方将要对敌人实施的20次打击结果显现出来,确定有效射击的比率及毁伤敌方火炮的平均值。

使用蒙特卡洛方法模拟50次打击结果:

function [out1 out2 out3 out4]=Msc(N)

% N开炮次数

% 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('第%d次:击中1炮||',i);

k2=k2+1;

else

fprintf('第%d次:击中2炮||',i);

k3=k3+1;

end

else

fprintf('第%d次:指示错误,击中0炮||',i);

k1+1;

end

fprintf('\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次:指示错误,击中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次:指示正确||第14次:击中1炮||

15. 第15次:指示错误,击中0炮||

16. 第16次:指示错误,击中0炮||

17. 第17次:指示正确||第17次:击中0炮||

18. 第18次:指示错误,击中0炮||

19. 第19次:指示正确||第19次:击中1炮||

20. 第20次:指示错误,击中0炮||

21. 第21次:指示正确||第21次:击中0炮||

22. 第22次:指示正确||第22次:击中1炮||

23. 第23次:指示正确||第23次:击中0炮||

24. 第24次:指示错误,击中0炮||

25. 第25次:指示正确||第25次:击中1炮||

26. 第26次:指示错误,击中0炮||

27. 第27次:指示正确||第27次:击中1炮||

28. 第28次:指示正确||第28次:击中0炮||

29. 第29次:指示正确||第29次:击中0炮||

30. 第30次:指示正确||第30次:击中0炮||

31. 第31次:指示错误,击中0炮||

32. 第32次:指示错误,击中0炮||

33. 第33次:指示正确||第33次:击中0炮||

34. 第34次:指示错误,击中0炮||

35. 第35次:指示正确||第35次:击中0炮||

36. 第36次:指示正确||第36次:击中0炮||

37. 第37次:指示错误,击中0炮||

38. 第38次:指示正确||第38次:击中0炮||

39. 第39次:指示错误,击中0炮||

40. 第40次:指示正确||第40次:击中0炮||

41. 第41次:指示正确||第41次:击中1炮||

42. 第42次:指示正确||第42次:击中0炮||

43. 第43次:指示错误,击中0炮||

44. 第44次:指示正确||第44次:击中1炮||

45. 第45次:指示正确||第45次:击中0炮||

46. 第46次:指示错误,击中0炮||

47. 第47次:指示错误,击中0炮||

48. 第48次:指示错误,击中0炮||

49. 第49次:指示正确||第49次:击中0炮||

50. 第50次:指示正确||第50次:击中1炮||

51.

52. out1 =

53.

54. 0.2800

55.

56.

57. out2 =

58.

59. 0.8500

60.

61.

62. out3 =

63.

64. 0.2200

65.

66.

67. out4 =

68.

69. 0.0600

一位朋友说要贴出Monte Carlo 计算积分的源程序,我就随便做一个简单的吧,复杂的程序完全可以从这个来演化,我想Monte Carlo 积分的最大优势就在于高维积分,以及不规则区域, 可以节约很多计算机时。

下面只是演示一个2重积分,可以扩展到20维的只要添加相应的loop 项。

被积函数: exp(sqrt(x^2+y^2));

x 上下限:x^2

y 上下限: y^2

1.

2.

3.

4.

5.

6.

7.

8. % MONTE CARLO INT

% by caoer clear all N =100000; x = 2*rand(N,1)-1; y = rand(N,1); f = 0;

9. fsq = 0; 10. n = 0;

11. for i=1:N

12. if x(i)^2

13. n=n+1;

14. f=f+exp(sqrt(x(i)^2+y(i)^2));

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 = I1/I2

25.

26. plot(x_plot,y_plot,'o')

复制代码

蒙特卡洛法用于求积分时,与积分重数无关,这点非常重要。虽然四维以下的积分用蒙特卡洛法效率可能不如传统的一些数值积分方法,但是维数高的时候,蒙特卡洛法比传统方法要有效的多,而且实现起来也非常容易。可以说,计算高维积分是蒙特卡洛方法最成功和典型的应用。

基本的蒙特卡洛法具有计算不可重复性的缺点。这里共享采用等序列分布的蒙特卡洛法

等分布序列Monte Carlo积分.doc (92.5 KB, 下载次数: 24)

,具有计算可重复性,误差阶比采用基本蒙特卡洛法好的优点。就基本的蒙特卡洛法求积分来说,不管积分重数多少,基本上是计算规模增加100倍,精度提高10倍。

在我方某前沿防守地域 matlab,蒙特卡洛方法模拟小例子相关推荐

  1. 在我方某前沿防守地域 matlab,[matlab]Monte Carlo模拟学习笔记

    理论基础:大数定理,当频数足够多时,频率可以逼近概率,从而依靠概率与$\pi$的关系,求出$\pi$ 所以,rand在Monte Carlo中是必不可少的,必须保证测试数据的随机性. 用蒙特卡洛方法进 ...

  2. Algorithm之MC:基于Matlab实现通过蒙特卡洛方法模拟二维布朗运动

    Algorithm之MC:基于Matlab实现通过蒙特卡洛方法模拟二维布朗运动 目录 输出结果 设计代码 输出结果 基于Matlab实现通过蒙特卡洛方法模拟二维布朗运动 设计代码 %基于Matlab实 ...

  3. matlab 蒙特卡洛工具箱_量化投资_轻松实现MATLAB蒙特卡洛方法建模

    1 目录 * MATLAB随机数的产生 - Uniform,Normal & Custom distributions * 蒙特卡洛仿真 * 产生股票价格路径 * 期权定价 - 经典公式 - ...

  4. matlab蒙特卡洛方法求积分,matlab-蒙特卡洛法估计积分值

    <matlab-蒙特卡洛法估计积分值>由会员分享,可在线阅读,更多相关<matlab-蒙特卡洛法估计积分值(6页珍藏版)>请在人人文库网上搜索. 1.西安交通大学实验报告课程: ...

  5. matlab产生光脉冲,【资源】分享一个脉冲的光线中传输的matlab程序 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...

    好多研1的同学,开始用matlab进行模拟的时候都没有学过matlab,下面这个程序为光脉冲在光纤中传输时程序,其中用到了傅里叶分步法,要用傅里叶分步法的同学也可以参考借鉴一下,还有这个程序也可以用来 ...

  6. 蒙特卡洛方法模拟社会财富分配

    一.实验内容 1.可借贷模型 100个人,每个人有100元钱,每一次财富分配需要每个人拿出1元钱随机分配给其他人,允许当某人手里没钱时向系统外的人,假设为亲戚等进行借贷,即允许财富值为负,进行1700 ...

  7. 使用蒙特卡洛方法模拟三门问题(C语言)

    大家好,我是想秃头的

  8. [matlab]Monte Carlo模拟学习笔记

    理论基础:大数定理,当频数足够多时,频率可以逼近概率,从而依靠概率与$\pi$的关系,求出$\pi$ 所以,rand在Monte Carlo中是必不可少的,必须保证测试数据的随机性. 用蒙特卡洛方法进 ...

  9. MATLAB蒙特卡洛(Monte Carlo)方法求椭圆面积

    MATLAB蒙特卡洛方法求椭圆面积 代码 代码 在某个规定的范围内随机打点,找到满足条件的点,并数一下这些点的数量与总的随机点数量的比,就OK了.关键是设置条件. 代码 clear;clc; n=10 ...

最新文章

  1. 49.SCVMM管理下的Hyper-V到Azure的异地(Azure)容灾
  2. 喝不起奶茶,咱就为奶茶店开发个会员积分收银系统
  3. 阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第5节 final关键字_1_final关键字概念与四种用法...
  4. 一个高效的定时任务系统
  5. python常用8大算法
  6. 中国互联网的“去中心化”与“中心化”之战
  7. 记录 之 cat 和 awk gsub 的使用
  8. Jmeter运行过程中如何让Fiddler同时可以抓获到服务器的应答报文
  9. jsf集成spring_Spring和JSF集成:导航
  10. mysql 5.6.23免安装_mysql5.6.23免安装配置
  11. python对比不同大小的图片_使用Python 制作对比图片相似度的程序怎么比较?
  12. 数据层处理和性能优化
  13. [置顶] 【cocos2d-x入门实战】微信飞机大战之六:子弹层的处理
  14. 微信提示点击右上角浏览器中打开
  15. [译] iOS 11:机器学习人人有份
  16. 打包下载 java_java实现文件打包下载
  17. mov转换成mp4,mov转mp4方法
  18. Discuz! 模板制作
  19. MATLAB | 经典力学框架下的三体运动数值模拟软件
  20. 图像处理用什么神经网络,神经网络图像处理

热门文章

  1. js脚本 处理js注入
  2. cvBlob 作为静态库链接问题
  3. 〖Android〗从Android Studio转为Eclipse开发项目运行程序闪退的解决方法
  4. Oracle RAC CSS 超时计算 及 参数 misscount, Disktimeout 说明
  5. 《精通Unix下C语言与项目实践》读书笔记(16)
  6. Bourne Shell及shell编程
  7. 创建git项目的feature分支以及下载特定分支的仓库代码
  8. python glances来监控linux服务器CPU 内存 IO使用
  9. Nginx做前端代理时缓存与否的性能差别
  10. nsTimer的简单用法