数学建模算法-day[17]
8 差分方程
差分方程是在离散的时间点上描述研究对象动态变化规律的数学表达式。有的实际问题本身就是以离散形式出现的,也有的是将现实世界中随时间连续变化的过程离散化。差分方程与微分方程都是描述状态变化问题的机理建模方法,是同一建模问题的两种思维(离散或连续)方式。
利用差分方程建模,通常是把问题看作一个系统,考察系统状态变量的变化。即首先考察任意两个相邻位置(时间或空间),通常称为一个微元,考察状态值在这个微元内的变化,即输入、输出变化情况,分析变化的原因,进而利用自然科学中的一些相应规律,如质量守恒、动量守恒、能量守恒等公理或定律,建立微元两端状态变量之间的关联方程。其遵循的一个基本准则就是:未来值=现在值+变化值。
若记x2x_2x2为第kkk个时刻或位置的状态变量值,则把各个状态变量的状态值次序排列,就形成了一个有序序列{xk}k=0n\{x_k\}_{k=0}^n{xk}k=0n。若序列中的xxx和其前一个状态或前几个状态值xi(0≤i<k)x_i(0\leq i < k)xi(0≤i<k)存在某种关联,则把它们的关联关系用代数方程的形式表达出来,即建立状态之间的关联方程,称为差分方程。差分方程也称为递推关系。
8.1 差分方程建模
例8.1贷款问题。在现实生活中,经常会遇到贷款问题,如购房、买车、投资等,如何根据自身偿还能力,确定合适的贷款额度及偿还期限,是每个借款人应考虑的现实问题。
问题提出
假定某消费者购房需贷款30万元,期限为30年,已知贷款年利率为5.1%,采用固定额度还款方式,问每月应还款额是多少。
问题分析
当月欠款=上月欠款的当月本息-当月还款。
基本假设
假定在还款期限内,利率保持不变。
模型建立
记yny_nyn为第nnn个月的欠款总额(单位:元);rrr为月利率,r=0.05112×100%=0.425%r=\frac{0.051}{12}\times 100\%=0.425\%r=120.051×100%=0.425%;xxx为当月还款额度(单位:元);NNN为还款期限,N=12×30=360N=12\times 30=360N=12×30=360(月);QQQ为贷款总额(单位:元)。则数学模型为
{yn=(1+r)yn−1−x,n=1,2,⋯ ,N,y0=Q.(8.1)
\left\{\begin{aligned}
& y_n=(1+r)y_{n-1}-x,n=1,2,\cdots,N,\\
& y_0=Q.\tag{8.1}
\end{aligned}\right.
{yn=(1+r)yn−1−x,n=1,2,⋯,N,y0=Q.(8.1)
模型求解
由式(8.1),可通过递推方法求得
yn=(1+r)yn−1−x=(1+r)[(1+r)yn−2−x]−x⋮=(1+r)ny0−x[1+(1+r)+(1+r)2+⋯+(1+r)n−1]=(1+r)ny0−x(1+r)n−1r.
\begin{aligned}
y_n &= (1 + r) y_{n-1} - x \\
&= (1 + r) \left[ (1 + r) y_{n-2} - x \right] - x \\
& \quad \vdots \\
&= (1 + r)^n y_0 - x \left[ 1 + (1 + r) + (1 + r)^2 + \cdots + (1 + r)^{n-1} \right] \\
&= (1 + r)^n y_0 - x\frac{(1 + r)^n - 1}{r}.
\end{aligned}
yn=(1+r)yn−1−x=(1+r)[(1+r)yn−2−x]−x⋮=(1+r)ny0−x[1+(1+r)+(1+r)2+⋯+(1+r)n−1]=(1+r)ny0−xr(1+r)n−1.
每月应还款的确定:由到期应全部还清的条件,即
yN=y360=0,0=yN=(1+r)NQ−x(1+r)N−1r,
y_N=y_{360}=0,\\
0=y_N=(1+r)^NQ-x\frac{(1+r)^N-1}{r},
yN=y360=0,0=yN=(1+r)NQ−xr(1+r)N−1,
解得
x=(1+r)NQr(1+r)N−1=(1+0.00425)360×300000×0.00425(1+0.00425)360−1=1628.85 (元).
x = \frac{(1 + r)^N Q r}{(1 + r)^N - 1} = \frac{(1 + 0.00425)^{360} \times 300000 \times 0.00425}{(1 + 0.00425)^{360} - 1} = 1628.85 \, (\text{元}).
x=(1+r)N−1(1+r)NQr=(1+0.00425)360−1(1+0.00425)360×300000×0.00425=1628.85(元).
到期后累计还款额度1628.85×360=5863861628.85\times 360=5863861628.85×360=586386元。
例8.2(续例6.18) 再论美国人口增长模型。以Δt=10\Delta t=10Δt=10年作为一个时间间隔步长,记xkx_kxk为t=kt=kt=k时的人口数量(单位:百万),考察从t=kt=kt=k到t=k+1t=k+1t=k+1时段内人口的变化量。若假设美国人口增长服从Logistic规律,则可建立如下所示的差分方程模型:
xk+1−xk=r(1−sxk)xkΔt,(8.2)
x_{k+1}-x_k=r(1-sx_k)x_k\Delta t,\tag{8.2}
xk+1−xk=r(1−sxk)xkΔt,(8.2)
式中:rrr为美国人口的固有增长率;sss为阻滞系数。
因而建立如下的差分方程模型:
{xk+1=(1+10r−10srxk)xk=αxk+βxk2,k=0,1,⋯ ,x0=3.9.(8.3)
\begin{cases}
x_{k+1} = (1 + 10r - 10sr x_k) x_k = \alpha x_k + \beta x_k^2, \quad k = 0, 1, \cdots, \\
x_0 = 3.9.\tag{8.3}
\end{cases}
{xk+1=(1+10r−10srxk)xk=αxk+βxk2,k=0,1,⋯,x0=3.9.(8.3)
式中:α=1+10r;β=−10rs<0\alpha=1+10r;\beta=-10rs<0α=1+10r;β=−10rs<0。
该模型是一个非线性一阶差分方程。下面使用线性最小二乘拟合模型式(8.3)中的位置参数α\alphaα和β\betaβ.
记已知的22个人口数据分别为xk(k=0,1,⋯ ,21),x_k(k=0,1,\cdots,21),xk(k=0,1,⋯,21),用=0,1,⋯ ,21=0,1,\cdots,21=0,1,⋯,21分别表示1790年、1800年、…、2000年。把已知的22个数据代入式(8.3)中的第一式,得到关于α,β\alpha,\betaα,β的超定线性方程组
[x0x02x1x12⋮⋮x20x202][αβ]=[x1x2⋮x21],
\begin{bmatrix}
x_0 & x_0^2 \\
x_1 & x_1^2 \\
\vdots & \vdots \\
x_{20} & x_{20}^2
\end{bmatrix}
\begin{bmatrix}
\alpha \\
\beta
\end{bmatrix}
=\begin{bmatrix}
x_1 \\
x_2 \\
\vdots \\
x_{21}
\end{bmatrix},
x0x1⋮x20x02x12⋮x202[αβ]=x1x2⋮x21,
解之,得到α,β\alpha,\betaα,β的最小二乘估计值
α^=1.2095,β^=−0.0004,
\hat{\alpha}=1.2095,\hat{\beta}=-0.0004,
α^=1.2095,β^=−0.0004,
2010年人口的预测值为307.6809百万。
clc;clear
a=readmatrix('美国人口数据.xlsx')
x=a([2:2:end],:)';x=x(~isnan(x))
A=[x(1:end-1),x(1:end-1).*x(1:end-1)];
b=x(2:end);
ab=pinv(A)*b
x2010=ab(1)*x(end)+ab(2)*x(end)^2
例8.3(续例6.2) 目标跟踪问题。
问题分析
把导弹与乙舰看作两个运动的质点P(x(t),y(t))P(x(t),y(t))P(x(t),y(t))和Q(x~(t),y~(t))Q(\tilde{x}(t),\tilde{y}(t))Q(x~(t),y~(t)),该问题就变成两个质点随时间的运动问题。
基本假设
(1)忽略潮流对两个质点运动的阻尼作用,即始终假定导弹和乙舰以恒定速度运动。
(2)导弹运动方向自始至终都指向乙舰, 即任意时刻导弹运动轨迹曲线的切线与P、Q两点之间的割线重合。
模型建立
首先把时间等间距离散化为一系列时刻:
t0t_{0}t0<t1t_{1}t1<t2t_{2}t2<⋯\cdots⋯<tkt_{k}tk<⋯\cdots⋯,式中:△t=tk+1−tk\triangle t=t_{k+1}-t_{k}△t=tk+1−tk为等时间步长。
记uuu为导弹运行的速度,则u=5v0u=5v_{0}u=5v0。进一步地,记P(xk,yk)P(x_{k},y_{k})P(xk,yk)为质点PPP在t=tkt=t_{k}t=tk时刻的位置,则QQQ点位置是Qk=(1,v0tk)Q_{k}=(1,v_{0}t_{k})Qk=(1,v0tk),如图8.1所示,从点PkP_{k}Pk到QkQ_{k}Qk构成的割线向量PkQk→\overrightarrow{P_{k}Q_{k}}PkQk为
PkQk→=(1−xk,v0tk−yk),
\overrightarrow{P_{k}Q_{k}}=(1-x_{k},v_{0}t_{k}-y_{k}),
PkQk=(1−xk,v0tk−yk),
式中: xk=x(tk);yk=y(tk)x_{k}=x(t_{k});y_{k}=y(t_{k})xk=x(tk);yk=y(tk)。
图8.1导弹追踪示意图
由基本假设(2)可知,PPP点的运动方向始终指向QQQ,故向量PkQk→\overrightarrow{P_{k}Q_{k}}PkQk 的方向就是导弹在 t=tkt=t_{k}t=tk 时刻运动的方向,其方向向量可由如下单位向量(方向余弦)表示:
e(k)=(e1(k),e2(k))=PkQk→∣∣PkQk∣∣→,
e^{(k)}=(e_{1}^{(k)},e_{2}^{(k)})=\frac{\overrightarrow{P_{k}Q_{k}}}{||\overrightarrow{P_{k}Q_{k}||}},
e(k)=(e1(k),e2(k))=∣∣PkQk∣∣PkQk,
其中
∣∣PkQk∣∣→=(1−xk)2+(v0tk−yk)2e1(k)=1−xk(1−xk)2+(v0tk−yk)2v0tk−yk(1−xk)2+(v0tk−yk)2
||\overrightarrow{P_{k}Q_{k}||}=\sqrt{(1-x_k)^2+(v_0t_k-y_k)^2}\\
e_1^{(k)}=\frac{1-x_{k}}{(1-x_{k})^{2}+(v_{0}t_{k}-y_{k})^2}\\
\frac{v_{0}t_{k}-y_{k}}{(1-x_{k})^{2}+(v_{0}t_{k}-y_{k})^2}
∣∣PkQk∣∣=(1−xk)2+(v0tk−yk)2e1(k)=(1−xk)2+(v0tk−yk)21−xk(1−xk)2+(v0tk−yk)2v0tk−yk
以时间从 tkt_{k}tk 到 tk+1t_{k+1}tk+1 作为一个微元,当运动时间从 tkt_{k}tk 变为 tk+1t_{k+1}tk+1 时,在这个微小的时间单元内,假定导弹质点的运动方向不变,则在t=tk+1=t0+(k+1)Δtt=t_{k+1}=t_0+(k+1)\Delta tt=tk+1=t0+(k+1)Δt时刻,PPP点的位置为Pk+1(xk+1,yk+1)P_{k+1}(x_{k+1},y_{k+1})Pk+1(xk+1,yk+1),满足
{xk+1=xk+ue1(k)Δt,yk+1=yk+ue2(k)Δt,x0=0,y0=0,(8.4)
\left\{\begin{aligned}
& x_{k+1}=x_k+ue_1^{(k)}\Delta{t},\\
& y_{k+1}=y_k+ue_2^{(k)}\Delta{t},\\
& x_0=0,y_0=0,\tag{8.4}
\end{aligned}\right.
⎩⎨⎧xk+1=xk+ue1(k)Δt,yk+1=yk+ue2(k)Δt,x0=0,y0=0,(8.4)
式中:u=5v0u=5v_0u=5v0是导弹的运行速度;ue1(k)ue_1^{(k)}ue1(k)为导弹的速度向量在xxx轴方向的投影分量;ue2(k)ue_2^{(k)}ue2(k)为导弹的速度向量在yyy轴方向的投影分量;x0,y0x_0,y_0x0,y0为导弹的初始位置。
这是一个关于参变量(时间Δt\Delta tΔt)的差分方程组,令k=0,1,2,⋯ ,k=0,1,2,\cdots,k=0,1,2,⋯,即可求出在一系列离散时间点上的导弹位置
模型求解
取v0=1,Δ=0.00005,v_0=1,\Delta=0.00005,v0=1,Δ=0.00005,计算结果如图8.2所示,即乙舰大约行驶到0.2084处时被击中,经过的时间大约为0.2084。
图8.2 导弹追踪计算结果
clc;clear
v=1;u=5*v;h=0.00005;
x=0;y=0;t=0;
plot(x,y,'.'),hold on
while x<0.99999pq=[1-x,v*t-y];x=x+u*pq(1)/norm(pq)*h;y=y+u*pq(2)/norm(pq)*h;t=t+h;plot(x,y,'.')
end
x,y
xlabel('$x$','Interpreter','latex')
ylabel('$y$','Interpreter','Latex','Rotation',0)
例8.4 商品销售量预测。某商品前5年的销售量见表8.1。现希望根据前五年的统计数据预测第6年起该商品在各季度中的销售量。
表8.1 前5年销售数据表
第1年 | 第2年 | 第3年 | 第4年 | 第5年 | |
---|---|---|---|---|---|
第1季度 | 11 | 12 | 13 | 15 | 16 |
第2季度 | 16 | 18 | 20 | 24 | 25 |
第3季度 | 25 | 26 | 27 | 30 | 32 |
第4季度 | 12 | 14 | 15 | 15 | 17 |
从表8.1可以看出,该商品在前5年相同季节里的销售量呈增长趋势,而在同一年中销售量先增后减,第一季度的销售量最小而第3季度的销售量最大。预测该商品以后的销售情况,根据本例中数据的特征,可以用回归分析方法按季度建立4个经验公式,分别用来预测以后各年同一季度的销售量。例如,如认为第1季度的销售量大体按线性增长,可设销售量yt(1)=at+by_t^{(1)}=at+byt(1)=at+b,如如下Matlab程序:
clc;clear
a=readmatrix('销售数据.xlsx')
y1=a(2,:);y1=y1(~isnan(y1))';
x=[[1:5]',ones(5,1)];
z=x\y1
求得a=z(1)=1.3,b=z(2)=9.5a=z(1)=1.3,b=z(2)=9.5a=z(1)=1.3,b=z(2)=9.5。
根据yt(1)=1.3t+9.5y_t^{(1)}=1.3t+9.5yt(1)=1.3t+9.5,预测第6年起第一季度的销售量为y6(1)=17.3,y7(1)=18.6,⋯y_6^{(1)}=17.3,y_7^{(1)}=18.6,\cdotsy6(1)=17.3,y7(1)=18.6,⋯。由于数据少,用回归分析效果不一定好。
如认为销售量并非逐年等量增长而是按前一年或前几年同期销售量的一定比例增长的,则可建立相应的差分方程模型。仍以第1季度为例,简单起见,不再引入上标,以yty_tyt表示第ttt年第1季度的销售量,建立形式如下的差分公式:
yt=a1yt−1+a2,
y_t=a_1y_{t-1}+a_2,
yt=a1yt−1+a2,
或
yt=a1yt−1+a2yt−2+a3
y_t=a_1y_{t-1}+a_2y_{t-2}+a_3
yt=a1yt−1+a2yt−2+a3
等。
上述差分方程中的系数不一定能使所有统计数据吻合,较为合理的方法是用最小二乘法求一组总体吻合较好的数据。以建立二阶差分方程yt=a1yt−1+a2yt−2+a3y_t=a_1y_{t-1}+a_2y_{t-2}+a_3yt=a1yt−1+a2yt−2+a3为例,选取a1,a2,a3a_1,a_2,a_3a1,a2,a3使得对于已知观测数据yt(t=1,2,3,4,5)y_t(t=1,2,3,4,5)yt(t=1,2,3,4,5),使
∑t=35[yt−(a1yt−1+a2yt−2+a3)]2
\sum_{t=3}^5[y_t-(a_1y_{t-1}+a_2y_{t-2}+a_3)]^2
t=3∑5[yt−(a1yt−1+a2yt−2+a3)]2
达到最小。编写Matlab程序如下:
clc;clear
a=readmatrix('销售数据.xlsx')
y1=a(2,:);y1=y1(~isnan(y1))';
b=y1(3:5);
A=[y1(2:4),y1(1:3),ones(3,1)];
z=pinv(A)*b
求得a1=z(1)=−1,a2=z(2)=3,a3=z(3)=−8a_1=z(1)=-1,a_2=z(2)=3,a_3=z(3)=-8a1=z(1)=−1,a2=z(2)=3,a3=z(3)=−8。即所求二阶差分方程为
yt=−yt−1+3yt−2−8.
y_{t}=-y_{t-1}+3y_{t-2}-8.
yt=−yt−1+3yt−2−8.
显然这一差分方程恰好使所有统计数据吻合,但这只是一个巧合。根据这一方程,可迭代求出以后各年第1季度销售量的预测值y6=21,y7=19,⋯y_6=21,y_7=19,\cdotsy6=21,y7=19,⋯。
上述为预测各年第1季度销售量而建立的二阶差分方程,虽然其系数与前5年第1季度的统计数据完全吻合,但用于预测时预测值与事实不符。凭直觉,第6年估计值明显偏高,第七年销售量预测值甚至小于第6年。稍做分析不难看出,如分析对每一季度建立一个差分方程,则根据统计数据拟合出的系数可能会相差甚大,但对同一种商品,这种差异应当是微小的,故应给根据统计数据建立一个共用于各个季度的差分方程。为此,将季度编号为t=1,2,⋯ ,20t=1,2,\cdots,20t=1,2,⋯,20,令yt=a1yt−4+a2y_t=a_1y_{t-4}+a_2yt=a1yt−4+a2或yt=a1yt−4+a2yt−8+a3y_t=a_1y_{t-4}+a_2y_{t-8}+a_3yt=a1yt−4+a2yt−8+a3等,利用全体数据来拟合,求拟合的最好的系数。以二阶差分方程为例,求a1,a2,a3a_1,a_2,a_3a1,a2,a3使得
Q(a1,a2,a3)=∑t=920[yt−(a1yt−4+a2yt−8+a3)]2
Q(a_1,a_2,a_3)=\sum_{t=9}^{20}[y_t-(a_1y_{t-4}+a_2y_{t-8}+a_3)]^2
Q(a1,a2,a3)=t=9∑20[yt−(a1yt−4+a2yt−8+a3)]2
达到最小,计算得a1=z(1)=0.8737,a2=z(2)=0.1941,a3=z(3)=0.6957a_1=z(1)=0.8737,a_2=z(2)=0.1941,a_3=z(3)=0.6957a1=z(1)=0.8737,a2=z(2)=0.1941,a3=z(3)=0.6957,故求得二阶差分方程
yt=0.8737yt−4+0.1941yt−8+0.6957,
y_t=0.8737y_{t-4}+0.1941y_{t-8}+0.6957,
yt=0.8737yt−4+0.1941yt−8+0.6957,
根据此式迭代,可求得第6年和第7年第1季度销售量的预测值为
y21=17.5869,y25=19.1676.
y_{21}=17.5869,y_{25}=19.1676.
y21=17.5869,y25=19.1676.
还是较为可信的。
计算的Matlab程序如下:
clc;clear
a=readmatrix('销售数据.xlsx')
y=a(~isnan(a));
b=y(9:20);
A=[y(5:16),y(1:12),ones(12,1)];
z=pinv(A)*b
for t=21:25y(t)=[y(t-4),y(t-8),1]*z;
end
yhat=y([21,25]) %提取t=21,25时的预测值
例8.5 养老保险。某保险公司的一份材料指出,在每月交费200元至59岁年底,60岁开始领取养老金的约定下,男子若25岁投保,届时月养老金2282元;假定人的寿命为75岁,试求出保险公司为了兑现保险责任,每月至少应有多少投资收益率?
解 设rrr表示投保金的投资收益率,缴费期间月缴费额为ppp元,领养老金期间月领取额为qqq元,缴费的月数为NNN,到75岁时领取养老金的月数为MMM,投保人在投保后第kkk个月所交保险费及收益的累计总额为FkF_kFk,那么容易得到数学模型为分段表示的差分方程
Fk+1=Fk(1+r)+p,k=0,1,⋯ ,N−1,Fk+1=Fk(1+r)−q,k=N,N+1,⋯ ,M−1,
F_{k+1}=F_k(1+r)+p,k=0,1,\cdots,N-1,\\
F_{k+1}=F_k(1+r)-q,k=N,N+1,\cdots,M-1,
Fk+1=Fk(1+r)+p,k=0,1,⋯,N−1,Fk+1=Fk(1+r)−q,k=N,N+1,⋯,M−1,
这里p=200,q=2282,N=420,M=600p=200,q=2282,N=420,M=600p=200,q=2282,N=420,M=600。
可推出差分方程的解(这里F0=FM=0F_0=F_M=0F0=FM=0)为
Fk=[(1+r)k−1]pr,k=0,1,2,⋯ ,N,(8.5)
F_k=[(1+r)^k-1]\frac{p}{r},k=0,1,2,\cdots,N,\tag{8.5}
Fk=[(1+r)k−1]rp,k=0,1,2,⋯,N,(8.5)
Fk=qr[1−(1+r)k−M],k=N+1,⋯ ,M,(8.6)
F_k=\frac{q}{r}[1-(1+r)^{k-M}],k=N+1,\cdots,M,\tag{8.6}
Fk=rq[1−(1+r)k−M],k=N+1,⋯,M,(8.6)
由式(8.5)和式(8.6)得
FN=[(1+r)N−1]pr,
F_N=[(1+r)^N-1]\frac{p}{r},
FN=[(1+r)N−1]rp,
FN+1=qr[1−(1+r)N+1−M],
F_{N+1}=\frac{q}{r}[1-(1+r)^{N+1-M}],
FN+1=rq[1−(1+r)N+1−M],
由于FN+1=FN(1+r)−qF_{N+1}=F_N(1+r)-qFN+1=FN(1+r)−q,因此得
qr[1−(1+r)N+1−M]=[(1+r)N−1]pr(1+r)−q,
\frac{q}{r}[1-(1+r)^{N+1-M}]=[(1+r)^N-1]\frac{p}{r}(1+r)-q,
rq[1−(1+r)N+1−M]=[(1+r)N−1]rp(1+r)−q,
化简得
(1+r)M−(1+qp)(1+r)M−N+qp=0,
(1+r)^M-(1+\frac{q}{p})(1+r)^{M-N}+\frac{q}{p}=0,
(1+r)M−(1+pq)(1+r)M−N+pq=0,
记x=1+rx=1+rx=1+r,代入数据得
x600−12.41x180+11.41=0.
x^{600}-12.41x^{180}+11.41=0.
x600−12.41x180+11.41=0.
利用Matlab程序,求得x=1.0049x=1.0049x=1.0049,因而投资收益率r=0.49r=0.49%r=0.49.
计算的Matlab程序如下:
clc;clear
M=600;N=420;p=200;q=2282;
eq=@(x) x^M-(1+q/p)*x^(M-N)+q/p;
sol=fzero(eq,[1.0001,1.5])
8.2 差分方程的基本概念和理论
1.基本概念
定义 8.1 称形如
yn+k+a1yn+k−1+a2yn+k−2+⋯+akyn=0(8.7)
y_{n+k}+a_1 y_{n+k-1}+a_2 y_{n+k-2}+\cdots+a_k y_n=0\tag{8.7}
yn+k+a1yn+k−1+a2yn+k−2+⋯+akyn=0(8.7)
的差分方程为 kkk 阶常系数线性齐次差分方程,其中 ai(1⩽i⩽k)a_i(1 \leqslant i \leqslant k)ai(1⩽i⩽k) 为常数,ak≠0,k⩾1a_k \neq 0, k \geqslant 1ak=0,k⩾1 。
定义 8.2 称方程
λk+a1λk−1+⋯+ak−1λ+ak=0(8.8)
\lambda^k+a_1 \lambda^{k-1}+\cdots+a_{k-1} \lambda+a_k=0\tag{8.8}
λk+a1λk−1+⋯+ak−1λ+ak=0(8.8)
为差分方程(8.7)的特征方程,方程的根称为差分方程(8.7)的特征根。
定义 8.3 称形如
yn+k+a1yn+k−1+a2yn+k−2+⋯+akyn=f(n)(8.9)
y_{n+k}+a_1 y_{n+k-1}+a_2 y_{n+k-2}+\cdots+a_k y_n=f(n)\tag{8.9}
yn+k+a1yn+k−1+a2yn+k−2+⋯+akyn=f(n)(8.9)
的差分方程为 kkk 阶常系数线性非齐次差分方程,其中 ai(1⩽i⩽k)a_i(1 \leqslant i \leqslant k)ai(1⩽i⩽k) 为常数,ak≠0,k⩾1a_k \neq 0, k \geqslant 1ak=0,k⩾1 , f(n)≠0f(n) \neq 0f(n)=0 。
定理 8.1 若 kkk 阶差分方程(8.7)的特征方程(8.8)有 kkk 个互异的特征根 λ1,λ2,⋯\lambda_1, \lambda_2, \cdotsλ1,λ2,⋯ , λk\lambda_kλk ,则
yn=c1λ1n+c2λ2n+⋯+ckλkn(8.10)
y_n=c_1 \lambda_1^n+c_2 \lambda_2^n+\cdots+c_k \lambda_k^n\tag{8.10}
yn=c1λ1n+c2λ2n+⋯+ckλkn(8.10)
是差分方程(8.7)的一个通解,其中 c1,c2,⋯ ,ckc_1, c_2, \cdots, c_kc1,c2,⋯,ck 为任意常数。
进一步地,若给定一组初始条件:
y0=u0,y1=u1,⋯ ,yk−1=uk−1,
y_0=u_0, y_1=u_1, \cdots, y_{k-1}=u_{k-1},
y0=u0,y1=u1,⋯,yk−1=uk−1,
则利用待定系数法,可以确定差分方程满足初始条件的特解。
定理8.2 若 kkk 阶差分方程(8.7)的特征方程(8.8)有 ttt 个互异的特征根 λ1,λ2,⋯\lambda_1, \lambda_2, \cdotsλ1,λ2,⋯ , λt\lambda_tλt ,重数依次为 m1,m2,⋯ ,mtm_1, m_2, \cdots, m_tm1,m2,⋯,mt ,其中 m1+m2+⋯+mt=km_1+m_2+\cdots+m_t=km1+m2+⋯+mt=k ,则差分方程的通解为
yn=∑j=1m1c1jnj−1λ1n+∑j=1m2c2jnj−1λ2n+⋯+∑j=1mtcijnj−1λtn(8.11)
y_n=\sum_{j=1}^{m_1} c_{1 j} n^{j-1} \lambda_1^n+\sum_{j=1}^{m_2} c_{2 j} n^{j-1} \lambda_2^n+\cdots+\sum_{j=1}^{m_t} c_{i j} n^{j-1} \lambda_t^n\tag{8.11}
yn=j=1∑m1c1jnj−1λ1n+j=1∑m2c2jnj−1λ2n+⋯+j=1∑mtcijnj−1λtn(8.11)
定理8.3 kkk 阶常系数非齐次差分方程(8.9)的通解 yny_nyn 等于对应齐次差分方程的通解加上非齐次差分方程的特解,即
yn=yn~+yn∗,(8.12)
y_n=\tilde{y_n}+y_n^*,\tag{8.12}
yn=yn~+yn∗,(8.12)
式中:yn~\tilde{y_n}yn~为对应齐次差分方程的通解;yn∗y_n^*yn∗为对应非齐次差分方程的特解。
2.差分方程的平衡点及稳定性
- 一阶线性方程的平衡点及稳定性**
考虑一阶线性常系数差分方程,一般形式为:
yk+1+ayk=b, k=0,1,2,⋯(8.13) y_{k+1} + a y_k = b, \; k = 0,1,2,\cdots \tag{8.13} yk+1+ayk=b,k=0,1,2,⋯(8.13)
式中:a,ba,ba,b 为常数。
称 y∗y^*y∗ 为方程 (8.13) 的平衡点,若满足 y∗+ay∗=by^* + a y^* = by∗+ay∗=b。求解得y∗=b1+ay^* = \frac{b}{1 + a}y∗=1+ab。
当 k→∞k \to \inftyk→∞ 时,若 yk→y∗y_k \to y^*yk→y∗,则平衡点 y∗y^*y∗ 是稳定的;否则 y∗y^*y∗ 是不稳定的。
为了理解平衡点的稳定性,可以用变量代换将方程 (8.13) 的稳定性问题转换为:
yk+1+ayk=0, k=0,1,2,⋯(8.14)
y_{k+1} + a y_k = 0, \; k = 0,1,2,\cdots \tag{8.14}
yk+1+ayk=0,k=0,1,2,⋯(8.14)
的平衡点 y∗=0y^* = 0y∗=0 的稳定性问题。而对于方程 (8.14) 的解可由递推公式直接给出:
yk=(−a)ky0, k=1,2,3,⋯
y_k = (-a)^k y_0, \; k = 1,2,3,\cdots
yk=(−a)ky0,k=1,2,3,⋯
所以当且仅当 ∣a∣<1|a| < 1∣a∣<1 时,方程(8.14)的平衡点 y∗=0y^* = 0y∗=0 稳定(从而方程(8.13)的平衡点稳定)。
- 一阶线性常系数差分方程组的平衡点及稳定性
对于 nnn 维向量 y(k)\boldsymbol{y}(k)y(k) 和 n×nn \times nn×n 常数矩阵 A\boldsymbol{A}A 构成的一阶线性常系数齐次差分方程组:
y(k+1)+Ay(k)=0, k=0,1,2,⋯(8.15)
\boldsymbol{y}(k+1) + \boldsymbol{A} \boldsymbol{y}(k) = \boldsymbol{0}, \; k = 0,1,2,\cdots \tag{8.15}
y(k+1)+Ay(k)=0,k=0,1,2,⋯(8.15)
其平衡点 y∗=0\boldsymbol{y}^* = \boldsymbol{0}y∗=0 稳定的条件是:
A\boldsymbol{A}A 的所有特征根均满足 ∣λi∣<1 (i=1,2,⋯ ,n)|\lambda_i| < 1 \; (i=1,2,\cdots,n)∣λi∣<1(i=1,2,⋯,n),即特征根均在复平面的单位圆内)。
对于 nnn 维向量 y(k)\boldsymbol{y}(k)y(k) 和 n×nn \times nn×n 常数矩阵 A\boldsymbol{A}A 构成的一阶线性常系数非齐次差分方程组:
y(k+1)+Ay(k)=B, k=0,1,2,⋯(8.16)
\boldsymbol{y}(k+1) + \boldsymbol{A} \boldsymbol{y}(k) = \boldsymbol{B}, \; k = 0,1,2,\cdots \tag{8.16}
y(k+1)+Ay(k)=B,k=0,1,2,⋯(8.16)
其平衡点为$\boldsymbol{y}^* = (\boldsymbol{E} + \boldsymbol{A})^{-1} \boldsymbol{B}
$,其中 E\boldsymbol{E}E 为 nnn 阶单位方阵。其稳定性条件与齐次方程(8.15)相同,即A\boldsymbol{A}A 的所有特征根均满足 ∣λi∣<1 (i=1,2,⋯ ,n)|\lambda_i| < 1 \; (i=1,2,\cdots,n)∣λi∣<1(i=1,2,⋯,n)。
- 二阶线性常系数差分方程的平衡点及稳定性
考察二阶线性常系数齐次差分方程:
yk+2+a1yk+1+a2yk=0(8.17)
y_{k+2} + a_1 y_{k+1} + a_2 y_k = 0 \tag{8.17}
yk+2+a1yk+1+a2yk=0(8.17)
的平衡点(y∗=0y^*=0y∗=0)的稳定性。
方程(8.17)的特征方程为
λ2+a1λ+a2=0,
\lambda^2+a_1\lambda+a_2=0,
λ2+a1λ+a2=0,
记它的特征根为λ1,λ2\lambda_1,\lambda_2λ1,λ2,则方程(8.17)的通解可表示为
yk=c1λ1k+c2λ2k,(8.18)
y_k=c_1\lambda_1^k+c_2\lambda_2^k,\tag{8.18}
yk=c1λ1k+c2λ2k,(8.18)
式中:c1,c2c_1,c_2c1,c2为待定常数,由两个初始条件的值确定。
由式(8.18)很容易就可以得到,当且仅当
∣λ1∣<1,∣λ2∣<1
\mid \lambda_1 \mid<1,\mid \lambda_2 \mid<1
∣λ1∣<1,∣λ2∣<1
时,方程(8.17)的平衡点才是稳定的。
与一阶线性方程一样,非齐次方程
yk+2+a1yk+1+a2yk=b
y_{k+2} + a_1 y_{k+1} + a_2 y_k = b
yk+2+a1yk+1+a2yk=b
的平衡点的稳定性条件和方程(8.17)相同。
上述结果可以推广到nnn阶线性常系数差分方程的平衡点及其稳定性问题。即平衡点稳定的充要条件是其特征方程的根∣λi∣<1(i=1,2,⋯ ,n)|\lambda_i|<1(i=1,2,\cdots,n)∣λi∣<1(i=1,2,⋯,n)。
- 一阶非线性差分方程
考察一阶非线性差分方程
yk=f(yk)(8.19) y_{k}=f(y_{k}) \tag{8.19} yk=f(yk)(8.19)
式中:f(yk)f(y_{k})f(yk) 为已知函数。其平衡点 y∗y^{*}y∗ 由代数方程 y∗=f(y∗)y^{*}=f(y^{*})y∗=f(y∗) 解出。
现分析 y∗y^{*}y∗ 的稳定性。将方程的右端在 y∗y^{*}y∗ 点作泰勒多项式展开,只取一阶导数项,则式 (8.19) 可近似为
yk+1≈f(y∗)+f′(y∗)(yk−y∗)(8.20)
y_{k+1} \approx f(y^{*}) + f'(y^{*})(y_{k}-y^{*}) \tag{8.20}
yk+1≈f(y∗)+f′(y∗)(yk−y∗)(8.20)
故 y∗y^{*}y∗ 也是近似齐次线性差分方程 (8.20) 的平衡点。从而由一阶齐次线性差分方程的平衡点稳定性理论可知,y∗y^{*}y∗ 稳定的充要条件为 ∣f′(y∗)∣<1|f'(y^{*})| < 1∣f′(y∗)∣<1。
8.3 莱斯利(Leslie)种群模型
莱斯利模型是研究动物种群数量增长的重要模型,这一模型研究了种群中雌性动物的年龄分布和数量增长的规律。
在某动物种群中,仅考察雌性动物的年龄和数量。设雌性动物的最大生存年龄为 LLL (单位:年或其他时间单位),把 [0,L][0,L][0,L] 等分为 nnn 个年龄组,每一年龄组的长度为 L/nL/nL/n,nnn 个年龄组分别为
[0,Ln),[Ln,2Ln),⋯ ,[(n−1)Ln,L].
\left[0,\frac{L}{n}\right),\left[\frac{L}{n},\frac{2L}{n}\right),\cdots,\left[\frac{(n - 1)L}{n},L\right].
[0,nL),[nL,n2L),⋯,[n(n−1)L,L].
设第 iii 个年龄组的生育率为 aia_{i}ai,存活率为 bi(i=1,2,⋯ ,n)b_{i}(i = 1,2,\cdots,n)bi(i=1,2,⋯,n),ai,bia_{i},b_{i}ai,bi 均为常数,且 ai≥0a_{i} \geq 0ai≥0 (i=1,2,⋯ ,n)(i = 1,2,\cdots,n)(i=1,2,⋯,n),0<bi≤1(i=1,2,⋯ ,n−1)0 < b_{i} \leq 1(i = 1,2,\cdots,n - 1)0<bi≤1(i=1,2,⋯,n−1)。同时,设至少有一个 ai>0(1≤i≤n)a_{i} > 0(1 \leq i \leq n)ai>0(1≤i≤n),即至少有一个年龄组的雌性动物具有生育能力。
利用统计资料可获得基年 (t=0t = 0t=0) 该种群在各年龄组的雌性动物数量,记为 xi(0)(i=1,2,⋯ ,n)x_{i}^{(0)}(i = 1,2,\cdots,n)xi(0)(i=1,2,⋯,n),为 t=0t = 0t=0 时第 iii 年龄组雌性动物的数量,就得到初始时刻种群数量分布向量:
x(0)=[x1(0),x2(0),⋯ ,xn(0)]T.
x^{(0)} = [x_{1}^{(0)},x_{2}^{(0)},\cdots,x_{n}^{(0)}]^{\text{T}}.
x(0)=[x1(0),x2(0),⋯,xn(0)]T.
如果以年龄组的间隔 Ln\frac{L}{n}nL 作为时间单位,记 t1=Ln,t2=2Ln,⋯ ,tk=kLn,⋯t_{1} = \frac{L}{n},t_{2} = \frac{2L}{n},\cdots,t_{k} = \frac{kL}{n},\cdotst1=nL,t2=n2L,⋯,tk=nkL,⋯,在 tkt_{k}tk 时第 iii 年龄组雌性动物的数量为xi(k)(i=1,2,⋯ ,n),tkx_i^{(k)}(i=1,2,\cdots,n),t_kxi(k)(i=1,2,⋯,n),tk时各年龄组种群数量分布向量为
x(k)=[x1(k),x2(k),⋯ ,xn(k)]T,k=0,1,2,⋯ .(8.21)
x^{(k)}=[x^{(k)}_1,x^{(k)}_2,\cdots,x^{(k)}_n]^T,k=0,1,2,\cdots.\tag{8.21}
x(k)=[x1(k),x2(k),⋯,xn(k)]T,k=0,1,2,⋯.(8.21)
随着时间的变化,由于出生、死亡以及年龄的增长,该种群中每一个年龄组的雌性动物数量都将发生变化。实际上,在 tkt_ktk 时刻,种群中第 1 个年龄组的雌性动物数量应等于在 tk−1t_{k - 1}tk−1 和 tkt_ktk 之间出生的所有雌性幼体的总和,即:
x1(k)=a1x1(k−1)+a2x2(k−1)+⋯+anxn(k−1)(8.22)
x_1^{(k)} = a_1 x_1^{(k - 1)} + a_2 x_2^{(k - 1)} + \cdots + a_n x_n^{(k - 1)} \tag{8.22}
x1(k)=a1x1(k−1)+a2x2(k−1)+⋯+anxn(k−1)(8.22)
同时,在 tkt_ktk 时刻,第 i+1i + 1i+1 个年龄组(i=1,2,⋯ ,n−1i = 1, 2, \cdots, n - 1i=1,2,⋯,n−1)中雌性动物的数量应等于在 tk−1t_{k - 1}tk−1 时刻第 iii 个年龄组中雌性动物数量 xi(k−1)x_i^{(k - 1)}xi(k−1) 乘存活率 bib_ibi,即:
xi+1(k)=bixi(k−1)(i=1,2,⋯ ,n−1)(8.23)
x_{i+1}^{(k)} = b_i x_i^{(k - 1)} \quad (i = 1, 2, \cdots, n - 1) \tag{8.23}
xi+1(k)=bixi(k−1)(i=1,2,⋯,n−1)(8.23)
综合上述分析,由式 (8.22) 和式 (8.23) 可得到在 tkt_ktk 和 tk−1t_{k - 1}tk−1 时各年龄组中雌性动物数量间的关系:
{x1(k)=a1x1(k−1)+a2x2(k−1)+⋯+anxn(k−1),x2(k)=b1x1(k−1),x3(k)=b2x2(k−1),⋮xn(k)=bn−1xn−1(k−1).(8.24) \begin{cases} x_1^{(k)} = a_1 x_1^{(k - 1)} + a_2 x_2^{(k - 1)} + \cdots + a_n x_n^{(k - 1)}, \\ x_2^{(k)} = b_1 x_1^{(k - 1)} ,\\ x_3^{(k)} = \quad\quad\quad b_2 x_2^{(k - 1)}, \\ \vdots \\ x_n^{(k)} = \quad\quad\quad\quad\quad\quad\quad\quad b_{n - 1} x_{n - 1}^{(k - 1)} . \end{cases} \tag{8.24} ⎩⎨⎧x1(k)=a1x1(k−1)+a2x2(k−1)+⋯+anxn(k−1),x2(k)=b1x1(k−1),x3(k)=b2x2(k−1),⋮xn(k)=bn−1xn−1(k−1).(8.24)
记矩阵
L=[a1a2⋯an−1anb10⋯000b2⋯00⋮⋮⋱⋮⋮00⋯bn−10] \boldsymbol{L} = \begin{bmatrix} a_1 & a_2 & \cdots & a_{n - 1} & a_n \\ b_1 & 0 & \cdots & 0 & 0 \\ 0 & b_2 & \cdots & 0 & 0 \\ \vdots & \vdots & \ddots & \vdots & \vdots \\ 0 & 0 & \cdots & b_{n - 1} & 0 \end{bmatrix} L=a1b10⋮0a20b2⋮0⋯⋯⋯⋱⋯an−100⋮bn−1an00⋮0
则式 (8.24) 可写成
x(k)=Lx(k−1), k=1,2,3,⋯(8.25) \boldsymbol{x}^{(k)} = \boldsymbol{L} \boldsymbol{x}^{(k - 1)}, \; k = 1, 2, 3, \cdots \tag{8.25} x(k)=Lx(k−1),k=1,2,3,⋯(8.25)
式中:L\boldsymbol{L}L 为莱斯利矩阵。
由式 (8.25) 可得 x(1)=Lx(0),x(2)=Lx(1)=L2x(0),⋯\boldsymbol{x}^{(1)} = \boldsymbol{L} \boldsymbol{x}^{(0)}, \boldsymbol{x}^{(2)} = \boldsymbol{L} \boldsymbol{x}^{(1)} = \boldsymbol{L}^2 \boldsymbol{x}^{(0)}, \cdotsx(1)=Lx(0),x(2)=Lx(1)=L2x(0),⋯,一般有
x(k)=Lx(k−1)=Lkx(0), k=1,2,3,⋯ \boldsymbol{x}^{(k)} = \boldsymbol{L} \boldsymbol{x}^{(k - 1)} = \boldsymbol{L}^k \boldsymbol{x}^{(0)}, \; k = 1, 2, 3, \cdots x(k)=Lx(k−1)=Lkx(0),k=1,2,3,⋯
若已知初始时种群数量分布向量 x(0)\boldsymbol{x}^{(0)}x(0),则可以推算任一时刻 tkt_ktk 该种群数量分布向量,并以此对该种群的总量进行科学的分析。
例 8.6 某种雌性动物的最大生存年龄为 15 年,以 5 年为一间隔,把这一动物种群分为三个年龄组 [0,5),[5,10),[10,15][0, 5), [5, 10), [10, 15][0,5),[5,10),[10,15],利用统计资料,已知 a1=0,a2=4,a3=3;b1=0.5,b2=0.25a_1 = 0, a_2 = 4, a_3 = 3; b_1 = 0.5, b_2 = 0.25a1=0,a2=4,a3=3;b1=0.5,b2=0.25。在初始时刻 t=0t = 0t=0 时,三个年龄组的雌性动物个数分别为 500, 1000, 500,则初始种群数量分布向量和莱斯利矩阵分别为
x(0)=[500,1000,500]T,L=[0430.50000.250]
\boldsymbol{x}^{(0)} = [500, 1000, 500]^{\text{T}}, \quad \boldsymbol{L} = \begin{bmatrix} 0 & 4 & 3 \\ 0.5 & 0 & 0 \\ 0 & 0.25 & 0 \end{bmatrix}
x(0)=[500,1000,500]T,L=00.50400.25300
于是
x(1)=Lx(0)=[0430.50000.250][5001000500]=[5500250250] \boldsymbol{x}^{(1)} = \boldsymbol{L} \boldsymbol{x}^{(0)} = \begin{bmatrix} 0 & 4 & 3 \\ 0.5 & 0 & 0 \\ 0 & 0.25 & 0 \end{bmatrix} \begin{bmatrix} 500 \\ 1000 \\ 500 \end{bmatrix} = \begin{bmatrix} 5500 \\ 250 \\ 250 \end{bmatrix} x(1)=Lx(0)=00.50400.253005001000500=5500250250
x(2)=Lx(1)=[0430.50000.250][5500250250]=[1750275062.5] \boldsymbol{x}^{(2)} = \boldsymbol{L} \boldsymbol{x}^{(1)} = \begin{bmatrix} 0 & 4 & 3 \\ 0.5 & 0 & 0 \\ 0 & 0.25 & 0 \end{bmatrix} \begin{bmatrix} 5500 \\ 250 \\ 250 \end{bmatrix} = \begin{bmatrix} 1750 \\ 2750 \\ 62.5 \end{bmatrix} x(2)=Lx(1)=00.50400.253005500250250=1750275062.5
x(3)=Lx(2)=[0430.50000.250][1750275062.5]=[11187.5875687.5]
\boldsymbol{x}^{(3)} = \boldsymbol{L} \boldsymbol{x}^{(2)} = \begin{bmatrix} 0 & 4 & 3 \\ 0.5 & 0 & 0 \\ 0 & 0.25 & 0 \end{bmatrix} \begin{bmatrix} 1750 \\ 2750 \\ 62.5 \end{bmatrix} = \begin{bmatrix} 11187.5 \\ 875 \\ 687.5 \end{bmatrix}
x(3)=Lx(2)=00.50400.253001750275062.5=11187.5875687.5
为了分析当 k→∞k \to \inftyk→∞ 时,该动物种群数量分布向量的特点,先求出矩阵 L\boldsymbol{L}L 的特征值与特征向量,为此计算 L\boldsymbol{L}L 的特征多项式:
∣λE−L∣=∣λ−4−3−0.5λ00−0.25λ∣=(λ−32)(λ2+32λ+14), |\lambda \boldsymbol{E} - \boldsymbol{L}| = \begin{vmatrix} \lambda & -4 & -3 \\ -0.5 & \lambda & 0 \\ 0 & -0.25 & \lambda \end{vmatrix} = \left( \lambda - \frac{3}{2} \right) \left( \lambda^2 + \frac{3}{2} \lambda + \frac{1}{4} \right), ∣λE−L∣=λ−0.50−4λ−0.25−30λ=(λ−23)(λ2+23λ+41),
可得 L\boldsymbol{L}L 的特征值 λ1=32,λ2=−3+54,λ3=−3−54\lambda_1 = \frac{3}{2}, \lambda_2 = \frac{-3 + \sqrt{5}}{4}, \lambda_3 = \frac{-3 - \sqrt{5}}{4}λ1=23,λ2=4−3+5,λ3=4−3−5,不难看出 λ1\lambda_1λ1 是矩阵 L\boldsymbol{L}L 的唯一正特征值,且 ∣λ1∣>∣λ2∣,∣λ1∣>∣λ3∣|\lambda_1| > |\lambda_2|, |\lambda_1| > |\lambda_3|∣λ1∣>∣λ2∣,∣λ1∣>∣λ3∣。L\boldsymbol{L}L 有 3 个互异特征值,因此矩阵 L\boldsymbol{L}L 可相似对角化。
设矩阵 L\boldsymbol{L}L 属于特征值 λi(i=1,2,3)\lambda_i (i = 1, 2, 3)λi(i=1,2,3) 的特征向量为 αi\boldsymbol{\alpha}_iαi。不难计算 L\boldsymbol{L}L 属于特征值 λ1=32\lambda_1 = \frac{3}{2}λ1=23 的特征向量为 α1=[18,6,1]T\boldsymbol{\alpha}_1 = [18, 6, 1]^{\text{T}}α1=[18,6,1]T,记矩阵 P=[α1,α2,α3],Λ=diag(λ1,λ2,λ3)\boldsymbol{P} = [\boldsymbol{\alpha}_1, \boldsymbol{\alpha}_2, \boldsymbol{\alpha}_3], \boldsymbol{\Lambda} = \text{diag}(\lambda_1, \lambda_2, \lambda_3)P=[α1,α2,α3],Λ=diag(λ1,λ2,λ3),则
P−1LP=Λ或L=PΛP−1 \boldsymbol{P}^{-1} \boldsymbol{L} \boldsymbol{P} = \boldsymbol{\Lambda} \quad \text{或} \quad \boldsymbol{L} = \boldsymbol{P} \boldsymbol{\Lambda} \boldsymbol{P}^{-1} P−1LP=Λ或L=PΛP−1
Lk=PΛkP−1\boldsymbol{L}^k = \boldsymbol{P} \boldsymbol{\Lambda}^k \boldsymbol{P}^{-1}Lk=PΛkP−1,于是
x(k)=Lkx(0)=PΛkP−1x(0)=λ1kP[1000(λ2/λ1)k000(λ3/λ1)k]P−1x(0) \boldsymbol{x}^{(k)} = \boldsymbol{L}^k \boldsymbol{x}^{(0)} = \boldsymbol{P} \boldsymbol{\Lambda}^k \boldsymbol{P}^{-1} \boldsymbol{x}^{(0)} = \lambda_1^k \boldsymbol{P} \begin{bmatrix} 1 & 0 & 0 \\ 0 & \left( \lambda_2 / \lambda_1 \right)^k & 0 \\ 0 & 0 & \left( \lambda_3 / \lambda_1 \right)^k \end{bmatrix} \boldsymbol{P}^{-1} \boldsymbol{x}^{(0)} x(k)=Lkx(0)=PΛkP−1x(0)=λ1kP1000(λ2/λ1)k000(λ3/λ1)kP−1x(0)
即
1λ1kx(k)=P[1000(λ2/λ1)k000(λ3/λ1)k]P−1x(0) \frac{1}{\lambda_1^k} \boldsymbol{x}^{(k)} = \boldsymbol{P} \begin{bmatrix} 1 & 0 & 0 \\ 0 & \left( \lambda_2 / \lambda_1 \right)^k & 0 \\ 0 & 0 & \left( \lambda_3 / \lambda_1 \right)^k \end{bmatrix} \boldsymbol{P}^{-1} \boldsymbol{x}^{(0)} λ1k1x(k)=P1000(λ2/λ1)k000(λ3/λ1)kP−1x(0)
因为 ∣λ2λ1∣<1,∣λ3λ1∣<1\left| \frac{\lambda_2}{\lambda_1} \right| < 1, \left| \frac{\lambda_3}{\lambda_1} \right| < 1λ1λ2<1,λ1λ3<1,所以
limk→∞1λ1kx(k)=Pdiag(1,0,0)P−1x(0)(8.26) \lim_{k \to \infty} \frac{1}{\lambda_1^k} \boldsymbol{x}^{(k)} = \boldsymbol{P} \text{diag}(1, 0, 0) \boldsymbol{P}^{-1} \boldsymbol{x}^{(0)} \tag{8.26} k→∞limλ1k1x(k)=Pdiag(1,0,0)P−1x(0)(8.26)
记列向量 P−1x(0)\boldsymbol{P}^{-1} \boldsymbol{x}^{(0)}P−1x(0) 的第一个元素为 ccc(常数),则式 (8.26) 可化为
limk→∞1λ1kx(k)=[α1,α2,α3][c00]=cα1
\lim_{k \to \infty} \frac{1}{\lambda_1^k} \boldsymbol{x}^{(k)} = [\boldsymbol{\alpha}_1, \boldsymbol{\alpha}_2, \boldsymbol{\alpha}_3] \begin{bmatrix} c \\ 0 \\ 0 \end{bmatrix} = c \boldsymbol{\alpha}_1
k→∞limλ1k1x(k)=[α1,α2,α3]c00=cα1
于是,当 kkk 充分大时,近似地有:
x(k)=cλ1kα1=c(32)k[1861] \boldsymbol{x}^{(k)} = c \lambda_1^k \boldsymbol{\alpha}_1 = c \left( \frac{3}{2} \right)^k \begin{bmatrix} 18 \\ 6 \\ 1 \end{bmatrix} x(k)=cλ1kα1=c(23)k1861
其中 c=225019c = \frac{2250}{19}c=192250。
这一结果说明,当时间充分长,这种动物中雌性的年龄分布将趋于稳定,即 3 个年龄组的数量比为 18:6:118:6:118:6:1。并由此可近似得到在 tkt_ktk 时刻种群中雌性动物的总量,从而对整个种群的总量进行估计。
莱斯利模型在分析动物种群的年龄分布和总量增长方面有广泛应用,这一模型也可应用于人口增长的年龄分布问题。
计算的Matlab程序如下:
clc;clear
syms k positive integer
X0=[500;1000;500];
L=[0,4,3;0.5,0,0;0,0.25,0];
L=sym(L); %转为符号矩阵
X1=L*X0,X2=L*X1,X3=L*X2
p=charpoly(L) %计算特征多项式
r=roots(p) %计算符号特征值
[P,D]=eig(L) %计算符号特征向量和特征值
XL=P*diag([1,0,0])*inv(P)*X0
tc=inv(P)*X0;c=tc(1)
参考文献
[1] 司守奎,孙玺青 数学建模算法与应用第3版[M]