资源描述:
《大学数学实验7-差分方程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、差分方程差分方程是在离散时段上描述现实世界中变化过程的数学模型.现实中的问题通常是连续变化的,但我们常常只能在离散的时间点上对其进行观测和描述。为了表述这一类的数学模型,我们引入了差分方程的方法。xk+1=(1+r)xk,k=0,1,2·····以k=0时x0=M代入,递推n次可得n年后本息为例1、某种货币1年期存款的年利率是r,现存入M元,问n年后的本金与利息之和是多少?记第k天的污水浓度为ck,则第k+1天的污水浓度为ck+1=(1-q)ck,k=0,1,2,····从k=0开始递推n次得以cn=c0/2代入即求解。例2污水处理厂每天可将处理池的污水
2、浓度降低一个固定比例q,问多长时间才能将污水浓度降低一半?一阶线性常系数差分方程濒危物种的自然演变和人工孵化问题:Florida沙丘鹤属于濒危物种,它在较好自然环境下,年均增长率仅为1.94%,而在中等和较差环境下年均增长率分别为-3.24%和-3.82%,如果在某自然保护区内开始有100只鹤,建立描述其数量变化规律的模型,并作数值计算。模型建立记第k年沙丘鹤的数量为xk,年均增长率为r,则第k+1年鹤的数量为xk+1=(1+r)xkk=0,1,2······已知x0=100,在较好、中等和较差的自然环境下r=0.0194,-0.0324,和-0.038
3、2我们利用Matlab编程,递推20年后观察沙丘鹤的数量变化情况Matlab实现首先建立一个关于变量n,r的函数functionx=exf11(x0,n,r)%建立名为exf11的函数M文件,x0,n,r可调节a=1+r;x=x0;%赋初值fork=1:nx(k+1)=a*x(k);迭代计算end在command窗口里调用exf11函数clearall%x0:初始值;x0=100;n=20;k=(0:n)';y1=exf11(x0,n,0.0194);%给定x0,n,r,b,调用exf11计算y2=exf11(x0,n,-0.0324);y3=exf11
4、(x0,n,-0.0382);exam02011round([k,y1‘,y2’,y3‘]),%对结果四舍五入取整plot(k,y1,k,y2,‘:’,k,y3,‘--’),%将3条线画在一个图上gtext('r=0.0194'),gtext('r=-0.0324'),gtext('r=-0.0382'),%在图上做标记人工孵化是挽救濒危物种的措施之一,如果每年孵化5只鹤放入保护区,观察在中等自然条件下沙丘鹤的数量如何变化xk+1=axk+5,a=1+r如果我们想考察每年孵化多少只比较合适,可以令xk+1=axk+b,a=1+rexam0201也可以观察
5、200年的发展趋势,以及在较差条件下的发展趋势,也可以考察每年孵化数量变化的影响。自然环境下,b=0人工孵化条件下结果分析在中令xk=xk+1=x得称为差分方程的平衡点k→∞时,xk→x,称平衡点是稳定的,否则平衡点是不稳定的。显然平衡点稳定的充要条件是
6、a
7、<1一阶常系数差分方程的解、平衡点及其稳定性高阶线性常系数差分方程如果第k+1时段变量Xk+1不仅取决于第k时段变量Xk,而且与以前时段变量有关,就要用高阶差分方程来描述一年生植物的繁殖一年生植物春季发芽,夏天开花,秋季产种,没有腐烂,风干,被人为掠取的那些种子可以活过冬天,其中一部分能在第2年春季
8、发芽,然后开花,产种,其中的另一部分虽未能发芽,但如又能活过一个冬天,则其中一部分可在第三年春季发芽,然后开花,产种,如此继续,一年生植物只能活1年,而近似的认为,种子最多可以活过两个冬天,试建立数学模型研究这种植物数量变化的规律,及它能一直繁殖下去的条件。模型及其求解记一棵植物产种的平均数为c,种子能活过一个冬天的(1岁种子)比例为b,活过一个冬天没有发芽又活过一个冬天的(2岁种子)比例仍为b,1岁种子发芽率a1,2岁种子发芽率a2。设c,a1,a2固定,b是变量,考察能一直繁殖的条件,记第k年植物数量为Xk,显然Xk与Xk-1,Xk-2有关,由Xk-
9、1决定的部分是a1bcXk-1,由Xk-2决定的部分是a2b(1-a1)bcXk-2Xk=a1bcXk-1+a2b(1-a1)bcXk-2Xk=a1bcXk-1+a2b(1-a1)bcXk-2实际上,就是Xk+pXk-1+qXk-2=0我们需要知道x0,a1,a2,c,考察b不同时,种子繁殖的情况。在这里假设X0=100,a1=0.5,a2=0.25,c=10,b=0.18~0.20这样可以用matlab计算了functionx=exf12(x0,n,b)c=10;a1=0.5;a2=0.25;p=-a1*b*c;q=-a2*(1-a1)*c*b^2;x
10、(1)=x0;%赋初值x(2)=-p*x(1);%迭代计算fork=3:nx(k