2015数学建模选修大作业.pdf

上传人:tbuqq 文档编号:5493170 上传时间:2020-05-23 格式:PDF 页数:10 大小:149.13KB
返回 下载 相关 举报
2015数学建模选修大作业.pdf_第1页
第1页 / 共10页
2015数学建模选修大作业.pdf_第2页
第2页 / 共10页
2015数学建模选修大作业.pdf_第3页
第3页 / 共10页
2015数学建模选修大作业.pdf_第4页
第4页 / 共10页
2015数学建模选修大作业.pdf_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《2015数学建模选修大作业.pdf》由会员分享,可在线阅读,更多相关《2015数学建模选修大作业.pdf(10页珍藏版)》请在三一文库上搜索。

1、实用标准文档 文案大全 中华女子学院 2014 2015 学年第二学期期末考试 (论文类) 论文题目数学建模算法之蒙特卡罗算法 课程代码 1077080001 课程名称数学建模 学号 130801019 姓名陈可心 院系计算机系 专业计算机科学与技术 考试时间 2015年 5 月 27 日 成绩 实用标准文档 文案大全 一、数学建模十大算法 1、蒙特卡罗算法 该算法又称随机性模拟算法, 是通过计算机仿真来解决问题的算法,同时可 以通过模拟可以来检验自己模型的正确性,是比赛时必用的方法。 接下来本文将 着重介绍这一算法。 2、数据拟合、参数估计、插值等数据处理算法 比赛中通常会遇到大量的数据需要

2、处理,而处理数据的关键就在于这些算 法,通常使用 Matlab 作为工具。 3、线性规划、整数规划、多元规划、二次规划等规划类问题 建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算 法来描述,通常使用Lindo 、Lingo 软件实现。这个也是我们数学建模选修课时 主要介绍的问题,所以对这方面比较熟悉,也了解了Lindo 、Lingo 软件的基本 用法。 4、图论算法 这 类 算 法 可 以 分为 很多 种, 包 括 最 短 路 、 网 络 流 、 二 分图 等算 法 , 涉及到图论的问题可以用这些方法解决,上学期数据结构课程以及离散数学课程 中都有介绍。它提供了对很多问题都

3、很有效的一种简单而系统的建模方式。 5、动态规划、回溯搜索、分治算法、分支定界等计算机算法 这些算法是算法设计中比较常用的方法,很多场合可以用到竞赛中 6、 最优 化理 论 的 三 大 非 经 典 算法 : 模 拟 退 火 法 、 神 经网 络、 遗 传 算 法 这些问题是用来解决一些较困难的最优化问题的算法,对于有些问题非常有 帮助,但是算法的实现比较困难,需慎重使用。 7、网格算法和穷举法 网格算法和穷举法都是暴力搜索最优点的算法,在很多竞赛题中有应用, 当 重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案, 最好使用一些高 级语言作为编程工具。 8、一些连续离散化方法 很多问题都是

4、实际来的, 数据可以是连续的, 而计算机只认的是离散的数据, 因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的。 实用标准文档 文案大全 9、数值分析算法 如果在比赛中采用高级语言进行编程的话,那一些数值分析中常用的算法比 如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。 10、图象处理算法 赛题中有一类问题与图形有关,即使与图形无关,论文中也应该要不乏图片 的,这些图形如何展示以及如何处理就是需要解决的问题,通常使用Matlab 进 行处理。 二、蒙特卡罗方法 2.1 算法简介 蒙特卡罗方法( Monte Carlo method ),也称统计模拟方法,1

5、946年, 美国拉斯阿莫斯国家实验室的三位科学家John von Neumann,Stan Ulam 和 Nick Metropolis共同发明了,蒙特卡罗方法。此算法被评为20 世纪最伟大的十大算 法之一。是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而 被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用 随机数来解决很多计算问题的方法。 由于传统的经验方法由于不能逼近真实的物 理过程,很难得到满意的结果, 而蒙特卡罗方法由于能够真实地模拟实际物理过 程,故解决问题与实际非常符合,可以得到很圆满的结果。 与它对应的是确定性 算法。蒙特卡罗方法在金融工程学,宏

6、观经济学,计算物理学(如粒子输运计 算、量子热力学计算、空气动力学计算)等领域应用广泛。 2.2 蒙特卡罗方法的特点 蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数学方法来加 以模拟,即进行一种数字模拟实验。 它是以一个概率模型为基础,按照这个模型 所描绘的过程,通过模拟实验的结果,作为问题的近似解。 蒙特卡罗方法与一般计算方法有很大区别,一般计算方法对于解决多维或因 素复杂的问题非常困难, 而蒙特卡罗方法对于解决这方面的问题却比较简单。其 特点如下: 1、直接追踪粒子,物理思路清晰,易于理解。 2、 采用随机抽样的方法, 较真切的模拟粒子输运的过程,反映了统计涨落的规 实用标准文档

