数学建模实验答案简单地优化模型.docx
《数学建模实验答案简单地优化模型.docx》由会员分享,可在线阅读,更多相关《数学建模实验答案简单地优化模型.docx(18页珍藏版)》请在冰豆网上搜索。
数学建模实验答案简单地优化模型
实验03简单的优化模型(2学时)
(第3章简单的优化模型)
1.生猪的出售时机p63~65
目标函数(生猪出售纯利润,元):
Q(t)=(8–gt)(80+rt)–4t–640
其中,t≥0为第几天出售,g为每天价格降低值(常数,元/公斤),r为每天生猪体重增加值(常数,公斤)。
求t使Q(t)最大。
1.1(求解)模型求解p63
(1)图解法
绘制目标函数
Q(t)=(8–gt)(80+rt)–4t–640
的图形(0≤t≤20)。
其中,g=0.1,r=2。
从图形上可看出曲线Q(t)的最大值。
(2)代数法
对目标函数
Q(t)=(8–gt)(80+rt)–4t–640
用MATLAB求t使Q(t)最大。
其中,r,g是待定参数。
(先对Q(t)进行符号函数求导,对导函数进行符号代数方程求解)
然后将代入g=0.1,r=2,计算最大值时的t和Q(t)。
要求:
①编写程序绘制题
(1)图形。
②编程求解题
(2).
③对照教材p63相关内容。
相关的MATLAB函数见提示。
★要求①的程序和运行结果:
程序:
t=0:
1:
30;
g=0.1;r=2;
Q=(8-g.*t).*(80+r.*t)-4.*t-640;
plot(t,Q)
图形:
★要求②的程序和运行结果:
程序:
symsgtr;
Q=(8-g.*t).*(80+r.*t)-4.*t-640;
q=diff(Q,t);
q=solve(q);
g=0.1;r=2;
tm=eval(q)
Q=(8-g.*tm).*(80+r.*tm)-4.*tm-640
运行结果:
1.2(编程)模型解的的敏感性分析p63~64
对1.1中
(2)所求得的符号表达式t(r,g),分别对g和r进行敏感性分析。
(1)取g=0.1,对t(r)在r=1.5:
0.1:
3上求r与t的关系数据,绘制r与t的关系图形(见教材p65)。
(2)取r=2,对t(g)在g=0.06:
0.01:
0.15上求g与t的关系数据,绘制g与t的关系图形(见教材p65)。
要求:
分别编写
(1)和
(2)的程序,调试运行。
★给出
(1)的程序及运行结果:
程序:
symsgtr;
Q=(8-g.*t).*(80+r.*t)-4.*t-640;
q=diff(Q,t);
q=solve(q);
g=0.1;r=1.5:
0.1:
3;
t=eval(q);
plot(r,t)
[r;t]
数值结果:
图形结果:
★给出
(2)的程序及运行结果:
程序:
symsgtr;
Q=(8-g.*t).*(80+r.*t)-4.*t-640;
q=diff(Q,t);
q=solve(q);
r=2;g=0.06:
0.01:
0.15;
t=eval(q);
plot(g,t)
[g;t]
数值结果:
图形结果:
2.(编程)冰山运输模型求解p77~81
按函数调用顺序。
(1)每立方米水所需费用
u为船速,V0为冰山的初始体积。
(2)冰山运抵目的地后可获得水的体积
为冰山抵达目的地所需天数。
(3)第t天冰山球面半径融化速率:
(4)运送冰山费用
为冰山抵达目的地所需天数。
(5)船的日租金
参照教材p81的表4,求不同V0,u下每立方米水的费用。
下面是不完整的MATLAB程序:
functiony=mainfun()
clc;
VV0=[10^75*10^610^6];%冰山的初始体积,3种
uu=[33.544.55];%船速,5种
y=zeros(length(VV0),length(uu));%初始化
fori=1:
length(VV0)
forj=1:
length(uu)
y(i,j)=Y(uu(j),VV0(i));
end
end
y=round(10000*y)/10000;%四舍五入取整。
取小数点后4位数字
%以下函数的输入输出均为标量
functiony=Y(u,V0)%
(1)
y=S(u,V0)/W(u,V0);
functiony=W(u,V0)%
(2)编写该程序
functiony=r(t,u)%(3)
ift>=0&&t<=1000/6/u
y=1.56*10^(-3)*u*(1+0.4*u)*t;
elseift>1000/6/u
y=0.2*(1+0.4*u);
else
error('k不能小于0!
');%显示出错信息并退出运行
end
functiony=S(u,V0)%(4)
T=400/u;
y=0;
fort=1:
T
rr=(3*V0/4/pi)^(1/3);
fork=1:
t
rr=rr-r(k,u);
end
y=y+log10(rr);
end
y=400*f(V0)/u+7.2*u*(u+6)*(3*y-151/u);
functiony=f(V0)%(5)编写该程序
要求:
①编写所要求的程序。
②运行。
注:
第一个函数为主函数,没有输入参数,可直接执行
③结果与教材p81表4比较。
★完整的程序:
functiony=mainfun()
VV0=[10^75*10^610^6];
uu=[33.544.55];
y=zeros(length(VV0),length(uu));
fori=1:
length(VV0)
forj=1:
length(uu)
y(i,j)=Y(uu(j),VV0(i));
end
end
y=round(10000*y)/10000;
functiony=Y(u,V0)%
(1)
y=S(u,V0)/W(u,V0);
functiony=W(u,V0)%
(2)编写该程序
T=400/u;
rr=0;
fort=1:
T
rr=rr+r(t,u);
end
y=3.4*pi/3*(((3*V0)/(4*pi))^(1/3)-rr)^3;
functiony=r(t,u)%(3)
ift>=0&&t<=1000/6/u
y=1.56*10^(-3)*u*(1+0.4*u)*t;
elseift>1000/6/u
y=0.2*(1+0.4*u);
else
error('k不能小于0!
')
end
functiony=S(u,V0)%(4)
T=400/u;
y=0;
fort=1:
T
rr=(3*V0/4/pi)^(1/3);
fork=1:
t
rr=rr-r(k,u);
end
y=y+log10(rr);
end
y=400*f(V0)/u+7.2*u*(u+6)*(3*y-151/u);
functiony=f(V0)%(5)编写该程序
ifV0<=5*10^5
y=4.0;
elseifV0>5*10^5&&V0<=10^6
y=6.2;
elseifV0>10^6&&V0<=10^7
y=8.0;
else
error('k超出取值范围!
');
end
★程序运行结果:
附1:
实验提示
第1.1题
MATLAB函数:
@,fplot,syms,sym,diff,solve,eval
创建函数句柄符号@
绘制函数图函数fplot
定义多个符号对象命令syms
生成符号对象函数sym
微分函数diff
代数方程的符号求解函数solve
符号表达式赋值函数eval
把表达式或语句表示成一个字符串s,eval(s)先把s转换回表达式或语句,再执行。
附2:
第3章简单的优化模型
3.2生猪的出售时机
3.7冰山运输