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-
3、10; elseif sumb=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 形式,要求插值点的函数值,必须
5、调用函数 ppval。 pp=csape(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) 其中
6、 y0_ext=left,y0,right,这里 left 表示左边界的取值,right 表示右边界的取值。 conds(i)=j 的含义就是给定端点i 的 j 阶导数, 即 conds 的第一个元素表示左边界的条件,第二个元素表示右边界的条件,conds=2,1表示左边界就是二阶导数,右边界就是一阶导数,对应的值由 left 与 right 给出。2、2 二维插值 前面讲述的都就是一维插值,即节点为一维变量,插值函数就是一元函数(曲线) 。若节点就是二维的,插值函数就就是二元函数,即曲面。如在某区域测量了若干点(节点)的高程(节点值) ,为了画出较精确的等高线图,就要先插入更多的点(插值点)
7、 ,计算这些点的高程(插值)。2、1、1 插值节点为网格节点 已知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=cs
8、ape(x0,y0,z0,conds,valconds),z=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
9、412 400 662 626 552 334 310; pp=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
10、、Z 均为 n 维向量,指明所给数据点的横坐标、纵坐标与竖坐标。向量 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 -
11、81 3 56、5 -66、5 84 -33、5; z=-4 8 6 8 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
12、y 19、0 32、3 49、0 73、3 97、8 解 编写程序如下 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, ,
13、a1, a0。 多项式在 x 处的值 y 可用下面的函数计算 y=polyval(a,x)。 2、3 规划类问题算法 竞赛中很多问题都与数学规划有关,可以说不少的模型都可以归结为一组不等式作为约束条件、几个函数表达式作为目标函数的问题,遇到这类问题,求解就就是关键了,比如98年B 题,用很多不等式完全可以把问题刻画清楚,因此列举出规划后用Lindo、Lingo 等软件来进行解决比较方便,所以还需要熟悉这两个软件。2、3、1 求解线性规划的 Matlab 解法 单纯形法就是求解线性规划问题的最常用、最有效的算法之一。下面我们介绍线性规划的 Matlab 解法。 Matlab 中线性规划的标准型为:基本函数形式为 linprog(c,A,b), 它的返回值就是向量 x 的值。 还有其它的一些函数调用形式(在 Matlab 指令窗运行 help linprog 可以瞧到所有的函数调用形式),如: x,fval=linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS) 这里 fval 返回目标函数的值, LB 与 UB 分别就是变量 x 的下界与上界,x0就是x的初始值,OPTIONS 就是控制参数。例 2 求解下列线性规划问题解
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1