设函数
x
k
=
x
(
k
)
x_k=x(k)
xk=x(k),
k
k
k 取非负整数,称改变量
x
k
+
1
−
x
k
x_{k+1}-x_k
xk+1−xk 为函数
x
k
x_k
xk 的差分,也称函数
x
k
x_k
xk 的一阶差分,记
Δ
x
k
\Delta x_k
Δxk。
一阶差分的差分称二阶差分
Δ
2
x
k
\Delta^2x_k
Δ2xk,即
Δ
2
x
k
=
Δ
(
Δ
x
k
)
=
Δ
x
k
+
1
−
Δ
x
k
\Delta^2x_k=\Delta(\Delta x_k)=\Delta x_{k+1}-\Delta x_k
Δ2xk=Δ(Δxk)=Δxk+1−Δxk
=
(
x
k
+
2
−
x
k
+
1
)
−
(
x
k
+
1
−
x
k
)
=(x_{k+2}-x_{k+1})-(x_{k+1}-x_k)
=(xk+2−xk+1)−(xk+1−xk)
=
x
k
+
2
−
2
x
k
+
1
+
x
k
.
=x_{k+2}-2x_{k+1}+x_k.
=xk+2−2xk+1+xk.
类似有三阶差分、四阶差分……,记
Δ
3
x
k
=
Δ
(
Δ
2
x
k
)
,
Δ
4
x
k
=
Δ
(
Δ
3
x
k
)
,
…
\Delta^3x_k=\Delta(\Delta^2x_k),\Delta^4x_k=\Delta(\Delta^3x_k),\dots
Δ3xk=Δ(Δ2xk),Δ4xk=Δ(Δ3xk),… 含有未知函数
x
k
x_k
xk 的差分的方程称差分方程,差分方程中所含未知函数差分的最高阶数称差分方程的阶,如
n
n
n 阶差分方程形式为
F
(
k
,
x
k
,
Δ
x
k
,
Δ
2
x
k
,
…
,
Δ
n
x
k
)
=
0
,
F(k,x_k,\Delta x_k,\Delta^2x_k,\dots,\Delta^nx_k)=0,
F(k,xk,Δxk,Δ2xk,…,Δnxk)=0, 或
G
(
k
,
x
k
,
x
k
+
1
,
x
k
+
2
,
…
,
x
k
+
n
)
=
0.
G(k,x_k,x_{k+1},x_{k+2},\dots,x_{k+n})=0.
G(k,xk,xk+1,xk+2,…,xk+n)=0. 若差分方程中所含未知函数和未知函数的各阶差分均为一次的,则称线性差分方程,形式为
x
k
+
n
+
a
1
x
k
+
n
−
1
+
a
2
x
k
+
n
−
2
+
⋯
+
a
n
x
k
=
f
(
k
)
,
x_{k+n}+a_1x_{k+n-1}+a_2x_{k+n-2}+\dots+a_nx_k=f(k),
xk+n+a1xk+n−1+a2xk+n−2+⋯+anxk=f(k), 对应齐次方程
x
k
+
n
+
a
1
x
k
+
n
−
1
+
a
2
x
k
+
n
−
2
+
⋯
+
a
n
x
k
=
0.
x_{k+n}+a_1x_{k+n-1}+a_2x_{k+n-2}+\dots+a_nx_k=0.
xk+n+a1xk+n−1+a2xk+n−2+⋯+anxk=0.
常系数线性齐次差分方程的解法
对于
n
n
n 阶常系数线性齐次差分方程,特征方程为
λ
n
+
a
1
λ
n
−
1
+
⋯
+
a
n
=
0.
\lambda^n+a_1\lambda^{n-1}+\dots+a_n=0.
λn+a1λn−1+⋯+an=0. 若特征方程有
n
n
n 个互不相同的实根
λ
1
,
λ
2
,
…
,
λ
n
\lambda_1,\lambda_2,\dots,\lambda_n
λ1,λ2,…,λn,则通解为
c
1
λ
1
k
+
c
2
λ
2
k
+
⋯
+
c
n
λ
n
k
.
c_1\lambda_1^k+c_2\lambda_2^k+\dots+c_n\lambda_n^k.
c1λ1k+c2λ2k+⋯+cnλnk. 若
λ
\lambda
λ 是特征方程的
m
m
m 重实根,则通解中对应的项为
c
1
ρ
k
cos
(
φ
k
)
+
c
2
ρ
k
sin
(
φ
k
)
,
c_1\rho^k\cos(\varphi k)+c_2\rho^k\sin(\varphi k),
c1ρkcos(φk)+c2ρksin(φk),
若
λ
=
α
+
β
i
\lambda=\alpha+\beta i
λ=α+βi 是特征方程的
m
m
m 重复根,则通解中对应的项为
(
c
1
+
c
2
k
+
⋯
+
c
m
k
m
−
1
)
ρ
k
cos
(
φ
k
)
(c_1+c_2k+\dots+c_mk^{m-1})\rho^k\cos(\varphi k)
(c1+c2k+⋯+cmkm−1)ρkcos(φk)
+
(
c
m
+
1
+
c
m
+
2
k
+
⋯
+
c
2
m
k
m
−
1
)
ρ
k
sin
(
φ
k
)
.
+(c_{m+1}+c_{m+2}k+\dots+c_{2m}k^{m-1})\rho^k\sin(\varphi k).
+(cm+1+cm+2k+⋯+c2mkm−1)ρksin(φk).
例子
求斐波那契数列
{
F
n
=
F
n
−
1
+
F
n
−
2
,
F
1
=
F
2
=
1.
\left\{\begin{aligned} &F_n=F_{n-1}+F_{n-2},\\ &F_1=F_2=1. \end{aligned}\right.
{Fn=Fn−1+Fn−2,F1=F2=1. 的解。
有特征方程
λ
2
−
λ
−
1
=
0.
\lambda^2-\lambda-1=0.
λ2−λ−1=0. 解得
λ
1
=
1
−
5
2
,
λ
2
=
1
+
5
2
\lambda_1=\frac{1-\sqrt5}{2},\lambda_2=\frac{1+\sqrt5}{2}
λ1=21−5,λ2=21+5 互异,通解为
F
n
=
c
1
(
1
−
5
2
)
n
+
c
2
(
1
+
5
2
)
n
.
F_n=c_1(\frac{1-\sqrt5}{2})^n+c_2(\frac{1+\sqrt5}{2})^n.
Fn=c1(21−5)n+c2(21+5)n. 又
F
1
=
F
2
=
1
F_1=F_2=1
F1=F2=1,解得
c
1
=
−
5
5
,
c
2
=
5
5
c_1=-\frac{\sqrt5}{5},c_2=\frac{\sqrt5}{5}
c1=−55,c2=55,代入得
F
n
=
5
5
[
(
1
+
5
2
)
n
−
c
2
(
1
−
5
2
)
n
]
.
F_n=\frac{\sqrt5}{5}[(\frac{1+\sqrt5}{2})^n-c_2(\frac{1-\sqrt5}{2})^n].
Fn=55[(21+5)n−c2(21−5)n].
常系数线性非齐次差分方程的解法
若
x
k
x_k
xk 为齐次方程的通解,
x
k
∗
x_k^*
xk∗ 为非齐次方程的特解,则非齐次方程的通解为
x
k
+
x
k
∗
x_k+x_k^*
xk+xk∗。
求特解一般用常数变易法,特殊情况也可采用待定系数法。
典型模型
Leslie 模型
考虑对人口进行分组,为简单起见只考虑女性人口,将女性人口按年龄划分称
m
m
m 个年龄组。将时间离散为时段
t
k
,
k
=
1
,
2
,
…
t_k,k=1,2,\dots
tk,k=1,2,…
记时段
t
k
t_k
tk 第
i
i
i 年龄组的种群数量为
x
i
(
k
)
,
i
=
1
,
2
,
…
,
m
x_i(k),i=1,2,\dots,m
xi(k),i=1,2,…,m,繁殖率为
α
i
\alpha_i
αi,死亡率为
d
i
d_i
di,
β
i
=
1
−
d
i
\beta_i=1-d_i
βi=1−di 称存活率。
第一年龄组种群数量是时段
t
k
t_k
tk 各年龄组繁殖数量之和,即
x
1
(
k
+
1
)
=
∑
i
=
1
m
α
i
x
i
(
k
)
,
x_1(k+1)=\sum_{i=1}^m\alpha_ix_i(k),
x1(k+1)=i=1∑mαixi(k),
t
k
+
1
t_{k+1}
tk+1 时段第
i
+
1
i+1
i+1 年龄组的种群数量是
t
k
t_k
tk 时段第
i
i
i 年龄组存活下来的数量,即
x
i
+
1
(
k
+
1
)
=
β
i
x
i
(
k
)
,
i
=
1
,
2
,
…
,
m
−
1.
x_{i+1}(k+1)=\beta_ix_i(k),i=1,2,\dots,m-1.
xi+1(k+1)=βixi(k),i=1,2,…,m−1. 记
t
k
t_k
tk 时段种群各年龄组的分布向量
X
(
k
)
=
(
x
1
(
k
)
x
2
(
k
)
⋮
x
m
(
k
)
)
,
X(k)=\begin{pmatrix} x_1(k)\\ x_2(k)\\ \vdots\\ x_m(k) \end{pmatrix},
X(k)=⎝⎜⎜⎜⎛x1(k)x2(k)⋮xm(k)⎠⎟⎟⎟⎞, 记
L
=
(
α
1
α
2
…
α
m
−
1
α
m
β
1
0
…
0
0
0
β
2
…
0
0
⋮
⋮
⋱
⋮
⋮
0
0
…
β
m
−
1
0
)
,
L=\begin{pmatrix} \alpha_1&\alpha_2&\dots&\alpha_{m-1}&\alpha_m\\ \beta_1&0&\dots&0&0\\ 0&\beta_2&\dots&0&0\\ \vdots&\vdots&\ddots&\vdots&\vdots\\ 0&0&\dots&\beta_{m-1}&0 \end{pmatrix},
L=⎝⎜⎜⎜⎜⎜⎛α1β10⋮0α20β2⋮0………⋱…αm−100⋮βm−1αm00⋮0⎠⎟⎟⎟⎟⎟⎞, 则
X
(
k
+
1
)
=
L
X
(
k
)
,
k
=
0
,
1
,
…
X(k+1)=LX(k),k=0,1,\dots
X(k+1)=LX(k),k=0,1,… 当
t
0
t_0
t0 时段各年龄组人数
X
(
0
)
X(0)
X(0) 已知,就可以求得
t
k
t_k
tk 时段按年龄组的分布向量
X
(
k
)
=
L
k
X
(
0
)
,
k
=
0
,
1
,
…
X(k)=L^kX(0),k=0,1,\dots
X(k)=LkX(0),k=0,1,… 由此算出种群总量。
离散阻滞增长模型
又称离散 Logistic 模型。
Δ
x
k
=
r
x
k
(
1
−
x
k
N
)
,
k
=
0
,
1
,
2
,
…
\Delta x_k=rx_k(1-\frac{x_k}{N}),k=0,1,2,\dots
Δxk=rxk(1−Nxk),k=0,1,2,… 其中
r
r
r 为固有增长率,
N
N
N 为最大容量。上式可化为
x
k
+
1
−
x
k
x
k
=
r
(
1
−
x
k
N
)
,
k
=
0
,
1
,
2
,
…
\frac{x_{k+1}-x_k}{x_k}=r(1-\frac{x_k}{N}),k=0,1,2,\dots
xkxk+1−xk=r(1−Nxk),k=0,1,2,… 当
x
=
0
x=0
x=0 时,增长率为
r
r
r,随着
x
x
x 增加,增长率逐渐减小,直到
x
=
N
x=N
x=N 时,增长率为 0。
染色体遗传模型
如果某遗传特征由两个基因 A 和 a 控制,就有三种基因对 AA, Aa, aa。不同基因对结合,后代从父体、母体内分别取得一个基因构成新的基因对。
如父体为 AA,母体为 Aa,则后代从父体必获得 A,从母体获得 A 或 a 的概率分别为 1/2,构成新的基因对 AA 或 Aa 的概率分别为 1/2。
父体-母体/后代
AA*AA
AA*Aa
AA*aa
Aa*Aa
Aa*aa
aa*aa
AA
1
1/2
0
1/4
0
0
Aa
0
1/2
1
1/2
1/2
0
aa
0
0
0
1/4
1/2
1
令
a
n
,
b
n
,
c
n
a_n,b_n,c_n
an,bn,cn 表示第
n
n
n 代植物基因型为 AA, Aa, aa 的植物占植物总数的百分率,令
x
(
0
)
=
(
a
0
,
b
0
,
c
0
)
T
x^{(0)}=(a_0,b_0,c_0)^T
x(0)=(a0,b0,c0)T 表示初始分布。
选用 AA 型植物与其他植物结合。由于 AA 与 AA 结合必为 AA,AA 与 Aa 结合为 AA 的可能性为 1/2,AA 与 aa 结合不可能为 AA,得
a
n
=
1
a
n
−
1
+
1
2
b
n
−
1
+
0
c
n
−
1
,
a_n=1a_{n-1}+\frac12b_{n-1}+0c_{n-1},
an=1an−1+21bn−1+0cn−1, 同理有
b
n
=
1
2
b
n
−
1
+
c
n
−
1
,
b_n=\frac12b_{n-1}+c_{n-1},
bn=21bn−1+cn−1,
c
n
=
0.
c_n=0.
cn=0.
记
M
=
(
1
1
/
2
0
0
1
/
2
1
0
0
0
)
M=\begin{pmatrix} 1&1/2&0\\ 0&1/2&1\\ 0&0&0 \end{pmatrix}
M=⎝⎛1001/21/20010⎠⎞ 则有
x
(
n
)
=
M
x
(
n
−
1
)
,
n
=
1
,
2
,
…
x^{(n)}=Mx^{(n-1)},n=1,2,\dots
x(n)=Mx(n−1),n=1,2,… 即
x
(
n
)
=
M
n
x
(
0
)
.
x^{(n)}=M^nx^{(0)}.
x(n)=Mnx(0). 在这种情况下,
a
n
→
1
,
b
n
→
0
,
c
n
→
0
a_n\to1,b_n\to0,c_n\to0
an→1,bn→0,cn→0。
若选用相同基因型植物相结合,则
M
=
(
1
1
/
4
0
0
1
/
2
0
0
1
/
4
1
)
M=\begin{pmatrix} 1&1/4&0\\ 0&1/2&0\\ 0&1/4&1 \end{pmatrix}
M=⎝⎛1001/41/21/4001⎠⎞ 此时
a
n
→
a
0
+
1
2
b
0
,
b
n
→
0
,
c
n
→
c
0
+
1
2
b
0
.
a_n\to a_0+\frac12b_0,b_n\to0,c_n\to c_0+\frac12b_0.
an→a0+21b0,bn→0,cn→c0+21b0.
Python 代码
解差分方程
对常系数线性齐次差分方程的解法的例子求解,代码如下:
#! /usr/bin/env python# -*- coding: utf-8 -*-# @ author: Koorye# @ date: 2021-7-28# @ function: 使用 sympy 求解差分方程# %%import numpy as np
import sympy as sp
# %%# 定义方程
x = sp.symbols('x')
y = sp.Function('y')
f = y(x+2)- y(x+1)- y(x)
con ={
y(1):1,
y(2):1,}# 解递归方程
solve = sp.rsolve(f, y(x), con)
solve
# %%# 画图
x1 = np.linspace(1,10,10)
y1 =[]for each in x1:
y1.append((solve.subs(x,each).evalf()))
y1
import matplotlib.pyplot as plt
plt.plot(x1,y1)
plt.scatter(x1,y1)