《数学建模与数学实验》实验指导书第1页mailto:webmaster@cocoon.org.cn黄可坤2008年春《数学建模与数学实验》实验指导书(3+1)实验一:matlab编程学时:2学时实验目的:熟悉matlab编程,掌握用matlab进行函数拟合的方法。实验内容:1.写一个函数rs=f(s),对传进去的字符串变量s,删除其中的小写字母,然后将原来的大写字母变为小写字母,得到rs返回。例如s=”aBcdE,Fg?”,则rs=”be,f?”。提示:可利用find函数和空矩阵。2.f(x)的定义如下:2226,04()56,010,231,xxxxfxxxxxxxx且且其它写一个函数文件f(x)实现该函数,要求参数x可以是向量。3.求[100,999]之间能被23整除的数的个数。提示:可利用find和length函数。4.一个自然数是素数,且它的各位数字位置经过任意对换之后仍为素数,则成为绝对素数。例如113是绝对素数。试求所有三位的绝对素数。5.根据美国人口从1790年到1990年间的人口数据(如下表),确定人口指数增长模型(Logistic模型)中的待定参数,估计出美国2010年的人口,同时画出拟合效果的图形。美国人口统计数据年份1790180018101820183018401850人口(×106)3.95.37.29.612.917.123.2年份1860187018801890190019101920人口(×106)31.438.650.262.976.092.0106.5年份193019401950196019701980人口(×106)123.2131.7150.7179.3204.0226.5提示:选择的一般形式是:ifexpression{commands}end如果在表达式(expression)里的所有元素为真,就执行if和end语句之的命令串{commands}.允许一组命令以固定的和预定的次数重复的形式是:《数学建模与数学实验》实验指导书第2页mailto:webmaster@cocoon.org.cn黄可坤2008年春forx=array{commands}end在for和end语句之间的命令串{commands}按数组(array)中的每一列执行一次.在每一次迭代中,x被指定为数组的下一列,即在第n次循环中,x=array(:,n)一些常用函数:sum(a):对数组a求和;若a为一矩阵,对a的每一列求和(得到一行向量);sum(a,2)对每一行求和。max(a),min(a)的用法和sum一样。find(a):找到a中不为0的元素的下标;find(a==2):找到a中等于2的元素的下标length(a):数组a的长度字符串连接:s=[s1,s2,num2str(1234)]函数如下定义:function返回值=函数名(自变量名)文件名.m必须和函数名一样,如果不一样,函数以文件名为主。人口模型:指数增长模型:rtextx0)(Logistic模型:011mrtmxxtxex可参考拟合函数:a=lsqcurvefit('example_curvefit_fun',a0,x,y);《数学建模与数学实验》实验指导书第3页mailto:webmaster@cocoon.org.cn黄可坤2008年春实验二:Lingo求解线性规划问题学时:4学时实验目的:掌握用Lingo求解线性规划问题的方法,能够阅读Lingo结果报告。实验内容:(选做两题以上)1、求解书本上P130的习题1:某银行经理计划用一笔资金进行有价证券的投资,可供购进的证券以及其信用等级、到期年限、收益如下表1所示,按照规定,市政证券的收益可以免税,其他证券的收益需按50%的税率纳税,此外还有以下限制:1)政府及代办机构的证券总共至少要购进400万元;2)所购证券的平均信用等级不超过1.4(信用等级数字越小,信用程序越高);3)所购证券的平均到期年限不超过5年。表1证券名称证券种类信用等级到期年限到期税前收益(%)A市政294.3B代办机构2155.4C政府145.0D政府134.4E市政524.5(1)若该经理有1000万元资金,应如何投资?(2)如果能够以2.75%的利率借到不超过100万元资金,该经理应如何操作?(3)在1000万元资金情况下,若证券A的税前收益增加为4.5%,投资应否改变?若证券C的税前收益减少为4.8%,投资应否改变?列出线性规划模型,然后用Lindo求解,根据结果报告得出解决方案。2、建立模型并求解P130页第3题。(建立线性规划模型的技巧:问什么假设什么,如何雇用即雇用多少全时服务员以12:00-1:00为午餐,雇用多少全时服务员以1:00-2:00为午餐,雇佣多少从9:00、10:00、11:00、12:00、1:00开始工作的半时服务员)。3、指派问题:6个人计划做6项工作,其效益如下表(”-”表示某人无法完成某项工作),求一种指派方式,使得每个人完成一项工作,并使得总收益最大。所建模型最好具有推广性。人工作1工作2工作3工作4工作5工作61201516547217153312863912181630134128112719145-7102110326---611134、有限制的运输问题:6个发点6个收点,其供应量、接收量和运费如下表1(”-”表示某个发电无法向某个收点运输货物),如果某个发点向某个收点运输货物,则运输量不得低于15个单位。求运输方案,使得总费用最小。所建模型最好具有推广性。收点1收点2收点3收点4收点5收点6供应量发点120151654720发点2171533128630《数学建模与数学实验》实验指导书第4页mailto:webmaster@cocoon.org.cn黄可坤2008年春发点39121816301350发点41281127191440发点5-71021103230发点6---6111330接受量305040303020提示:第1题可参考书上4.1节。模型可以如下建立:设投资证券A,B,C,D,E的金额分别为x1,x2,x3,x4,x5万元.max0.043x1+0.027x2+0.025x3+0.022x4+0.045x5x2+x3+x4=400x1+x2+x3+x4+x5=1000(2x1+2x2+x3+x4+5x5)/(x1+x2+x3+x4+x5)=1.4(9x1+15x2+4x3+3x4+2x5)/(x1+x2+x3+x4+x5)=5使用Lingo的一些注意事项1.“”与“=”功能相同。2.变量与系数间相乘必须用”*”号,每行用”;”结束。3.变量以字母开头,不能超过8个字符。4.变量名不区分大小写(包括关键字)。5.目标函数用min=3*x1+2*x2或max=3*x1+2*x2的格式表示。6.“!”后为注释。7.变量界定函数实现对变量取值范围的附加限制,共4种:@bin(x)限制x为0或1@bnd(L,x,U)限制L≤x≤U@free(x)取消对变量x的默认下界为0的限制,即x可以取任意实数@gin(x)限制x为整数其他可见“Lingo教程.doc”书上85页的Lindo代码可改为如下Lingo代码:max=72*x1+64*x2;x1+x250;12*x1+8*x2480;3*x1100;例:如何在LINGO中求解如下的LP问题:0,6002100350..32min212112121xxxxxxxtsxx在模型窗口中输入如下代码:min=2*x1+3*x2;x1+x2=350;《数学建模与数学实验》实验指导书第5页mailto:webmaster@cocoon.org.cn黄可坤2008年春x1=100;2*x1+x2=600;然后点击工具条上的按钮即可。例:使用LINGO软件计算6个发点8个收点的最小费用运输问题。产销单位运价如下表。单位销地运价产地B1B2B3B4B5B6B7B8产量A16267425960A24953858255A35219743351A47673927143A52395726541A65522814352销量3537223241324338可建立如下模型:68,,116,18,1min*1,,81,,6ijijijijjiijijcostvolumevolumedemandjvolumecapacityi使用LINGO软件,编制程序如下: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:《数学建模与数学实验》实验指导书第6页mailto:webmaster@cocoon.org.cn黄可坤2008年春capacity=605551434152;demand=3537223241324338;cost=626742954953858252197433767392712395726555228143;enddataend实验三:matlab数值计算学时:2学时实验目的:1.掌握用matlab进行插值、拟合、方程求解等数值计算的方法。2.掌握用matlab求微分方程和微分方程组的数值解的方法。实验内容:(任选两题以上)1.某气象观测站测得某日6:00-18:00之间每隔2小时的温度如下:时间681012141618温度18202225302824试用三次样条插值求出该日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.求以下非线性方程组的解:1212122xxxxexxe4.求以下有约束最值:22min(,)120fxyxyxyxy5.求解书上P138,P139页的微分方程和微分方程组,画出书中图7、8和图3、4、5、6。提示:一维插值:Y1=interp1(X,Y,X1,'method')1.函数根据X、Y的值,计算函数在X1处的值。X、Y是两个等长的已知向量,分别描述采样点和样本值,X1是一个向量或标量,描述欲插值的点,Y1是一个与X1等长的插值结果。method是插值方法,允许的取值有'linear'(线性插值)、'nearest'(最《数学建模与数学实验》实验指导书第7页mailto:webmaster@cocoon.org.cn黄可坤2008年春近插值)、'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是一个函数文件functionf=fun(x)。x0是初始值。2.A,Aeq是一个矩阵;b,beq是一个列向量。Ax=b是不等式约束。