2019数学建模选修大作业

发布 2020-04-15 15:36:28 阅读 6452

中华女子学院。

2014 — 2015学年第二学期期末考试。

**类)**题目数学建模算法之蒙特卡罗算法。

课程** 1077080001

课程名称数学建模。

学号 130801019

姓名陈可心。

院系计算机系。

专业计算机科学与技术。

考试时间 2023年5月27日。

1、蒙特卡罗算法。

该算法又称随机性模拟算法,是通过计算机**来解决问题的算法,同时可以通过模拟可以来检验自己模型的正确性,是比赛时必用的方法。接下来本文将着重介绍这一算法。

2、数据拟合、参数估计、插值等数据处理算法。

比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用matlab作为工具。

3、线性规划、整数规划、多元规划、二次规划等规划类问题。

建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用lindo、lingo软件实现。这个也是我们数学建模选修课时主要介绍的问题,所以对这方面比较熟悉,也了解了lindo、lingo软件的基本用法。

4、图论算法。

这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决,上学期数据结构课程以及离散数学课程中都有介绍。它提供了对很多问题都很有效的一种简单而系统的建模方式。

5、动态规划、回溯搜索、分治算法、分支定界等计算机算法。

这些算法是算法设计中比较常用的方法,很多场合可以用到竞赛中。

6、最优化理论的三大非经典算法:模拟退火法、神经网络、遗传算法。

这些问题是用来解决一些较困难的最优化问题的算法,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用。

7、网格算法和穷举法。

网格算法和穷举法都是暴力搜索最优点的算法,在很多竞赛题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具。

8、一些连续离散化方法。

很多问题都是实际来的,数据可以是连续的,而计算机只认的是离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的。

9、数值分析算法。

如果在比赛中采用高级语言进行编程的话,那一些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。

10、图象处理算法。

赛题中有一类问题与图形有关,即使与图形无关,**中也应该要不乏**的,这些图形如何展示以及如何处理就是需要解决的问题,通常使用matlab进行处理。

蒙特·卡罗方法(monte carlo method),也称统计模拟方法,2023年,美国拉斯阿莫斯国家实验室的三位科学家john von neumann,stan ulam 和 nick metropolis共同发明了,蒙特卡罗方法。此算法被评为20世纪最伟大的十大算法之一。是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。

是指使用随机数来解决很多计算问题的方法。由于传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方法由于能够真实地模拟实际物理过程,故解决问题与实际非常符合,可以得到很圆满的结果。与它对应的是确定性算法。

蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。

蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。

蒙特卡罗方法与一般计算方法有很大区别,一般计算方法对于解决多维或因素复杂的问题非常困难,而蒙特卡罗方法对于解决这方面的问题却比较简单。其特点如下:

1、直接追踪粒子,物理思路清晰,易于理解。

2、 采用随机抽样的方法,较真切的模拟粒子输运的过程,反映了统计涨落的规律。

3、不受系统多维、多因素等复杂性的限制,是解决复杂系统粒子输运问题的好方法。

蒙特卡罗方法的基本原理及思想如下:当所要求解的问题是某种事件出现的概率,或者是某个随机变量的期望值时,它们可以通过某种“试验”的方法,得到这种事件出现的频率,或者这个随机变数的平均值,并用它们作为问题的解。这就是蒙特卡罗方法的基本思想。

蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。

假设我们要计算一个不规则图形的面积,那么图形的不规则程度和分析性计算(比如,积分)的复杂程度是成正比的。蒙特卡洛方法是怎么计算的呢?,我们可以想象把图形画在一块方形布上,然后找来一袋豆子,然后将所有豆子洒在布上,落在图形内豆子的重量比上那块布上所有豆子的重量再乘以布的面积就是他所要求的图形的面积。

这确实是一个求面积的好方法,将整个坐标轴看成一个固定的面积,然后均匀的这个分成n(n的大小取决于划分的步长)个点,然后找出n个点中有多少个点是属于阴影部分中,假设这个值为k,则阴影部分的面积就求出来了。

此方法是利用蒙特卡罗方法计算阴影部分面积,是把豆子均匀分布在布上;就计算结果的精度而言,取决点的分割是否够密,即n是否够大;

在数值积分法中,利用求单位圆的1/4的面积来求得pi/4从而得到pi。单位圆的1/4面积是一个扇形,它是边长为1单位正方形的一部分。只要能求出扇形面积s1在正方形面积s中占的比例k=s1/s就立即能得到s1,从而得到pi的值。

