290 likes | 449 Views
数学实验. 4.2 日常生活中的经济问题. 银行存款与利率. 假如你在银行开设了一个 1000 元的存款账户,银行的年利率为 7%. 用 a n 表示 n 年后你账户上的存款额,那么下面的数列就是你每年的存款额: a 0 , a 1 , a 2 , a 3 , …, a n ,… 设 r 为年利率,由于 a n+1 =a n +r a n , 因此存款问题的数学模型是: a 0 =1000, a n+1 =(1+r)a n , n=1,2,3,…. 家庭教育基金.
E N D
4.2 日常生活中的经济问题 银行存款与利率 假如你在银行开设了一个1000元的存款账户,银行的年利率为7%. 用an表示n年后你账户上的存款额,那么下面的数列就是你每年的存款额: a0, a1, a2, a3, …, an,… 设r为年利率,由于an+1=an+r an, 因此存款问题的数学模型是: a0=1000, an+1=(1+r)an, n=1,2,3,…
家庭教育基金 从1994年开始,我国逐步实行了大学收费制度. 为了保障子女将来的教育费用,小张夫妇从他们的儿子出生时开始,每年向银行存入x元作为家庭教育基金. 若银行的年利率为r,试写出第n年后教育基金总额的表达式. 预计当子女18岁入大学时所需的费用为30000元,按年利率10%计算,小张夫妇每年应向银行存入多少元? 设n年后教育基金总额为an,每年向银行存入x元,依据复利率计算公式,得到家庭教育基金的数学模型为: a0=x, an+1=(1+r)an+x, n=0,1,2,3,…
抵押贷款 小李夫妇要购买二居室住房一套,共需10万元. 他们已经筹集4万元,另外6万元申请抵押贷款. 若贷款月利率为1%,还贷期限为25年,问小李夫妇每月要还多少钱? 设贷款额为a0,每月还贷额为x,月利率为r,第n个月后的欠款额为an,则 a0=60000, a1=(1+r)a0-x, a2=(1+r)a1-x, …… an=(1+r)an-1-x, n=1,2,3,…
分期付款 小王看到一则广告:商场对电脑实行分期付款销售. 一台售价8000元的电脑,可分36个月付款,每月付300元即可. 同时他收到了银行提供消费贷款的消息:10000元以下的贷款,可在三年内还清,年利率为15%. 那么,他买电脑应该向银行贷款,还是直接向商店分期付款? 经过分析可知,分期付款与抵押贷款模型相同. 设第n个月后的欠款额为an,则 a0=8000, an+1=(1+r)an-300, n=0,1,2,3,… 贷款模型 a0=8000, an+1=(1+0.15/12)an-x, n=0,1,2,3,…
一阶线性差分方程 在上述模型中,给出了an+1与an之间的递推公式. 将它们写成统一的形式: a0=c, an+1=an+b, n=0,1,2,3,… 称此类递推关系为一阶线性差分方程. 当b=0时称为齐次差分方程,否则称为非齐次差分方程. 定义1对任意数列A={a1,a2,…,an,…},其差分算子定义如下: a1=a2-a1, a2=a3-a2,… an=an+1-an, … 定义2对数列A={a1,a2,…,an,…},其一阶差分的差分称为二阶差分, 记为2A=(A). 即: 2an= an+1- an=(an+2-an+1)-(an+1-an)=an+2-2an+1+an 一般地,可以定义n阶差分.
例1 用计算机计算存款模型的各阶差分. (*首先计算20年内的存款清单*) r=0.07;a[0]=1000;a[n_]:=(1+r) a[n-1]; money1=Table[{n,a[n]},{n,0,20}]; TableForm[Join[{{年份, 存款额}},money1]] (*其次计算各阶差分*) da[n_]:=a[n+1]-a[n];d2a[n_]:=da[n+1]-da[n]; d3a[n_]:=d2a[n+1]-d2a[n]; diff=Table[{n,a[n],da[n],d2a[n],d3a[n]},{n,0,9}]; TableForm[Join[{{N,An,Dan,D2an,D3an}},diff]] dif1=Transpose[diff]; TableForm[{dif1[[3]]/dif1[[2]],dif1[[4]]/dif1[[3]], dif1[[5]]/dif1[[4]]}]
差分方程 an=b的解 由 an+1-an=b, n=0,1,2,…, 得 an-a0=n b. 如果a0=c, 则有 an=n b+c. 一般地, 差分方程 k an=b 的解是: an=ck nk+ck-1nk-1+……+c1n+c0, 其中 ck=b/k!. 验证如下: a[n_]:=c[4]n^4+c[3]n^3+c[2]n^2+c[1]n+c[0]; da[n_]:=a[n+1]-a[n];d2a[n_]:=da[n+1]-da[n]; d3a[n_]:=d2a[n+1]-d2a[n];d4a[n_]:=d3a[n+1]-d3a[n]; d3a[n]//Simplify d4a[n]//Simplify
差分方程 an+1= an+b的解 定理1一阶线性差分方程 an+1= an+b 的通解是: 定理2对一阶线性差分方程 an+1= an+b, 若 | |<1, 则 an无限趋近于平衡解 b/(1- ) (收敛型不动点); 若 | |>1, 则 an逐渐远离平衡解 b/(1- ) (发散型不动点).
家庭教育基金模型 由 a0=x, an+1=(1+r)an+x, n=0,1,2,3,… 得通解: 将 a0=x, =1+r, b=x 代入, 得 c =x(1+r)/r, 因此方程的特解是: 将 a18=30000,r=0.1 代入计算出 x=586.41.
购房抵押贷款模型 由 a0=60000, an+1=(1+r)an-x, n=0,1,2,3,… 将 =1+r, b=-x 代入得到方程的特解: 若在第N个月还清贷款,令 aN=0, 得: 将 a0=60000, r =0.01, N=25*12=300 代入计算出 x=631.93.
分期付款模型 若小王采取分期付款方式,每月要付300元. 如果采用贷款方式,类似于上一模型,将 a0=8000, r =0.15/12,N=36 代入计算出 x=277.32. 比较两种支付方式,他应该选择消费贷款方式。
4.3 Fibonacci 数列 问题 13世纪意大利著名数学家Fibonacci在他的著作《算盘书》中记载着这样一个有趣的问题: 一对刚出生的幼兔经过一个月可长成成兔,成兔再经过一个月后可以繁殖出一对幼兔. 若不计兔子的死亡数,问一年之后共有多少对兔子?
将兔群总数记为 fn, n=0,1,2,…,经过观察可以发现,数列{fn}满足下列递推关系: f0 = f1 =1, fn+2 = fn+1 + fn , n=0,1,2,… 这个数列称为Fibonacci数列. Fibonacci数列是一个十分有趣的数列,在自然科学和数学领域中都有着广泛的应用. Fibonacci数列的一些实例. 1. 蜜蜂的家谱 2. 钢琴音阶的排列 3. 树的分枝 4. 杨辉三角形
观察Fibonacci数列 (*计算Fibonacci数列的前20项,并作图*) F[0]=F[1]=1; F[n_]:=F[n-1]+F[n-2]; fib=Table[F[i],{i,0,20}] tu1=ListPlot[fib,PlotStyle->PointSize[0.018]]; (*取对数后再观察,可以发现图像近似一条直线.*) lgf=Log[fib]; tu2=ListPlot[lgf,PlotStyle->PointSize[0.018]]; (*使用线性函数对数据进行拟合*) f[x_]=Fit[lgf,{1,x},x] tu3=Plot[f[x],{x,0,21},PlotStyle->RGBColor[0,0,1]]; Show[tu3,tu2] 通过计算可知, fn0.465577 e 0.478438n.
Fibonacci 数列的通项公式 Fibonacci 数列满足递推关系 fn+2 = fn+1 + fn,称为二阶线性差分方程. 通过前面的计算,可以猜测 fn 具有指数形式. 不妨设 fn =n, 代入差分方程,得 2- -1=0. 其解记为1, 2. 得到差分方程的通解为: fn =C11n+C22n. r=Solve[x^2-x-1==0,x]; a=x/.r[[1]];b=x/.r[[2]]; F1[n_]:=c1 a^n+c2 b^n; cc=Solve[{F1[0]==1,F1[1]==1},{c1,c2}]//Simplify F1[n]/.cc[[1]]//Simplify
例1. 有限数列 的生成函数是 G(x)=(1+x)n. 例2. 无穷数列 的生成函数是 G(x)=ex. 例3. 以G(x)= 为生成函数的数列是an=2n-1. 生成函数 对给定数列a0,a1,…, an,…,以{an}为系数构造一个形式幂级数: G(x)= a0+ a1x+ a2x2+…+an xn+… 称为数列{an}的生成函数(也称为母函数).
由 , 得 . 从而得 . 再由 f0=f1=1, 得: Fibonacci 数列的生成函数 设Fibonacci 数列的生成函数是: F(x)= f0+ f1x+ f2x2+…+fn xn+…, 其中 fn+2 = fn+1 + fn .
4.5 分叉与混沌 Logistic 方程 在受环境制约的情况下,生物种群的增长变化行为比较复杂. 例如在池塘内,环境可供1000条鱼生存.在鱼的数量远远低于此数时,鱼群的增长接近于指数增长. 但当鱼的数量接近生存限时,由于生态环境逐渐恶化,鱼群的增长逐渐变慢,几乎停止增长. 如果鱼群数量超过了生存限,由于环境不堪重负,鱼群会出现负增长. 这种现象可以用logistic方程进行刻画. pn+1-pn=k pn(N-pn)
例1池塘中鱼的数量满足差分方程 pn+1-pn=0.001 pn(1000-pn) 选择不同的初值,观察鱼群数量的变化趋势. p[x_]:=2x-0.001x^2; pict[a_]:=Module[{data1},data1=NestList[p,a,30]; ListPlot[data1,PlotStyle->{RGBColor[0,0,1],PointSize[0.018]}]] pict[0]; pict[1]; pict[500]; pict[1000]; pict[1500];
例2学校有两名同学在星期一返校时患了流感,假设流感的传染率为0.002,问两周之后全校400名学生中会有多少人感染过流感?例2学校有两名同学在星期一返校时患了流感,假设流感的传染率为0.002,问两周之后全校400名学生中会有多少人感染过流感? 记 an为到第n 天时感染过流感的学生人数. 假定流感患者的增加速度与流感患者同尚未感染流感的接触次数an(400-an)成正比. 因此,an满足logistic方程 an+1-an=0.002 an(400-an) p1[x_]:=x+0.002x(400-x); pict1[a_]:=Module[{data1},data1=NestList[p1,a,14]; ListPlot[data1,PlotStyle->{RGBColor[0,0,1],PointSize[0.018]}]] pict1[2];
Logistic 方程的迭代 logistic方程是非线性方程,其标准形式为: an+1=r an(1-an), 下面通过实验观察迭代数列的收敛性. logistic[r_,a_,n_]:= Module[{p,data,tu1,tu2},p[x_]:=r x(1-x); data=NestList[p,a,n]; tu1=ListPlot[data,PlotStyle->PointSize[0.018], DisplayFunction->Identity]; tu2=ListPlot[data,PlotJoined->True, PlotStyle->RGBColor[0,0,1], DisplayFunction->Identity]; Show[tu1,tu2, DisplayFunction->$DisplayFunction]];
(* 初值 r=0.7, a0=0.2 *) logistic[0.7,0.2,30]; 容易看出,迭代数列单调收敛于0. (* 初值 r=2.9, a0=0.2 *) logistic[2.9,0.2,30]; 迭代数列上下振荡,趋向于不动点(r-1)/r. (* 初值 r=3.4, a0=0.2 *) logistic[3.4,0.2,30]; 经过一段时间的调整,迭代数列开始接近在0.42和0.82之间振荡. 这类振荡称为2-循环.
(* 初值 r=3.55, a0=0.2 *) logistic[3.55,0.2,30]; 出现了周期为4的振荡,称为4-循环. 通过以上的观察可以发现,当参数 r 变化时,相应的迭代数列从收敛到唯一的不动点(1-循环)到2-循环再到4-循环,这样的分裂行为称为分叉(bifurcation). (* 初值 r=3.7, a0=0.2 *) logistic[3.7,0.2,30]; 此时没有稳定的周期性. 迭代数列在区间(0,1)内振荡,而且表现出对初始条件非常敏感的依赖性,这种状态称为混沌(chaos).
Feigenbaum 图 设 f(x) 是定义在实数域上的实值函数,如果存在 x*,使得 f(x*)=x*,则称 x*为 f(x) 不动点. 如果所有附近的点在迭代过程中都趋于某个不动点,则称该不动点为吸引点,或称为稳定点;如果所有附近的点在迭代过程中都远离它而去,则称该项点为排斥点(不稳定点). 如果 f(a1)=a2, f(a2)=a3,… , f(ak)=a1,并且 aj a1, j=2,3, … , k, 则a1, a2, … , ak 构成一个k-循环. a1称为k-周期点,a1, a2, … , ak 称为一个k-周期轨道. 为了观察 r对迭代格式 an+1=ran(1- an) 的影响,将区间(0,4]以步长r 离散化. 对每个离散的 r值进行迭代,忽略前50个迭代值,把点(r, a51),(r, a52), … , (r, a100)显示在坐标平面上. 这样形成的图形称为Feigenbaum图, 它反映了混沌与分叉的基本特性.
Feig[n_,x0_]:= Module[{plist={},a,i,temp,pilist={}}, For[a=1,a<=n,a++,temp=x0;plist={}; For[i=1,i<=50,i++,temp=4*a*temp(1-temp)/n]; For[i=51,i<=100,i++,temp=4*a*temp(1-temp)/n; AppendTo[plist,{4a/n,temp}]]; AppendTo[pilist,ListPlot[plist,PlotStyle-> {RGBColor[1,0,0],PointSize[0.008]}, DisplayFunction->Identity]]]; Show[pilist,DisplayFunction->$DisplayFunction]]; Feig[500,0.2];
练习二 对迭代格式an+1=4 an(1-an), n=1,2,… 使用初值0.21进行迭代,记录前100次的迭代数据. 把[0,1]区间十等分,统计迭代数列中落在各个小区间内的项数,做出统计表. 迭代数列在[0,1]区间内分布均匀吗?任取区间(0,1)内的一些初值重复这一实验,总结实验结果. 对迭代格式an+1=3.45 an(1-an), n=1,2,… 重复上述实验,实验结果有区别吗?你能解释这个现象吗?
statistic[r_,a_,n_]:= Module[{p,data,i,j,count,x,head,body}, p[x_]:=r x(1-x); data=NestList[p,a,n]; head={};body={}; For[j=0,j<10,j++,count[j]=0; AppendTo[head,N[j/10]]];For[i=2,i<=Length[data],i++, x=Floor[10data[[i]]];count[x]++]; For[j=0,j<10,j++,AppendTo[body,count[j]]]; TableForm[{head,body}]]; statistic[4,0.21,100]; statistic[3.45,0.21,100];
几个迭代图的作法 iterpict[r_,a0_,n_]:= Module[{p,g0,g1,a,b,c,k,ll,col1,col2},p[x_]:=r x(1-x);a=a0; col1=RGBColor[1,0,0];col2=RGBColor[0,0,1]; g0=Plot[{p[x],x},{x,0,1.1},PlotStyle->{col1,col2}]; ll={Line[{{a,0},{a,p[a]}}]}; Do[b=p[a];c=p[b]; ll=Append[ll,{Line[{{a,b},{b,b}}],Line[{{b,b},{b,c}}], Line[{{b,c},{c,c}}],Line[{{c,c},{c,p[c]}}]}]; a=c,{k,1,n}]; g1=Show[g0,Graphics[{ll}]]] iterpict[0.7,0.2,5]; iterpict[2.9,0.2,5]; iterpict[3.4,0.2,5]; iterpict[3.55,0.2,5]; iterpict[3.7,0.2,5]