2024年3月12日发(作者:崇左小学数学试卷答案解析)
《数学建模实验》实验报告
学号:
实验十四:计算机模拟
1.某报童以每份0.03元的价格买进报纸,以0.05元的价格出售. 根据长期统计,报纸每
天的销售量及百分率为
210 220 230 240 250
销售量
200
0.10 0.20 0.40 0.15 0.10 0.05
百分率
已知当天销售不出去的报纸,将以每份0.02元的价格退还报社.试用模拟方法确定报
童每天买进报纸数量,使报童的平均总收入为最大?
解答:
【1】模型假设:
(1) 模拟时间充分大;
(2) 报童购买报纸量介于销售量最小值与最大值之间;
(3)不考虑有重大事件发生时卖报的高峰期,也不考虑风雨天气时卖报
的低谷期.
【2】 符号假设
BUYMIN:
每天的最小购买量
BUYMAX:
每天的最大购买量
SIMUDAY:
模拟时间
sell_amount:
报童销售量
buy_amount:
报童购买量
percentage:
销售百分率
ave_profit:
总平均利润
loop_buy
:当天购买量
loop_day :
当天时间
【3】matlab程序如下:
(1)首先建立m文件Getprofit.m
function re=GetProfit(a,b)
if a
re=a*(0.05-0.03);
else % 供过于求:报童购买量大于销售量
re=b*(0.05-0.03)+(a-b)*(0.02-0.03);
end
(2)建立主程序main.m
BUYMIN=200; % 每天的最小购买量
BUYMAX=250; % 每天的最大购买量
SIMUDAY=1.0e+5; % 模拟时间
sell_amount=200:10:250; % 销售量
percentage=[0.1 0.3 0.7 0.85 0.95 1]; % 百分率
buy_amount=0;
ave_profit=0;
for loop_buy=BUYMIN:BUYMAX
sum_profit=0;
for loop_day=1:SIMUDAY
index=find(percentage>=rand); % 产生随机数,用于决定当天
的销售量
sum_profit=sum_profit+GetProfit(loop_buy,sell_amount(index(1))
);
end
buy_amount=[buy_amount,loop_buy]; % 循环嵌套
ave_profit=[ave_profit,sum_profit/SIMUDAY]; % 循环嵌套
end
buy_amount(1)=[]; % 第一个元素置空
ave_profit(1)=[];
[val,id]=max(ave_profit) % 显示最大平均收入val
buy=buy_amount(id) % 显示在平均收入最大情况下的每天的购买量
buy
xlabel=\'每天的购买量\';
ylabel=\'平均利润\';
plot(buy_amount,ave_profit,\'*:\');
【4】运行结果:
val =4.2801 id =21 buy = 220
图像如下:
更多推荐
报纸,报童,模拟,销售量,建立
发布评论