实验2 数学建模初步
§2.1 什么是数学建模 模型是人们为了一定的目的,对客观事物的某一部分进行 简缩、抽象、提练出来的原型的替代物,它集中反映了原型 中人们所需要的那一部分特征。 数学模型可以描述为:为了认识客观对象在数量方面的特征, 定量的分析对象内在规律、用数学的语言和符号去近似地刻画要研究的那一部分现象时,所得到的一个数学表述。 简而言之:为了定量地解决一个实际问题,从中抽象、归纳出来的数学表述。 我们所说的数学建模,包括模型的建立、求解、分析和 解释以及检验的全过程。
例1、甲乙两地相距750km,船从甲地到乙地顺水航行需30小 时,从乙地到甲地逆水航行需50小时,问船的速度是多少? 解. 设x,y分别表示船速和水速,列出方程 简化 现实对象 的信息 数学模型 验证 求解 求解得到 阐明 预测/解释 数学结论 上题包含了建立数学模型的基本内容: ⑴简化假设:航行中的船速和水速为常数; ⑵用符号代表有关的量 x代表船速,y代表水速; ⑶利用物理规律得到数学表述——二元一次方程; ⑷求解方程,得到 ⑸回答原问题,船速为20km/h; ⑹对于实际问题,以上结果必须用实际信息来检验。
概念 差分方程是在离散时段上描述现实世界中变化过程的数学模型 §2.2 数学建模实例 概念 差分方程是在离散时段上描述现实世界中变化过程的数学模型 变化=未来值-现在值 未来值=现在值+变化 例2、抵押贷款买房 六年前,李红的父母筹借月利率为1%,每月还款880.87元的20 年贷款资金80000元买了房子,他们已经还款72个月,同时想知道他们 还欠多少抵押贷款,他们正在考虑用他们得到的一笔遗产来付清贷款。或者他们可以重新根据偿还期长短,以不同利率偿还抵押贷款。 解、设第k个月末的欠款余额为bk,则 一阶差分方程 b(72)=71532.11元 李明60万买一套120平米的房子,首付18万,贷款32万,20年还清,月利率为6‰,问每月应还款多少钱?
文件名为:ex2t2.m format bank b0=80000; b(1)=1.01*b0-880.87; for k=1:239 b(k+1)=1.01*b(k)-880.87; end plot(b); [[1:20]' ,b(12:12:end)'] disp(['b(72)=',num2str(b(72))]) grid on
例3、一年生植物的繁殖 设第k年的植物数量为XK ,则 数学建模 记一棵植物秋季产种的平均数为c,种子能够活过一个冬天的比例为b,一岁的种子能在春季发芽的比例为a1,未能发芽但又能活过一个冬天的比例仍为b,两岁的种子能在春季发芽的比例为a2,设c,a1,a2固定,而b可在一定范围内变化,设种子最多可以活过二个冬天。试考察这种植物数量的变化规律。 设第k年的植物数量为XK ,则 种子数 活过冬天 活过冬天 没有发芽 活过第2个冬天 2阶差分方程。 第1年春季发芽 设c=10, a1=0.5, a2=0.25, b=0.18~0.20, x0=100 编程讨论。 第2年春季发芽 结果分析: 可以看到,对于不同的b,植物数量xk 变化规律有较大差别
p=-a1*b*c;q=-a2*(1-a1)*c*b^2; x(1)=x0; x(2)=-p*x(1); for k=3:n 步骤1、先建立函数M文件exf12.m 步骤2、再建立命令式M文件,文件名为ex2t3 function y=exf12(x0,n,b) c=10;a1=0.5;a2=0.25; p=-a1*b*c;q=-a2*(1-a1)*c*b^2; x(1)=x0; x(2)=-p*x(1); for k=3:n x(k)=-p*x(k-1)-q*x(k-2); end y=x'; n=20; k=(0:n)'; y1=exf12(100,n+1,0.18); y2=exf12(100,n+1,0.19); y3=exf12(100,n+1,0.20); round([k,y1,y2,y3]) plot([y1,y2,y3]);grid gtext('b=0.18');gtext('b=0.19');gtext('b=0.20');
2.3 线性常系数差分方程组 汽车租赁公司的运营 一家汽车租赁公司在3个相邻的城市运营,为方便顾客起见公司承诺,在一个城市租赁的汽车可以在任意一个城市归还,根据经验估计和市场调查,借还汽车的情况如下表所示,若公司开业时将600辆汽车平均分配给3个城市,建立运营过程中汽车数量在3个城市间转移的模型,并讨论时间充分长以后的变化趋势。 A B C 0.6 0.2 0.1 0.3 0.7 借 还
已知20世纪美国人口统计数据如下,试计算表2 中这些年份的人口增长率。 二 应用实例——人口增长率 已知20世纪美国人口统计数据如下,试计算表2 中这些年份的人口增长率。 表2 20世纪美国人口统计数据 年份 1900 1910 1920 1930 1940 1950 1960 1970 1980 1990 人口(.106) 76.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5 251.4 又已知某地区20世纪70年代的人口增长率如表3,且1970 年人口为210(百万),试估计1980年的人口。 表3 某地区20世纪70年代人口增长率数据 年份 1970 1972 1974 1976 1978 1980 年增长率(%) 0.87 0.85 0.89 0.91 0.95 1.10
1 记时刻t 的人口为x(t),人口相对增长率为 ,记 1900—1990年的人口依次为 xk ,(k=0,1,...,n),年增长率为rk 。 由三点公式可以得到: r = 0.0220 0.0166 0.0146 0.0102 0.0104 0.0158 0.0149 0.0116 0.0105 x=[76.0 92.0 106.5 123.2 131.7... 150.7 179.3 204.0 226.5 251.4]; r(1)=(-3*x(1)+4*x(2)-x(3))/20/x(1); for k=2:9 r(k)=(x(k+1)-x(k-1))/20/x(k); end r(10)=(x(8)-4*x(9)+3*x(10))/20/x(10); r
2 某地区20世纪70年代人口增长率如下表: 人口增长满足微分方程 和初始条件为x(0)= x0。 其解为 由于增长率r(t)为离散数据,故 2 某地区20世纪70年代人口增长率如下表: 表3 某地区20世纪70年代人口增长率数据 年份 1970 1972 1974 1976 1978 1980 年增长率(%) 0.87 0.85 0.89 0.91 0.95 1.10 人口增长满足微分方程 和初始条件为x(0)= x0。 其解为 由于增长率r(t)为离散数据,故 用数值积分计算: x0=210; r=[0.87 0.85 0.89 0.91 0.95 1.10]/100; y=trapz(r)*2; %步长为2 x=x0*exp(y) x = 230.1676
上机内容 1、某人从银行贷款购房,若他今年初贷款10万元,月利率0.5%,每月还1000元,建立差分方程计算他每年末欠银行多少钱,多少年才能还清?如果要10年还清,每月需还多少? 2、P41, 9. 3、思考题:P39,1
实验报告撰写 题:一老人60岁时将养老金10万元存入基金会,月利率0.4%,他每月取得1000元作为生活费,建立差分方程计算他每岁末尚有多少钱?多少岁时基金用完,如果想用到80岁,问60岁时应存入多少钱? 一、数学建模 设第k个月末老人拥有养老金ak元,则 其中r为月利率,于是所求的差分方程为: 若基金想用到80岁,即基金每月末取1000元,取20年,以现在作为计算钱的时间点,则60岁时应存入钱为
二、编程求解: 编写命令式M文件,文件名为ex2xt2 clear;format bank; a0=100000;r=0.004;a=1+r; a(1)=(1+r)*a0-1000;k=1; while a(k)>0 a(k+1)=(1+r)*a(k)-1000; k=k+1; end plot(a);grid; n=fix(k/12);m=mod(k,12);a=a'; disp(‘每岁末养老金的余额为:');[(1:n)',a(12:12:n*12)] disp(‘老人养老金用完时的年龄为:’);time=[num2str(n+60),‘ 岁 ’,num2str(m),‘ ¸’月'] B=0;p=1000; for i=1:240 p=p/(1+r);B=B+p; disp(‘若老人养老金想用到80岁,每月取1000元,则60岁时应存入银行的钱为:‘);money=[num2str(B),’元']
三、结果分析: 在命令窗口键入文件名,计算机运行结果为: >> ex2xt2 基金用完时老人的年龄为: 每岁末养老金余额为: time = 70 岁 8 个月 每岁末养老金余额为: ans = 1.00 92639.47 2.00 84917.75 3.00 76817.13 4.00 68319.02 5.00 59403.89 6.00 50051.30 7.00 40239.78 8.00 29946.80 9.00 19148.74 10.00 7820.82 若老人想用到80岁,每月取1000元,则老人60岁时应存入的钱为: money = 154093.3029 元 三、结果分析: 老人60岁时存入10万元,每月取1千元,那么70岁零8个月时钱用完;若想用到80岁,则60岁时应存入15409.30元。