数学建模算法整理

上传人:l**** 文档编号:134572856 上传时间:2020-06-06 格式:DOC 页数:32 大小:2.65MB
返回 下载 相关 举报
数学建模算法整理_第1页
第1页 / 共32页
数学建模算法整理_第2页
第2页 / 共32页
数学建模算法整理_第3页
第3页 / 共32页
数学建模算法整理_第4页
第4页 / 共32页
数学建模算法整理_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《数学建模算法整理》由会员分享,可在线阅读,更多相关《数学建模算法整理(32页珍藏版)》请在金锄头文库上搜索。

1、 数学建模常用算法1.大多数建模赛题中都离不开计算机仿真,随机性模拟是非常常见的算法之一。 举个例子就是97 年的A 题,每个零件都有自己的标定值,也都有自己的容差等级,而求解最优的组合方案将要面对着的是一个极其复杂的公式和108 种容差选取方案,根本不可能去求解析解,那如何去找到最优的方案呢?随机性模拟搜索最优方案就是其中的一种 方法,在每个零件可行的区间中按照正态分布随机的选取一个标定值和选取一个容差值作为一种方案,然后通过蒙特卡罗算法仿真出大量的方案,从中选取一个最佳的。另一个例子就是去年的彩票第二问,要求设计一种更好的方案,首先方案的优劣取决于很多复杂的因素,同样不可能刻画出一个模型进

