数学建模章绍辉答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学建模章绍辉答案
【篇一:第三次数学建模作业】
数科院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]; for
k=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.0000
1.000020.150020.000019.8500
2.000020.304520.000019.6955
3.000020.463620.000019.5364
4.000020.627520.000019.3725
5.000020.796420.000019.2036
6.000020.970320.000019.0297
7.000021.149420.00001
8.8506 8.000021.333920.000018.6661
9.000021.523920.000018.4761
本金为20万时不同的奖学金下余额的变化
10.000021.719620.000018.2804 11.000021.921220.000018.0788
12.000022.128820.000017.8712
13.000022.342720.000017.6573
14.000022.562920.000017.4371 15.000022.789820.000017.2102
16.000023.023520.000016.9765
17.000023.264220.000016.7358
18.000023.512220.000016.4878 19.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; while x(k)0
x(k+1)=(1+r).*x(k)-0.1; k=k+1; end n=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; for i=1:240
b=b/(1+r);a=a+b; end n=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-006 36.8398e-003 sse =
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
%非线性拟合美国人口增长模型函数
%假设人口年增长率是人口数量的二次函数 function
y=fun3_10(b,x) y=zeros(size(x)); y(1)=b(4);
for k=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.*100 subplot(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)