数学建模十大算法总结

更新时间:2023-10-08 01:34:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

----------------------------精品word文档 值得下载 值得拥有---------------------------------------------- 建模十大算法总结:

1、蒙特卡罗算法。该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时通过模拟可以来检验自己模型的正确性。

2、数据拟合、参数估计、插值等数据处理算法。比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用Matlab作为工具。

3、线性规划、整数规划、多元规划、二次规划等规划类问题。建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、Lingo、MATLAB软件实现。

4、图论算法。这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决,需要认真准备。

5、动态规划、回溯搜索、分治算法、分支定界等计算机算法。这些算法是算法设计中比较常用的方法,很多场合可以用到竞赛中。

6、最优化理论的三大非经典算法:模拟退火法、神经网络、遗传算法。这些问题是用来解决一些较困难的最优化问题的算法,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用。

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

8、一些连续离散化方法。很多问题都是实际来的,数据可以是连续的,而计算机只认的是离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的。 9、数值分析算法。如果在比赛中采用高级语言进行编程的话,那一些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。 10、图象处理算法。赛题中有一类问题与图形有关,即使与图形无关,论文中也应该要不乏图片的,这些图形如何展示以及如何处理就是需要解决的问题,通常使用Matlab进行处理。

从历年竞赛题来看,常用的方法:

线性规划 整数规划 非线性规划 动态规划 层次分析法 图论方法 拟合方法 插值方法 随机方法 微分方程方法

一、蒙特卡洛算法

1、含义的理解

以概率和统计理论方法为基础的一种计算方法。也称统计模拟方法,是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法,它是将所求解的问题同一定的概率模型相联系,用计算机实现统计模拟或抽样,以获得问题的近似解。 2、算法实例(有很多相似的例题,包括平行线等)

在数值积分法中,利用求单位圆的1/4的面积来求得Pi/4从而得到Pi。单位圆的1/4面积是一个扇形,它是边长为1单位正方形的一部分。只要能求出扇形面积S1在正方形面积S中占的比例K=S1/S就立即能得到S1,从而得到Pi的值。怎样求出扇形面积在正方形面积中占的比例K呢?一个办法是在正方形中随机投入很多点,使所投的点落在正方形中每一个位置的机会相等看其中有多少个点落在扇形内。将落在扇形内的点数m与所投点的总数n

----------------------------精品word文档 值得下载 值得拥有---------------------------------------------- -----------------------------------------------------------------------------------------------------------------------------

----------------------------精品word文档 值得下载 值得拥有---------------------------------------------- 的比m/n作为k的近似值。P落在扇形内的充要条件是 x2?y2?1 。

s1mPi,K?,s=1,s1=,求Pi。 sn4s1mmm由?,知s1?*s=, snnnmPi而s1=,则Pi=*4

n4已知:K=

程序:(该算法可以修改后用Mathematica计算或者Matlab)

/* 利用蒙特卡洛算法近似求圆周率Pi*/ /*程序使用:VC++6.0 */ #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(\值等于:%f\\n\ }

结果:

测试6次的结果显示: 循环取样次数 800 8000 求得的Pi值 3.085000 3.110000 ----------------------------精品word文档 值得下载 值得拥有---------------------------------------------- -----------------------------------------------------------------------------------------------------------------------------

----------------------------精品word文档 值得下载 值得拥有---------------------------------------------- 80000 800000 8000000 80000000 3.135200 3.139150 3.141393 3.141321 可以看出:随着点数的增加,求得的Pi值渐渐接近真实值。 如果加入程序:srand(time(NULL)); ,同时循环取样次数一定,让取样结果随时间变化,当取样次数为80000000时,可得6次的结果显示:

3.141290 3.141400 3.141268 3.141484 3.141358 3.141462 3、应用的范围

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

[1]蒙特卡罗方法及其在粒子输运问题中的应用 [2]蒙特卡罗方法引论

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

(1)数据拟合

在Mathematica中,用Fit对数据进行最小二乘拟合:Fit[data,funs,vars] 在Matlab中,工具箱(toolboxes)中有曲线拟合工具(curve Fitting)。 实例:

2010年苏北赛B题 温室中的绿色生态臭氧病虫害防治 中关于中华稻蝗密度与水稻减产率之间的关系可以通过数据拟合来观察(简单举例,没有考虑全部数据) 数据: 密度(头/m) 3 减产率(%) 2.4 210 12.9 20 16.3 30 20.1 40 26.8 程序(Mathematica):

data={{3,2.4},{10,12.9},{20,16.3},{30,20.1},{40,26.8}}; a1=Fit[data,{1,x,x^2,x^3},x]

Show[ListPlot[data,Filling->Axis],Plot[{a1},{x,0,60}]] 结果:

-3.68428+2.38529 x-0.0934637 x2+0.00132433 x3

(2)参数估计(参考书:概率论与数理统计)

