实验03讲评、参考答案_简单的优化模型(2学时)
- 格式:doc
- 大小:1.30 MB
- 文档页数:18
1 实验03讲评、参考答案 讲 评 未按时交的同学 数学:01边清水,50钟鑫 信科:13林其博
批改情况: 批改了奇数学号的实验报告。 2
附参考答案:
实验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)的最大值。
★(1) 给出编写的程序和运行结果: 程序: clear; clc; g=0.1;r=2; fplot(@(t)(8-g*t)*(80+r*t)-4*t-640,[0,20]); grid; xlabel('t'); ylabel('Q');
《数学建模实验》 王平 3
图形: t=10时函数达到最大值Q=20 (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)。 相关的MATLAB函数见提示。
★(2) 给出编写的程序和运行结果(比较[63]): 程序: clear; clc; syms t; %定义符号变量t Q=sym('(8-g*t)*(80+r*t)-4*t-640') %建立符号表达式 dQ=diff(Q,'t') %求微分dQ/dt t=solve(dQ,t) %求dQ=0的解t r=2; g=0.1; t=eval(t) %求r=2,g=0.1时的t值 Qt=eval(Q) %求r=2,g=0.1,t=10时的Q值(最大值) 运行结果(比较[63]): 4
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的关系图形(见教材p64)。
★(1) 给出编写的程序及运行结果(比较[64]): 程序: clear; clc; format short g; g=0.1; r=1.5:0.1:3; t= -2*(20*g-2*r+1)/g./r; round(10*[r;t])/10 plot(r,t); grid; xlabel('r'); ylabel('t'); 数值结果(比较[64]表1): 5
图形结果(比较[64]图1): 1.522.5305101520
rt
(2) 取r=2,对t(g)在g=0.06:0.01:0.15上求g与t的关系数据,绘制g与t的关系图形(见教材p64)。
★(2) 给出编写的程序及运行结果(比较[64]): 程序: clear;clc; format short g; r=2; g=0.06:0.01:0.15; t= -2*(20*g-2*r+1)./g/r; [g;round(10*t)/10] plot(g,t); grid; xlabel('g'); ylabel('t');
数值结果(比较[64]表2):
图形结果(比较[64]图2): 6
0.060.080.10.120.140.160102030gt
2.(编程)冰山运输模型求解p77~81 按函数调用顺序。 (1) 每立方米水所需费用
),(),(),(000VuWVuSVuY
u为船速,V0为冰山的初始体积。 (2) 冰山运抵目的地后可获得水的体积 303
0
133.4(,)(,)34TtVWuVrtu
400Tu为冰山抵达目的地所需天数。
(3) 第t天冰山球面半径融化速率: 3100015610(104)06(,)10000.2(10.4),6.u.ut,turtuutu
(4) 运送冰山费用
003
0
11400()3151(,)7.2(6)3lg(,)4TttkfVVSuVuurkuuu
400Tu为冰山抵达目的地所需天数。
(5) 船的日租金 7
706655001010,0.8100105,2.6105,0.4)(VVVVf
参照教材p81的表4,求不同V0,u下每立方米水的费用。 下面是不完整的MATLAB程序: function y=mainfun() clc; VV0=[10^7 5*10^6 10^6];%冰山的初始体积,3种 uu=[3 3.5 4 4.5 5];%船速,5种 y=zeros(length(VV0), length(uu));%初始化 for i=1:length(VV0) for j=1:length(uu) y(i,j)=Y(uu(j),VV0(i)); end end y=round(10000*y)/10000;%四舍五入取整。取小数点后4位数字
%以下函数的输入输出均为标量 function y=Y(u,V0) %(1) y=S(u,V0)/W(u,V0);
function y=W(u,V0)%(2) 编写该程序
function y=r(t,u)%(3) if t>=0&&t<=1000/6/u y=1.56*10^(-3)*u*(1+0.4*u)*t; elseif t>1000/6/u y=0.2*(1+0.4*u); else error('k不能小于0!');%显示出错信息并退出运行 end
function y=S(u,V0)%(4) T=400/u; y=0; for t=1:T rr=(3*V0/4/pi)^(1/3); for k=1:t rr=rr-r(k,u); end y=y+log10(rr); 8
end y=400*f(V0)/u+7.2*u*(u+6)*(3*y-151/u);
function y=f(V0)%(5) 编写该程序
要求: ① 编写所要求的程序。 ② 运行。注:第一个函数为主函数,没有输入参数,可直接执行 ③ 结果与教材p81表4比较。
★ 完整的程序: function y=mainfun() clc; VV0=[10^7 5*10^6 10^6];%冰山的初始体积,3种 uu=[3 3.5 4 4.5 5];%船速,5种 y=zeros(length(VV0), length(uu));%初始化 for i=1:length(VV0) for j=1:length(uu) y(i,j)=Y(uu(j),VV0(i)); end end y=round(10000*y)/10000; %四舍五入取整。取小数点后4位数字 return;
%以下函数的输入输出均为标量 function y=Y(u,V0) %(1) y=S(u,V0)/W(u,V0); return;
function y=W(u,V0)%(2) T=400/u; y=(3*V0/4/pi)^(1/3); for t=1:T y=y-r(t,u); end y=(3.4*pi/3)*y^3; return;
function y=r(t,u)%(3) if t>=0&&t<=1000/6/u y=1.56*10^(-3)*u*(1+0.4*u)*t; elseif t>1000/6/u y=0.2*(1+0.4*u); else