7、 文案大全 律。 3、不受系统多维、多因素等复杂性的限制,是解决复杂系统粒子输运问题的好 方法。 蒙特卡罗方法的基本原理及思想如下:当所要求解的问题是某种事件出现的 概率,或者是某个随机变量的期望值时,它们可以通过某种“试验”的方法,得 到这种事件出现的频率,或者这个随机变数的平均值,并用它们作为问题的解。 这就是蒙特卡罗方法的基本思想。 蒙特卡罗方法通过抓住事物运动的几何数量和 几何特征, 利用数学方法来加以模拟, 即进行一种数字模拟实验。 它是以一个概 率模型为基础, 按照这个模型所描绘的过程,通过模拟实验的结果, 作为问题的 近似解。 2.3 适用模型 假设我们要计算一个不规则图形的面积

8、,那么图形的不规则程度和分析性计 算(比如,积分)的复杂程度是成正比的。蒙特卡洛方法是怎么计算的呢?,我 们可以想象把图形画在一块方形布上,然后找来一袋豆子, 然后将所有豆子洒在 布上,落在图形内豆子的重量比上那块布上所有豆子的重量再乘以布的面积就是 他所要求的图形的面积。 这确实是一个求面积的好方法,将整个坐标轴看成一个 固定的面积,然后均匀的这个分成N(N的大小取决于划分的步长)个点,然后 找出 N个点中有多少个点是属于阴影部分中,假设这个值为k,则阴影部分的面 积就求出来了。 此方法是利用蒙特卡罗方法计算阴影部分面积,是把豆子均匀分布在布上; 就计算结果的精度而言,取决点的分割是否够密,

9、即N是否够大; 在数值积分法中,利用求单位圆的1/4 的面积来求得 Pi/4 从而得到 Pi。单 位圆的 1/4 面积是一个扇形, 它是边长为 1 单位正方形的一部分。 只要能求出扇 形面积 S1在正方形面积 S中占的比例 K=S1/S就立即能得到 S1,从而得到 Pi 的 值。 怎样求出扇形面积在正方形面积中占的比例K呢?一个办法是在正方形中随 机投入很多点,使所投的点落在正方形中每一个位置的机会相等看其中有多少个 点落在扇形内。将落在扇形内的点数m与所投点的总数 n 的比 m/n 作为 k 的近似 值。P落在扇形内的充要条件是 22 1xy 。 实用标准文档 文案大全 已知: K= 1s

10、s ,K m n ,s=1,s1= 4 Pi ,求 Pi。 由 1sm sn ,知 s1 * m s n = m n , 而 s1= 4 Pi ,则 Pi= *4 m n 程序: /* 利用蒙特卡洛算法近似求圆周率Pi*/ #include #include #include #define COUNT 800 /* 循环取样次数,每次取样范围依次变大*/ void main() double x,y; int num=0; int i; for(i=0;i 中*/ y=rand()*1.0/RAND_MAX; if(x*x+y*y)=1) 实用标准文档 文案大全 num+; /* 统计落在四

11、分之一圆之内的点数*/ printf(“Pi值等于: %fn“,num*4.0/COUNT); printf(“RAND_MAX=%dn“,RAND_MAX); 结果:测试 6 次的结果显示: (可以看出 : 随着点数的增加,求得的Pi 值渐渐接近真实值。) 此外,蒙特卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输 运计算、量子热力学计算、空气动力学计算) 等领域应用广泛。 2.4 算法应用实例 例:在我方某前沿防守地域,敌人以一个炮排(含两门火炮)为单位对我方 进行干扰和破坏 为躲避我方打击, 敌方对其阵地进行了伪装并经常变换射击地 点 经过长期观察发现,我方指挥所对敌方目标的指示有

12、50是准确的,而我 方火力单位, 在指示正确时, 有 1/3 的概率能毁伤敌人一门火炮,有 1/6 的概率 能全部消灭敌人现在希望能用某种方式把我方将要对敌人实施的1 次打击结果 显现出来,利用频率稳定性,确定有效射击( 毁伤一门炮或全部消灭 ) 的概率 . 分析:这是一个复杂概率问题, 可以通过理论计算得到相应的概率. 为了直 观地显示我方射击的过程,现采用模拟的方式。 1. 问题分析 循环取样次数求得的 Pi 值 800 3.085000 8000 3.110000 80000 3.135200 800000 3.139150 8000000 3.141393 80000000 3.141

