数学建模章绍辉答案.docx
《数学建模章绍辉答案.docx》由会员分享,可在线阅读,更多相关《数学建模章绍辉答案.docx(16页珍藏版)》请在冰点文库上搜索。
数学建模章绍辉答案
数学建模章绍辉答案
【篇一:
第三次数学建模作业】
数科院105刘镜韶20102201092数科院105蔡秋荣20102201166数科院104梁浩坤20102201100
4、不妨令第k年取出奖学金后,继续存在银行的捐款余额为xk,且银行的整存整取的利率为r,奖学金的金额为d万元,则由已知可得:
xk+1=(1+r)xk-d故:
其解为数列:
xk=
(x0-d/r)+d/r,且x0=20万元;
①奖学金金额d0.6万元,让存在银行的捐款余额每年逐步增加;②奖学金金额d=0.6万元,让存在银行的捐款余额每年保持不变;③奖学金金额d0.6万元,让存在银行的捐款余额每年逐步减少;故对于不同的情况,不妨通过编程对比xk的变化趋势;程序:
n=20;r=[0.03,0.03,0.03];x=[20,20,20];d=[0.45,0.6,0.75];fork=1:
n
x(k+1,:
)=x(k,:
).*(1+r)-d;end
disp(本金为20万时不同的奖学金下余额的变化)
disp(年0.45万元0.6万元0.75万元)disp([(0:
n),x]);
plot(0:
n,x(:
1),k^,0:
n,x(:
2),ko,0:
n,x(:
3),kv)axis([-1,n+1,14,25])
legend(d=0.45,d=0.6,d=0.75,2)
title(本金为20万时不同的奖学金下余额的变化)xlabel(第k年),ylabel(余额)其命令窗口显示结果为:
年0.45万元0.6万元0.75万元020.000020.000020.00001.000020.150020.000019.85002.000020.304520.000019.69553.000020.463620.000019.53644.000020.627520.000019.37255.000020.796420.000019.20366.000020.970320.000019.02977.000021.149420.000018.85068.000021.333920.000018.6661
9.000021.523920.000018.4761
本金为20万时不同的奖学金下余额的变化10.000021.719620.000018.280411.000021.921220.000018.078812.000022.128820.000017.8712
13.000022.342720.000017.6573
14.000022.562920.000017.437115.000022.789820.000017.210216.000023.023520.000016.9765
17.000023.264220.000016.7358
18.000023.512220.000016.487819.000023.767520.000016.2325第k年20.000024.030620.000015.9694
当利率r=3%时,且以整存整取一年定期的形式来存入银行时;由上述图像可知:
①奖学金金额d≤0.6万元时,可以永久持续下去,实现可持续发展,即用20万元本金所得的利息作为奖学金。
②奖学金金额d>0.6万元时,20万元本金最终会发送完。
而题目中规定以整存整取一年定期的形式来存入银行,故对于其他形式的存款形式不作考虑。
5、不妨令第k个月末,老人的养老金余额为xk万元,且月利率为r,故:
xk+1=(1+r)xk-0.1故:
其解为数列:
余额
xk=(x0-0.1/r)+0.1/r,且x0=10万元;
当x0-0.1/r0时,数列xk为递增数列,当x0-0.1/r0时,数列xk为递减数列,当x0-0.1/r=0时,数列xk不增不减,故其平衡点为x=0.1/r;而老人的养老金什么时候用完,可由编程所得。
程序:
x0=10;r=0.003;
x
(1)=(1+r).*x0;k=1;whilex(k)0
x(k+1)=(1+r).*x(k)-0.1;k=k+1;endn=k;
其命令窗口显示结果为:
n=
121
即可知该养老金可以用121个月。
如果该老人想把养老金用到80岁,即需要令x(240)=0;故x(239)=0.1/(1+r);依次类推可得:
x(0)=0.1/(1+r)+0.1/可由编程所得,
+……+0.1/
程序:
a=0;b=0.1;fori=1:
240
b=b/(1+r);a=a+b;endn=a
其命令窗口显示结果为:
n=
17.0908
即老人想在80岁时用完养老金,需要在60岁是存入17.0908万元。
10、用前差公式计算美国人口的人口年增长率r(k)与美国人口的数量x(k)成二
次函数关系,即:
r(k)=
=a
(1)x(k)^2+a
(2)x(k)+a(3)
故可以通过实际数值拟合出二项式的系数,程序:
f=@(a,x)a(3)+a
(2).*x+a
(1).*x.^2;
x=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76.0,92,106.5,123.2,131.7,150.7,179.3,204,226.5,251.4,281.4];
y=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76.0,92,106.5,123.2,131.7,150.7,179.3,204,226.5,251.4];r=(x(2:
22)-x(1:
21))./(10.*x(1:
21));a=polyfit(x(1:
21),r,2)sse=sum((r-f(a,y)).^2)其命令窗口显示结果为:
a=
703.9289e-009-270.3042e-00636.8398e-003sse=
198.5288e-006即可知:
a1?
7.0393?
10?
7,a2?
?
2.703?
10?
4,a3?
0.03684,误差平方和为1.9852?
10?
4模型假设为一阶非线性差分方程:
2
xk?
1?
xk?
10xk(a1xk?
a2xk?
a3),k?
1,2?
?
且令b1?
10a1,b2?
10a2,b3?
10a3?
1,可得:
32
xk?
1?
b1xk?
b2xk?
b3xk由已知可得:
b1?
7.0393?
10?
6,b2?
?
2.703?
10?
3,b3?
1.3684,且不妨令x1?
3.9
利用matlab统计工具箱的非线性拟合函数nlinfit计算参数,可知其程序如下:
函数m文件fun3_4_1_10.m
%非线性拟合美国人口增长模型函数
%假设人口年增长率是人口数量的二次函数functiony=fun3_10(b,x)y=zeros(size(x));y
(1)=b(4);
fork=2:
length(x)
y(k)=b
(1).*y(k-1).^3+b
(2).*y(k-1).^2+b(3).*y(k-1);end脚本:
t=1790:
10:
2000;
x=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76.0,92,106.5,123.2,131.7,150.7,179.3,204,226.5,251.4,281.4];
[b1,resd1]=nlinfit(t,x,@fun3_10,[7.0393e-6,-2.703e-3,1.3684,3.9])sse1=sum(resd1.^2)
x1=fun3_10(b1,[t,2010,2020])
(x1(23:
24)-x1(22:
23))./x1(22:
23)./10.*100subplot(2,1,1)
plot(t,x,k*,t,x1(1:
end-2),ks,[2010,2020],x1(end-1:
end),kp)axis([1780,2030,0,350])
legend(统计值,模拟值,预测值,2)
xlabel(年份),ylabel(人口数量x_k(百万))title(非线性拟合美国人口增长效果图)subplot(2,1,2)
plot(t,resd1,k.,[1780,2030],[0,0],k)axis([1780,2030,-10,10])
xlabel(年份),ylabel(模拟误差)
title(非线性拟合美国人口增长模拟误差图)其命令窗口显示结果为:
b1=
5.2616e-006-2.0838e-0031.3239e+0004.9976e+000resd1=
columns1through6
-1.0976e+000-1.2651e+000-1.4034e+000-1.6393e+000-1.7243e+000-1.8324e+000columns7through12
-1.1540e+000316.9711e-003-696.5163e-0031.0727e+0002.2642e+0002.2107e+000columns13through18
3.5400e+0002.0488e+0001.6518e+000-7.8845e+000-7.8103e+000843.6691e-003columns19through22
4.1939e+0003.1886e+0001.0699e+000-1.9799e+000sse1=
203.0297e+000x1=
columns1through6
4.9976e+0006.5651e+0008.6034e+00011.2393e+00014.6243e+00018.9324e+000columns7through12
24.3540e+00031.0830e+00039.2965e+00049.1273e+00060.6358e+00073.7893e+000columns13through18
88.4600e+000104.4512e+000121.5482e+000139.5845e+000158.5103e+000178.4563e+000columns19through24
199.8061e+000223.3114e+000250.3301e+000283.3799e+000327.5779e+000395.0426e+000ans=
1.5597e+0002.0595e+000图像为:
非线性拟合美国人口增长效果图
人口数量xk(百万)
年份
非线性拟合美国人口增长模拟误差图
模拟误差
年份
计算结果为:
b1?
5.2616?
10?
6,b2?
?
2.0838?
10?
3,b3?
1.3239,且:
x1?
4.9976
误差平方和为203.3,预测2010年美国人口为327.58百万,2020年美国人口为395.04百万。
经过计算得知,2000至2010和2010至2020年的年增长率分别为1.5597%和2.0595%.模型评价:
(1)模拟效果令人满意。
本模型能够很好地模拟1790年至2000年美国人口的演变过程,误差平方和不大。
(2)预测值有一定的合理性,但偏高的可能性很大。
按照美国近几十年的人口统计数据,一般推断未来20年美国人口的年增长率大约是1%甚至更低,而这个
【篇二:
数学建模课后作业第三章】
>3.2.基本实验
1.生产计划安排
解:
(1)设a、b、c三种产品的生产量为x、y、z,则可以得出生产利润:
f=3*x+y+4*z;
约束条件为:
6*x+3*y+5*z≤45;
3*x+4*y+5*z≤30;
x、y、z均大于0;
只要f取得最大值即为最大利润
则可以得出以下lingo程序;
model:
max=3*x+y+4*z;
6*x+3*y+5*z=45;
3*x+4*y+5*z=30;
end
运行程序后可得;
globaloptimalsolutionfound.
objectivevalue:
27.00000
infeasibilities:
0.000000
totalsolveriterations:
2
modelclass:
lp
totalvariables:
3
nonlinearvariables:
0
integervariables:
0
totalconstraints:
3
nonlinearconstraints:
0
totalnonzeros:
9
nonlinearnonzeros:
0
variablevaluereducedcostx5.0000000.000000y0.0000002.000000z3.0000000.000000
rowslackorsurplusdualprice127.000001.00000020.0000000.200000030.0000000.6000000则可得当x=5、y=0、z=3时fmax=27为获利最大的生产方案;
(2)由
(1)中的程序
objectivecoefficientranges:
currentallowableallowablevariablecoefficientincreasedecreasex3.0000001.8000000.6000000y1.0000002.000000infinityz4.0000001.0000001.500000
righthandsideranges:
currentallowableallowablerowrhsincreasedecrease245.0000015.0000015.00000330.0000015.000007.500000
可以得出a的利润范围[4,4.8],b的利润范围[1,3],c的利润范围为
[2.5,5]
(3)假设购买材料的数量为d,
生产利润:
f=3*x+y+4*z-0.4d;
约束条件为:
6*x+3*y+5*z≤45;
3*x+4*y+5*z-d≤30;
x、y、z、d均大于0;
则可以得到下面新的lingo程序;
model:
max=3*x+y+4*z-0.4*d;
6*x+3*y+5*z=45;
3*x+4*y+5*z-d=30;
end
运行程序后可以得出:
globaloptimalsolutionfound.
objectivevalue:
30.00000
infeasibilities:
0.000000
totalsolveriterations:
2
modelclass:
lp
totalvariables:
4
nonlinearvariables:
0
integervariables:
0
totalconstraints:
3
nonlinearconstraints:
0
totalnonzeros:
11
variablevaluereducedcostx0.0000000.6000000y0.0000001.800000z9.0000000.000000
d15.000000.000000
rowslackorsurplusdualprice130.000001.00000020.0000000.400000030.0000000.4000000由以上程序可以得出当z=9,d=15时,利润可以达到30,
(4)假设新产品的数量为d,可以得出如下的
生产利润:
f=3*x+y+4*z+3d;
约束条件为:
6*x+3*y+5*z+8*d≤45;
3*x+4*y+5*z+2*d≤30;
x、y、z、d均大于0;
则可以得到下面新的lingo程序;
model:
max=3*x+y+4*z+3*d;
6*x+3*y+5*z+8*d=45;
3*x+4*y+5*z+2*d=30;
end
运行程序可以得出:
globaloptimalsolutionfound.
objectivevalue:
27.50000
infeasibilities:
0.000000
totalsolveriterations:
2
modelclass:
lp
totalvariables:
4
nonlinearvariables:
0
totalconstraints:
3
nonlinearconstraints:
0
totalnonzeros:
12
nonlinearnonzeros:
0
variablevaluereducedcostx0.0000000.1000000y0.0000001.966667z5.0000000.000000
d2.5000000.000000
rowslackorsurplusdualprice127.500001.00000020.0000000.233333330.0000000.5666667利润为27.527但是z=5,d=2.5,由于d只能取整数,故当d=3时则不满足约束条件,当d=2是,利润为2627,所以如果其他条件不变化的话,这种产品不值得生产。
2,工程进度问题
【篇三:
数学建模第二次作业】
4.
(1)程序:
formatlongg;
t=1790:
10:
2000;
x=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76,92,106.5,...
123.2,131.7,150.7,179.3,204,226.5,251.4,281.4];
f=@(b,t)3.9.*exp(b
(1).*(t-1790));
rf=nlinfit(t,x,f,0.03)
sf=sum((x-f(rf,t)).^2)
g=@(b,t)b
(2).*exp(b
(1).*(t-1790));
rg=nlinfit(t,x,g,[0.03,3.9])
sg=sum((x-g(rg,t)).^2)
h=@(b,t)b
(2).*exp(b
(1).*(t-b(3)));
rh=nlinfit(t,x,h,[0.03,3.9,1790])
sh=sum((x-h(rh,t)).^2)
[rg
(1)-rh
(1),sg-sh,g(rg,1790)-h(rh,1790)]
输出:
.021*********
sf=17418.4839873892
rg=0.01422308261268914.9939394619051
sg=2263.91749032559
warning:
thejacobianatthesolutionisill-conditioned,andsomemodelparameters
maynotbeestimatedwell(theyarenotidentifiable).usecautioninmaking
predictions.
innlinfitat283
rh=
0.0142230604943097.948636825473621745.37882849757sh=2263.91749056977
ans=
2.21183799123392e-08-2.44176590058487e-07-5.97283448975361e-05
解释:
(i)取定x0=3.9,t0=1790,拟合r得.021*********,误差平方和为17418.4839873892
(ii)取定t0=1790,拟合x0和r,得x0=14.9939394619051,r=0.014223082612689,误差平方和为2263.91749032559
(iii)拟合x0,t0,和r,得t0=1745.37882849757,x0=7.94863682547362,
r=0.014223060494309,误差平方和为2263.91749056977。
其中还出现警告信
息,说明参数未必拟合得好。
认为(ii)拟合最好,绘图如下
plot(t,x,k+,t,g(rg,t),ko)
axis([1780,2010,0,300])
xlabel(t)
ylabel(x)
title(指数增长模型拟合的美国人口1790到2000年的变化)
legend(实际值,理论值,2)
(2)过程:
对x(t)?
x0er(t?
t0)两边取对数,则有lnx(t)?
r(t?
t0)?
lnx0,
故可得新数据(xi,yi),其中xi=ti-1790,yi=lnxi(i=1,2…,22)。
再使用最小二乘法即可。
程序:
formatlongg;
t=1790:
10:
2000;
x=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76,92,106.5,...
123.2,131.7,150.7,179.3,204,226.5,251.4,281.4];
x=t-1790;
y=log(x);
a=polyfit(x,y,1)
r=a
(1)
x_0=exp(a
(2))
g=@(b,t)b
(2).*exp(a
(1).*(t-1790));
xyc=g([r,x_0],t);
s=sum((x-xyc).^2)
结果
.020*********
.020*********
x_0=6.04497106657084
s=34891.7671365812
因此x0=6.04497106657084,.020*********,误差平方和为34891.7671365812效果图
plot(t,x,k+,t,xyc,ko)
xlabel(t),ylabel(x),axis([1750,2010,0,400])
title(指数增长模型线性化拟合效果图)
legend(实际值,理论值
2)
(3)
区别:
指数增长模型线性化拟合的误差平方和大很多;由误差比较图可见,,线性拟合的拟合误差比较均匀,非线性拟合的误差却越来越大
plot(x,x-g(rg,t),ko,x,x-xyc,k+,[0,300],[0,0],k)
xlabel(x),ylabel(误差),title(线性与非线性拟合误差比较图),legend(非线性,线性
3)
原因:
y=lnx(t)求对数带来的损失会随着x(t)数值的增大而增大
(4)
(i)
程序:
t=1790:
10:
2