参数估计为统计推断的基本问题,分为点估计和区间估计。 点估计: ①矩估计法

X连续型随机变量,概率密度f(x;?1,?2,?n)

----------------------------精品word文档 值得下载 值得拥有---------------------------------------------- -----------------------------------------------------------------------------------------------------------------------------

----------------------------精品word文档 值得下载 值得拥有---------------------------------------------- X为离散型随机变量 分布律P{X?x}?p(x;?1,?2,,?k)

?1,?2,,?k为待估参数,X1,X2,?l?E(X)??xlf(x;?1,?2??l?Xn是来自X的样本,假设总体X的前k阶矩存在,为

,?n)dx(X连续型)

2或?l?E(Xl)?x?RX?xp(x;?,?,l1,?k)(X离散型)l?1,2,,k(其中RX是X可能取

值的范围)。一般来说,它们是?1,?2,于相应的总体矩?l(l?1,2,1nl,?k的函数。基于样本矩Al??Xi依概率收敛

ni?1k),样本矩的连续函数依概率收敛于相应的总体矩的连续函

数,我们就用样本矩作为相应的总体矩的估计量,而以样本矩的连续函数作为相应的总体矩的连续函数的估计量。这种估计方法成为矩估计法。 ②最大似然估计法

X连续型随机变量 似然函数 L(?)?L(x1,x2,是来自X的样本X1,X2,,xn;?)??f(xi;?) 其中?f(xi;?)i?1i?1nnXn的联合密度。

,xn;?)??p(xi;?),??? 其中

i?1nX为离散型随机变量 似然函数L(?)?L(x1,x2,n?p(x;?)是来自X的样本X,X,i12Xn的联合分布律。

,xn;?)

,Xn)为?的最大似然估计量。

i?1若L(?)?L(x1,x2,?)?maxL(x,x,,xn;?12????(x,x,则称?12?(X,X,,xn)为?的最大似然估计值,称?12这样,确定最大似然估计量的问题就归结为微分学中的求最大值的问题了。

估计量的评选标准为:(1)无偏性(2)有效性(3)相合性 区间估计:

对于一个未知量,人们在测量或计算时,常不以得到近似值为满足,还需要估计误差,即要求知道近似值的精确程度(亦即所求真值所在的范围)。这样的范围常以区间的形式给出,同时还给出此区间包含参数真值的可信度,这种形式的估计称为区间估计,这样的区间即所谓置信区间。

正态总体均值、方差的置信区间与单侧置信限(置信水平为1-?) 总态正个未知参数 其他参数 枢轴量的分布 置信区间 ----------------------------精品word文档 值得下载 值得拥有---------------------------------------------- -----------------------------------------------------------------------------------------------------------------------------

----------------------------精品word文档 值得下载 值得拥有---------------------------------------------- ? ?已知 2X??Z??/nN(0,1) (X??nz?/2) ? ?未知 2t?X??S/nt(n?1) (X?Sz?/2(n?1)) n?2 ?未知 ?2?(n?1)S2?2?2(n?1) (n?1)S2(n?1)S2(2,)??/2(n?1)?12??/2(n?1) 另外还包括两个正态总体的情况, 其他区间估计:(0-1)分布参数的区间估计 (3)插值 1、含义的理解

在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值(与拟合的不同点在于拟合的函数不需通过每一个离散点)。

插值问题的提法是:假定区间[a,b]上的实值函数f(x)在该区间上 n+1个互不相同点x0,x1…xn 处的值是f [x0],…f(xn),要求估算f(x)在[a,b]中某点的值。其做法是:在事先选定的一个由简单函数构成的有n+1个参数C0,C1,…Cn的函数类Φ(C0,C1,…Cn)中求出满足条件P(xi)=f(xi)(i=0,1,… n)的函数P(x),并以P()作为f()的估值。此处f(x)称为被插值函数,x0,x1,…xn称为插值结(节)点,Φ(C0,C1,…Cn)称为插值函数类,上面等式称为插值条件,Φ(C0,…Cn)中满足上式的函数称为插值函数,R(x)= f(x)-P(x)称为插值余项。当估算点属于包含x0,x1…xn的最小闭区间时,相应的插值称为内插,否则称为外插。 2、基本类型 多项式插值

在一般插值问题中,若选取Φ为n次多项式类,由插值条件可以唯一确定一个n次插值多项式满足上述条件。拉格朗日插值和牛顿插值都属于多项式插值。 拉格朗日插值:

设连续函数y = f(x)在[a, b]上对给定n + 1 个不同结点:

x0,x1,,xn分别取函数值y0,y1,,yn

其中 yi?f(xi) i?0,1,n , (1) 试构造一个次数不超过 n的插值多项式

2P(x)?a?ax?ax?n012?anxn (2)

----------------------------精品word文档 值得下载 值得拥有----------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------

本文来源:https://www.bwwdw.com/article/7eud.html

Top