《数学建模与数学实验》实验指导书 注:D001~D100表示100种DVD,C0001-C1000表示1000个会员,会员的在线订单用数字 1,2.表示,数字越小表示会员的偏爱程度越高,数字0表示对应的DVD当前不在会员的在 线订单中。所有数据将可从htp:lmcm.edu.cn/mcmO5/problems2.005c.asp下载。 提示: 可建立如下0-1规划模型: m:-2 空,-J-2m st: <=3.j=12.,1000 x=0或1, 1,j=1,2.,n 其中c可是偏爱指数,其中0改成1,其他数字如果是c,则用1c代替。 可参考如下运输问题代码: model: 6发点8收点运输问 sets: warehouses/wh1.wh6/:capacity: vendors/v1.v8/:demand: links(warehouses,vendors):cost,volume endsets !目标函数 min=esum(links:costvolume) !需求约束: efor(vendors(J): @sum(warehouses(I):volume(I,J))=demand(J)): 产量约束 @for(warehouses(I): @sum(vendors(I):volume(I.I))<=capacity(1)) 这里是数据 data: capacity=605551434152: 第6页
《数学建模与数学实验》实验指导书 第6页 注:D001~D100表示100种DVD, C0001~C1000表示1000个会员, 会员的在线订单用数字 1,2,.表示,数字越小表示会员的偏爱程度越高,数字0表示对应的DVD当前不在会员的在 线订单中。所有数据将可从http://mcm.edu.cn/mcm05/problems2005c.asp下载。 提示: 可建立如下 0-1 规划模型: 1000 100 , , 1 1 1000 , 1 100 , 1 , max * , 1, 2, ,100 : 3, 1, 2, ,1000 0 1, , 1, 2, , i j i j i j i j j i i j j i j z c x x N j st x j x i j n = = = = = = = = = = = 或 其中 cij 是偏爱指数,其中 0 改成-1,其他数字如果是 c,则用 11-c 代替。 可参考如下运输问题代码: model: !6 发点 8 收点运输问题; sets: warehouses/wh1.wh6/: capacity; vendors/v1.v8/: demand; links(warehouses,vendors): cost, volume; endsets !目标函数; min=@sum(links: cost*volume); !需求约束; @for(vendors(J): @sum(warehouses(I): volume(I,J))=demand(J)); !产量约束; @for(warehouses(I): @sum(vendors(J): volume(I,J))<=capacity(I)); !这里是数据; data: capacity=60 55 51 43 41 52;
《数学建模与数学实验》实验指导书 demand=3537223241324338: cost=62674295 49538582 52197433 76739271 23957265 55228143: enddata end 基础实验七:用matlab求解微分方程(组) 实验目的:掌握用matlab求微分方程和微分方程组的数值解的方法。 实验内容: 求解书上P138,P139页的微分方程和微分方程组,画出书中图3、4、5、6、7、8。 提示: 要求解微分方程(组)dydt=L,y),可如下调用: [T.Y]-ode45(f.[t0,tn].y0) 1.函数在求解区间O,m内,自动设立采样点向量T,并求出解函数y在采样点T处的样 本值Y。 2.「是一个函数,要有两个参数,第一个参数是自变量t,第二个参数是因变量y。 3.y0y(0)给定方程的初值。 例:求微分方程初值问题dy/dx=-2yx+4x,y(1)=2在[1,3]区间内的数值解,并将结果与解 析解进行比较。 先建立一个该函数的m文件yl.m: function f=f(x.y) f-2.y.k+4x %注意使用点运算符 再输入命令: [X,Y门=ode45(fy1,[1,3],2 %显示自变量的一组采样点 %显示求解函数与采样点对应的一组数值解 第7页
《数学建模与数学实验》实验指导书 第7页 demand=35 37 22 32 41 32 43 38; cost=6 2 6 7 4 2 9 5 4 9 5 3 8 5 8 2 5 2 1 9 7 4 3 3 7 6 7 3 9 2 7 1 2 3 9 5 7 2 6 5 5 5 2 2 8 1 4 3; enddata end 基础实验七:用 matlab 求解微分方程(组) 实验目的:掌握用 matlab 求微分方程和微分方程组的数值解的方法。 实验内容: 求解书上 P138,P139 页的微分方程和微分方程组,画出书中图 3、4、5、6、7、8。 提示: 要求解微分方程(组)dy/dt=f(t,y),可如下调用: [T,Y]=ode45(f,[t0,tn],y0) 1. 函数在求解区间[t0,tn]内,自动设立采样点向量 T,并求出解函数 y 在采样点 T 处的样 本值 Y。 2. f 是一个函数,要有两个参数,第一个参数是自变量 t,第二个参数是因变量 y。 3. y0=y(t0)给定方程的初值。 例:求微分方程初值问题 dy/dx=-2y/x+4x,y(1)=2 在[1,3]区间内的数值解,并将结果与解 析解进行比较。 先建立一个该函数的 m 文件 fxy1.m: function f=f(x,y) f=-2.*y./x+4*x %注意使用点运算符 再输入命令: [X,Y]=ode45('fxy1',[1,3],2); X' %显示自变量的一组采样点 Y' %显示求解函数与采样点对应的一组数值解
《数学建模与数学实验》实验指导书 (X2+1.X2y %显示求解函数与采样点对应的一组解析解 例:求解常微分方程组初值问题在区间0,2)中的解。 dv. ,(0)=5 =-xy2+x2-5,y,(0)=6 I dx 建立一个函数文件6y2.m: function f=fxy) f1)y(2: f2=-xy(2)+x2-5 f-f: 在MATLAB命令窗口,输入命令: [X,Y-ode45(fy2,0,21.[5,6 基础实验八:matlab数值计算 实验目的:掌握用matlab进行插值、拟合、方程求解等数值计算的方法。 实验内容: 1,某气象观测站测得某日6:00-18:00之间每隔2小时的温度如下: 试用三次样条插值求出该日630,8:30,1030,12:30,1430,1630的温度。 2.已知1g(x1,101]区间11个整数采样点x=1:10:101的函数值g(9,试求gx)的5次 拟合多项式p(x,并分别绘制出lg(x)和px)在1,10川区间的函数曲线。 3.求以下非线性方程组的解: 2x-x =e -+x=e 4.求以下有约束最值: 第8页
《数学建模与数学实验》实验指导书 第8页 (X.^2+1./X.^2)' %显示求解函数与采样点对应的一组解析解 例: 求解常微分方程组初值问题在区间[0,2]中的解。 2 1 2 2 2 (0) 5 5 (0) 6 dy y y dx dy xy x y dx = = = − + − = 1 2 , , 建立一个函数文件 fxy2.m: function f=f(x,y) f(1)=y(2); f(2)=-x.*y(2)+x.^2-5; f=f'; 在 MATLAB 命令窗口,输入命令: [X,Y]=ode45('fxy2',[0,2],[5,6]) 基础实验八:matlab 数值计算 实验目的:掌握用 matlab 进行插值、拟合、方程求解等数值计算的方法。 实验内容: 1. 某气象观测站测得某日 6:00-18:00 之间每隔 2 小时的温度如下: 时间 6 8 10 12 14 16 18 温度 18 20 22 25 30 28 24 试用三次样条插值求出该日 6:30,8:30,10:30,12:30,14:30,16:30 的温度。 2. 已知 lg(x)在[1,101]区间 11 个整数采样点 x=1:10:101 的函数值 lg(x),试求 lg(x)的 5 次 拟合多项式 p(x),并分别绘制出 lg(x)和 p(x)在[1,101]区间的函数曲线。 3. 求以下非线性方程组的解: 1 2 1 2 1 2 2 x x x x e x x e − − − = − + = 4. 求以下有约束最值:
《数学建模与数学实验》实验指导书 minf(x.y)=x+y [x2+y2≤1 2x-y20 提示: ●一维插值:Y1=interpl(X,Y,X1,method 1.函数根据X、Y的值,计算函数在X1处的值。X、Y是两个等长的已知向量,分 别描述采样点和样本值,X1是一个向量或标量,描述欲插值的点,Y1是一个与 X等长的插值结果。method是插值方法,允许的取值有linear(线性插值)、nearest(最 近插值)、'spline'(三次样条插值)、cubic(三次多项式插值),缺省值是linear。 ·多项式拟合:PS]=polyfit(XYm) 1.函数根据采样点X和采样点函数值Y,产生一个m次多项式P及其在采样点的误 差向量S。 2.其中X、Y是两个等长的向量,P是一个长度为m+1的向量。 ·单变量非线性方程求解:[x.fval]=-fzero(Ex0,tol) [x,fval]=fmincon(fun.x0.A.b.Aeq.beq.Ib,ub.nonlcon) L.fun是一个函数文件functionf=fun(x)。x0是初始值。 2.A,Aeq是一个矩阵;b,beg是一个列向量。Ax<b是不等式约束。 3.b和b是和x一样大小的列向量,规定每个分量的上下界 4.nonlcon是函数文件,有特定格式function [e,ceo=mycon((x),描述非线性约束cx) 和ceq(x). 5.没有整数约束,0-1约束,敏感性分析 基础实验九:求解图论问题 实验目的:把最短路径、最大流、最小生成树、旅行商、关键路径等图论问题转化为数学规 划模型,并用Lingo进行求解 实验内容: 把以下图从v0到v6最短路径问题转化为数学规划模型,并用Ligo进行求解。 第9页
《数学建模与数学实验》实验指导书 第9页 2 2 min ( , ) 1 2 0 f x y x y x y x y = + + − 提示: ⚫ 一维插值:Y1=interp1(X,Y,X1,'method') 1. 函数根据 X、Y 的值,计算函数在 X1 处的值。X、Y 是两个等长的已知向量,分 别描述采样点和样本值,X1 是一个向量或标量,描述欲插值的点,Y1 是一个与 X1等长的插值结果。method是插值方法,允许的取值有'linear'(线性插值)、'nearest'(最 近插值)、'spline'(三次样条插值)、'cubic'(三次多项式插值),缺省值是'linear'。 ⚫ 多项式拟合:[P,S]=polyfit(X,Y,m) 1. 函数根据采样点 X 和采样点函数值 Y,产生一个 m 次多项式 P 及其在采样点的误 差向量 S。 2. 其中 X、Y 是两个等长的向量,P 是一个长度为 m+1 的向量。 ⚫ 单变量非线性方程求解:[x,fval]=fzero(f,x0,tol) ⚫ [x,fval] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) 1. fun 是一个函数文件 function f = fun(x)。x0 是初始值。 2. A,Aeq 是一个矩阵;b,beq 是一个列向量。Ax<=b 是不等式约束。 3. lb 和 ub 是和 x 一样大小的列向量,规定每个分量的上下界。 4. nonlcon 是函数文件,有特定格式 function [c,ceq] = mycon(x),描述非线性约束 c(x) 和 ceq(x)。 5. 没有整数约束,0-1 约束,敏感性分析。 基础实验九:求解图论问题 实验目的:把最短路径、最大流、最小生成树、旅行商、关键路径等图论问题转化为数学规 划模型,并用 Lingo 进行求解。 实验内容: 把以下图从 v0 到 v6 最短路径问题转化为数学规划模型,并用 Lingo 进行求解