2、行求解,只能靠随机仿真模拟。1.1 蒙特卡罗算法蒙特卡罗模拟就是随机数相关的东西,你只要知道随机数是怎么得到。其它的事就要好办了。rand(m,n)产生m*n均匀随机数。ex:用概率方法求piN=100000;x=rand(N,1);y=rand(N,1);count=0;for i=1:Nif (x(i)2+y(i)210); %10分分值的 sumb=length(b)*10+(10-length(b)*5; if sumb=50|sumb=100 income=income-100; elseif sumb=55|sumb=95 income=income-10; elseif sumb

3、=70|sumb=75|sumb=80 income=income+1; endendIncome2. 数据拟合、参数估计、插值等算法 数据拟合在很多赛题中有应用,与图形处理有关的问题很多与拟合有关系,一个例子就是98 年美国赛A 题,生物组织切片的三维插值处理,94 年A 题逢山开路,山体海拔高度的插值计算,还有吵的沸沸扬扬可能会考的“非典”问题也要用到数据拟合算法,观察数据的走向进行处理。此类问题在MATLAB中有很多现成的函数可以调用,熟悉MATLAB,这些方法都能游刃有余的用好。 2.1 三次样条插值在 Matlab 中的实现 在 Matlab 中数据点称之为断点。如果三次样条插值没有

4、边界条件,最常用的方法,就是采用非扭结(not-a-knot)条件。这个条件强迫第 1 个和第 2 个三多项式的三阶导数相等。对最后一个和倒数第 2 个三次多项式也做同样地处理。 Matlab 中三次样条插值也有现成的函数: y=interp1(x0,y0,x,spline); y=spline(x0,y0,x); pp=csape(x0,y0,conds),y=ppval(pp,x)。 其中x0,y0是已知数据点,x是插值点,y是插值点的函数值。 对于三次样条插值,我们提倡使用函数csape,csape的返回值是 pp 形式,要求插值点的函数值,必须调用函数 ppval。 pp=csape(

5、x0,y0):使用默认的边界条件,即 Lagrange 边界条件。 pp=csape(x0,y0,conds)中的 conds 指定插值的边界条件,其值可为: complete 边界为一阶导数,即默认的边界条件 not-a-knot 非扭结条件 periodic 周期条件 second 边界为二阶导数,二阶导数的值0, 0。 variational 设置边界的二阶导数值为0,0。 对于一些特殊的边界条件,可以通过 conds 的一个12矩阵来表示,conds 元素的取值为 1,2。此时,使用命令 pp=csape(x0,y0_ext,conds) 其中 y0_ext=left,y0,right

6、,这里 left 表示左边界的取值,right 表示右边界的取值。 conds(i)=j 的含义是给定端点i 的 j 阶导数, 即 conds 的第一个元素表示左边界的条件,第二个元素表示右边界的条件,conds=2,1表示左边界是二阶导数,右边界是一阶导数,对应的值由 left 和 right 给出。2.2 二维插值 前面讲述的都是一维插值,即节点为一维变量,插值函数是一元函数(曲线) 。若节点是二维的,插值函数就是二元函数,即曲面。如在某区域测量了若干点(节点)的高程(节点值) ,为了画出较精确的等高线图,就要先插入更多的点(插值点) ,计算这些点的高程(插值)。 2.1.1 插值节点为网

7、格节点 已知mn个节点: (i=1,2.m;j=1,2.n)并且。求点(x,y)处的插值z 。 Matlab 中有一些计算二维插值的程序。如 z=interp2(x0,y0,z0,x,y,method) 其中 x0,y0 分别为m 维和n 维向量,表示节点,z0 为nm维矩阵,表示节点值,x,y为一维数组,表示插值点,x 与 y 应是方向不同的向量,即一个是行向量,另一个是列向量,z 为矩阵,它的行数为 y 的维数,列数为 x 的维数,表示得到的插值,method的用法同上面的一维插值。 如果是三次样条插值,可以使用命令 pp=csape(x0,y0,z0,conds,valconds),z=

8、fnval(pp,x,y) 其中 x0,y0 分别为m 维和n 维向量,z0 为mn维矩阵,z 为矩阵,它的行数为x 的维数,列数为 y 的维数,表示得到的插值,具体使用方法同一维插值。 例2 在一丘陵地带测量高程,x 和 y 方向每隔100米测一个点,得高程如2表,试插值一曲面,确定合适的模型,并由此找出最高点和该点的高程。 解:编写程序如下: clear,clc x=100:100:500; y=100:100:400; z=636 697 624 478 450 698 712 630 478 420 680 674 598 412 400 662 626 552 334 310; pp

9、=csape(x,y,z) xi=100:10:500;yi=100:10:400 cz1=fnval(pp,xi,yi) cz2=interp2(x,y,z,xi,yi,spline) i,j=find(cz1=max(max(cz1) x=xi(i),y=yi(j),zmax=cz1(i,j) 2.1.2 插值节点为散乱节点 已知n 个节点: (i=1,2.n)求点(x,y)处的插值z 。 对上述问题,Matlab 中提供了插值函数 griddata,其格式为: ZI = GRIDDATA(X,Y,Z,XI,YI) 其中 X、Y、Z 均为 n 维向量,指明所给数据点的横坐标、纵坐标和竖坐标

10、。向量 XI、YI 是给定的网格点的横坐标和纵坐标,返回值 ZI 为网格(XI,YI)处的函数值。XI与 YI 应是方向不同的向量,即一个是行向量,另一个是列向量。 例3 在某海域测得一些点(x,y)处的水深 z 由下表给出,在矩形区域(75,200)(-50,150) 画出海底曲面的图形。 解:编写程序如下: x=129 140 103.5 88 185.5 195 105 157.5 107.5 77 81 162 162 117.5; y=7.5 141.5 23 147 22.5 137.5 85.5 -6.5 -81 3 56.5 -66.5 84 -33.5; z=-4 8 6 8

11、 6 8 8 9 9 8 8 9 4 9; xi=75:1:200; yi=-50:1:150; zi=griddata(x,y,z,xi,yi,cubic) subplot(1,2,1), plot(x,y,*) subplot(1,2,2), mesh(xi,yi,zi)2.2 最小二乘法的 Matlab 实现 2.2.1 解方程组方法 在上面的记号下, Matlab 中的线性最小二乘的标准型为 命令为:A=RY。例 4 用最小二乘法求一个形如:的经验公式,使它与如下所示的数据拟合。 x 19 25 31 38 44 y 19.0 32.3 49.0 73.3 97.8 解 编写程序如下

12、x=19 25 31 38 44; y=19.0 32.3 49.0 73.3 97.8; r=ones(5,1),x.2; ab=ry x0=19:0.1:44; y0=ab(1)+ab(2)*x0.2; plot(x,y,o,x0,y0,r) 2.2.2 多项式拟合方法 如果取:=即用m 次多项式拟合给定数据, Matlab中有现成的函数 a=polyfit(x0,y0,m) 其中输入参数 x0,y0 为要拟合的数据,m 为拟合多项式的次数,输出参数 a 为拟合多项式 y=amxm+a1x+a0系数 a= am, , a1, a0。 多项式在 x 处的值 y 可用下面的函数计算 y=polyval(a,x)。 2.3 规划类问题算法 竞赛中很多问题都和数学规划有关,可以说不少的模型都可以归结为一组不等式作为约束条件、几个函数表达式作为目标函数的问题,遇到这类问题,求解就是关键了,比如98年B 题,用很多不等式完全可以把问题刻画清楚,因此列举出规划后用Lindo、Lingo 等软件来进行解决比较方便,所以还需要熟悉这两个软件。2.3.1 求解线性规划的 Matlab 解法 单纯形法是求解线性规划问

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号