13、321 实用标准文档 文案大全 需要模拟出以下两件事: 1 观察所对目标的指示正确与否模拟试验有两种结果,每一种结果出现的概 率都是 1/2 。因此,可用投掷一枚硬币的方式予以确定, 当硬币出现正面时为指 示正确,反之为不正确。 2 当指示正确时, 我方火力单位的射击结果情况。模拟试验有三种结果: 毁伤 一门火炮的可能性为1/3 ,毁伤两门的可能性为1/6 ,没能毁伤敌火炮的可能性 为 1/2 。 这时可用投掷骰子的方法来确定: 如果出现的是 1、2、3 三个点:则认为没能击中敌人; 如果出现的是 4、5 点:则认为毁伤敌人一门火炮; 若出现的是 6 点:则认为毁伤敌人两门火炮。 2. 符号假

14、设 i :要模拟的打击次数; k1:没击中敌人火炮的射击总数; k2:击中敌人一门火炮的射击总数; k3:击中敌人两门火炮的射击总数; E:有效射击 (毁伤一门炮或两门炮 ) 的概率; 3. 在 Matlab 中编辑: function liti6(p,mm) efreq=zeros(1,mm) ; randnum1 = binornd(1,p,1,mm); randnum2 = unidrnd(6,1,mm); k1=0;k2=0;k3=0 ; for i=1:mm if randnum1(i)=0 k1=k1+1; else 实用标准文档 文案大全 if randnum2(i)=3 k1=

15、k1+1; else if randnum2(i)=6 k3=k3+1; else k2=k2+1; end end efreq(i)=(k2+k3)/i; end num=1:mm ; plot(num,efreq) 4. 在 Matlab 命令行中输入以下命令: liti6(0.5,2000) liti6(0.5,20000) 实用标准文档 文案大全 5.理论计算 设: 观察所对目标指示正确 确观察所对目标指示不正 1 0 j A0:射中敌方火炮的事件;A1:射中敌方一门火炮的事件; A2:射中敌方两门火炮的事件 则由全概率公式: P(A0) = P(j=0)P(A 0j=0) + P(j

16、=1)P(A0j=1) = 25.0 2 1 2 1 0 2 1 P(A1) = P(j=0)P(A 1j=0) + P(j=1)P(A1j=1) = 6 1 3 1 2 1 0 2 1 P(A2) = P(j=0)P(A 2j=0) + P(j=1)P(A2j=1) = 12 1 6 1 2 1 0 2 1 E=25.0 12 1 6 1 6. 结果比较 模拟结果与理论计算近似一致,能更加真实地表达实际战斗动态过程 实用标准文档 文案大全 三、思考和体会 它所教给我们的不单是一些数学方面的知识,更多的其实是综合能力的培 养、锻炼与提高。它培养了我们全面、多角度考虑问题的能力,使我们的逻辑推

17、理能力和量化分析能力得到很好的锻炼和提高。它还让我了解了多种数学软件, 以及运用数学软件对模型进行求解。 其实,数学建模对我们来说并不陌生,在我们的日常生活和工作中,经常会 用到有关建模的概念。例如,我们平时出远门,会考虑一下出行的路线,以达到 既快速又经济的目的; 一些工厂为了获得更大的利润, 往往会策划出一个合理安 排生产和销售的最优方案这些问题和建模都有着很大的联系。 数学建模所要解决的问题决不是单一学科问题,它除了要求我们有扎实的数 学知识外,还需要我们不停地去学习和查阅资料,除了我们要学习许多数学分支 问题外,还要了解工厂生产、经济投资、社会生活等方面的知识,这些知识决不 是任何专业

18、中都能涉猎得到的。 它能极大地拓宽和丰富我们的内涵,让我们感到 了知识的重要性, 这些知识必将为我们将来的学习工作打下坚实的基础。从现在 我们的学习来看,我们都是直接受益者。在这过程中,对自己眼界的开阔,知识 的扩展无疑大有好处,各学科的交叉渗透更有利于自己提高解决复杂问题的能 力。数学建模也培养了我们的概括力和想象力,也就是要一眼就能抓住问题的本 质所在。我们只有先对实际问题进行概括归纳,同时在允许的情况下尽量忽略各 种次要因素, 紧紧抓住问题的本质方面, 使问题尽可能简单化, 这样才能解决问 题。 参考文献 1 蒙特卡罗方法及其在粒子输运问题中的应用 2 蒙特卡罗方法引论 3 数学建模算法大全 4 浅谈数学建模 5 数学建模陈光亭

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1