怎样求出扇形面积在正方形面积中占的比例k呢?一个办法是在正方形中随机投入很多点,使所投的点落在正方形中每一个位置的机会相等看其中有多少个点落在扇形内。将落在扇形内的点数m与所投点的总数n的比m/n作为k的近似值。

p落在扇形内的充要条件是。

已知:k=,k,s=1,s1=,求pi。

由,知s1=,而s1=,则pi=

程序:* 利用蒙特卡洛算法近似求圆周率pi*/

#include<>

#include<>

#include<>

#define count 800 /*循环取样次数,每次取样范围依次变大*/

void main()

double x,y;

int num=0;

int i;

for(i=0;i

x=rand()*1.0/rand_max; /rand_max=32767,包含在<>中*/

y=rand()*1.0/rand_max;

if((x*x+y*y)<=1)

num统计落在四分之一圆之内的点数*/

printf("pi值等于:%f",num*4.0/count);

printf("rand_max=%d",rand_max);

结果:测试6次的结果显示:

可以看出: 随着点数的增加,求得的pi值渐渐接近真实值。)

此外,蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。

例:在我方某前沿防守地域,敌人以一个炮排(含两门火炮)为单位对我方进行干扰和破坏.为躲避我方打击,敌方对其阵地进行了伪装并经常变换射击地点. 经过长期观察发现,我方指挥所对敌方目标的指示有50%是准确的,而我方火力单位,在指示正确时,有1/3的概率能毁伤敌人一门火炮,有1/6的概率能全部消灭敌人.现在希望能用某种方式把我方将要对敌人实施的1次打击结果显现出来,利用频率稳定性,确定有效射击(毁伤一门炮或全部消灭)的概率。

分析: 这是一个复杂概率问题,可以通过理论计算得到相应的概率。 为了直观地显示我方射击的过程,现采用模拟的方式。

1. 问题分析。

需要模拟出以下两件事:

1] 观察所对目标的指示正确与否模拟试验有两种结果,每一种结果出现的概率都是1/2。因此,可用投掷一枚硬币的方式予以确定,当硬币出现正面时为指示正确,反之为不正确。

2] 当指示正确时,我方火力单位的射击结果情况。模拟试验有三种结果:毁伤一门火炮的可能性为1/3,毁伤两门的可能性为1/6,没能毁伤敌火炮的可能性为1/2。

这时可用投掷骰子的方法来确定:

如果出现的是三个点:则认为没能击中敌人;

如果出现的是点:则认为毁伤敌人一门火炮;

若出现的是6点:则认为毁伤敌人两门火炮。

2. 符号假设。

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;

elseif randnum2(i)<=3

k1=k1+1;

elseif randnum2(i)==6

k3=k3+1;

elsek2=k2+1;

endend

efreq(i)=(k2+k3)/i;

end num=1:mm;

plot(num,efreq)

4.在matlab命令行中输入以下命令:

liti6(0.5,2000)

liti6(0.5,20000)

5.理论计算。

6. 结果比较。

模拟结果与理论计算近似一致,能更加真实地表达实际战斗动态过程.

2019数学建模大作业

三人一组,所有问题中选做三题 问题。一 二中任选一题,问题。三 四题任选一题,问题五必做,要用mathematica或matlab编程计算。作业要用电子格式文件 doc pdf格式 每题作业要由题目 模型描述 计算或推导 具体程序命令 结果讨论,程序附在大作业里,上传ftp上 账户 sxjmstu,...

数学建模大作业

兰州交通大学。学院 机电工程学院。班级 车辆093 学号 2 姓名 刘键。学号 3 姓名 杨海斌。学号 4 姓名 彭福泰。学号 5 姓名 程二永。学号 6 姓名 屈辉。高速公路问题。a城和b城之间准备建一条高速公路,b城位于a城正南20公里和正东30公里交汇处,它们之间有东西走向连绵起伏的山脉。公路...

数学建模大作业

pi,i 1 i n i n2 pii 1 pi,i 1 pi,i 1 pi,i 1 i n i n2 矩阵中其他位置的元素均为零,且对于任意一随机步,状态变量i的变化最多为1.对于这一特定的生灭过程,我们有p0,0 1,p0,i 0 i 0以及pn,n 1,pn,i 0 i状态i 0和i n是 吸...