《六讲MATLAB在数学建模中的应用.ppt》由会员分享,可在线阅读,更多相关《六讲MATLAB在数学建模中的应用.ppt(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、六讲MATLAB在数学建模中的应用 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望线性规划的标准形式要求目标函数最小化,约束条件取等式,变量非负,不符合这几个条件的线性规划要首先转化为标准形式。线性规划的求解方法主要是单纯形法(simple Method),此法由Dantzig于1947年提出,以后经过多次改进,2、线性规划的MATLAB求解:linprog函数数学模型:其中:f,x,b,beq,lb,ub为向量,A,Aeq为矩阵。使用形式:x=linprog(f
2、,A,b)x=linprog(f,A,b,Aeq,beq,lb,ub)x=linprog(f,A,b,Aeq,beq,lb,ub,x0)x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)x,fval=linprog()x,fval,exitflag=linprog()x,fval,exitflag,output=linprog()x,fval,exitflag,output,lambda=linprog()注:以上几种形式在使用时根据具体的模型适当选用。每一种形式都有特定的涵义。可查有关书籍3、实例例1.投资问题:某单位有一批资金用于4个工程项目的投资,用于各个
3、工程项目得到的净收益(投入资金的百分比)如表所示:工程项目ABCD收益(%)1510812由于某种原因用项目A的总投资不大于其他各各项目的和,用用项目B和C的投资要大于项目D的投资。试确定使该单位收益最大的投资分配方案。分析问题建立模型:用x1,x2,x3,x4分别代表用于项目A、B、C、D的投资百分数,由于各项目的投资百分数之和为100%,所以x1+x2+x3+x4=1根据题意可建立下面的数学模型:把它转化为标准形式为首先输入下列系数:f=-0.15;-0.1;-0.08;-0.12;A=1-1-1-1;0-1-1 1;b=0;0;Aeq=1 1 1 1;beq=1;lb=zeros(4,1
4、);调用linprog函数x,fval,exitflag,output,lambda=linprog(f,A,b,Aeq,beq,lb)结论:4个项目的投资百分数分别为0.50、0.25、0.00和0.25时可获得最大的收益,最大收益为13%二、其它应用动物的繁殖的规律问题:某农场饲养的某种动物能达到的最大年龄为15岁,将其分为三个年龄组:第一组05岁,第二组610岁,第三组1115岁。动物从第二个年龄组开始繁殖后代第二个年龄组的动物在其中年龄段平均繁殖4个后代,第三年龄组的动物在其年龄段平均繁殖3个后代。第一年龄组和第二年龄组的动物能顺利进入下一年龄组的成活率分别为0.5和0.25.假设农场
5、现有的三个年龄组的动物各1000头,根据有关生物学研究结果,对于足够大的时间值k,有其中是莱斯利矩阵L的唯一的正特值请检验这一结果是否正确,如果正确给出适当的k值计算5年后、10年后、15年后各年龄段的动物数量。20年后农场三个年龄段的动物情况会怎样?以五年为一个年龄段,则某一时刻三个年龄段的动物数量可以用一个向量X(k)=x1(k)x2(K)x3(k)T为第k个时间段动物数分布向量。问题分析:由题设,在初始时刻05岁、610岁、1115岁的三个年龄段动物数量分别为x1(0)=1000,x2(0)=1000,x3(0)=1000如果每五年平均向市场供应动物数c=s s sT,在20年后农场动物
6、不至于灭绝的前提下,c为多少为好?当k=0,1,2,3时,X(k)表示现在、五年后、十年后、十五年后的动物数分布向量。根据第二年龄段和第三年龄段的繁殖能力,在第k个时间段,第二年龄组动物在其年龄段平均繁殖4个后代,第三年龄组动物在其年龄段平均繁殖3个后代。由此得第一个年龄组在第k+1个时间段的数量如下:x1(k+1)=4x2(k)+3x3(k)同理,根据第一年龄组和第二年龄组的存活率,可得等式X2(k+1)=0.5x1(k)X3(k+1)=0.25x2(k)K=0,1,2,3可得数学模型如下:或写成矩阵形式:X(k+1)=LX(k)其中是莱斯利矩阵由此得 X(k+1)=Lk+1X()程序和计算
7、X0=1000;1000;1000A=0 4 3;0.5 0 0;0 0.25 0X1=A*X0X2=A*X1X3=A*X2X4=A*X3为了计算L的特征值,输入下面的命令eig(A)得到特征值为ans=1.5000 -1.3090-0.1910这说明只有一个正特征值1.5为了验证运行下面程序;x=1000;1000;1000;d1=1.5;A=0 4 3;0.5 0 0;0 0.25 0;y=A*x;y1=d1*x;k=1;while max(abs(y-y1)0.1 x=y;y=A*x;y1=d1*x;k=k+1;endx,k 可知当k=285时,有结论x0=1000;1000;1000;
8、d1=1.5;A=0 4 3;0.5 0 0;0 0.25 0;x1=A*x0,x2=A*x1,x3=A*x2,x4=A*x3x1=7000 500 250 x2=2750 3500 125x3=14375 1375 875x4=1.0e+003*8.1250 7.1875 0.3438进一步思考当k=285时x=1.0e+053*2.9078 0.9693 0.1615这说明多年以后,动物数量是大得非常惊人。从计算结果可以看出,如果没有其他原因,可估计农场的动物总量会逐步增加。如果每年向市场供应动物c=s s sT,分析动物数分布向量变化的规律可知X(1)=AX(0)-cX(2)=AX(1)-cX(3)=AX(2)-cX(4)=AX(3)-cX()=AX()-(A3+A2+A+I)c考虑20年后动物不灭绝,应有(4)0即(A3+A2+A+I)c AX()由于是常数向量,故可简单求解不等式组,得C=152 152 152T这说明当五年平均向市场供应三个年龄段的动物各头可以使年后有各年龄段的动物生存,如果将这一限制作为约束条件,而求c的各分量之和最大,这将是一个线性规划问题,可用前面学习的方法求解。