1、求数列通项
(1)转化为求矩阵的幂次问题
例:求斐波那契数列的通项公式
已知斐波那契数列满足:
F
k
+
2
=
F
k
+
1
+
F
k
F_{k+2}=F_{k+1}+F_{k}
Fk+2=Fk+1+Fk
(a) 降阶:将二阶差分方程转化为一阶差分方程组
{
F
k
+
1
=
F
k
+
1
F
k
+
2
=
F
k
+
1
+
F
k
\begin{cases} F_{k+1}=F_{k+1}\\ F_{k+2}=F_{k+1}+F_{k} \end{cases}
{Fk+1=Fk+1Fk+2=Fk+1+Fk 写成矩阵形式:
a
k
+
1
=
A
a
k
k
=
0
,
1
,
2
,
.
.
.
a_{k+1}=Aa_{k}\ k=0,1,2,...
ak+1=Aak k=0,1,2,...
其中
A
=
(
0
1
1
1
)
,
a
k
=
(
F
k
F
k
+
1
)
,
a
0
=
(
1
1
)
A=\left(\begin{matrix} 0&1\\1&1 \end{matrix}\right)\ , \ a_k=\left(\begin{matrix} F_k\\F_{k+1} \end{matrix}\right)\ , \ a_0=\left(\begin{matrix} 1\\1 \end{matrix}\right)
A=(0111) , ak=(FkFk+1) , a0=(11)
推导得有:
a
k
=
A
k
a
0
a_k=A^ka_0
ak=Aka0
(b) 求矩阵的Jordan标准形
矩阵的特征方程为:
λ
2
−
λ
−
1
\lambda^2-\lambda-1
λ2−λ−1,特征根为
1
±
5
2
\frac{1\pm \sqrt5}{2}
21±5,特征向量为
,
(
1
±
5
2
1
)
\ , \ \left(\begin{matrix} \frac{1\pm \sqrt5}{2}\\1 \end{matrix}\right)
, (21±51),取特征向量为列向量构成矩阵
P
P
P
则有
A
=
P
(
1
+
5
2
0
0
1
−
5
2
)
P
−
1
A=P\left(\begin{matrix} \frac{1+ \sqrt5}{2}&0\\0&\frac{1- \sqrt5}{2} \end{matrix}\right)P^{-1}
A=P(21+50021−5)P−1
从而
a
k
=
A
k
a
0
a_k=A^ka_0
ak=Aka0,斐波那契数列的通项公式为
a
k
a_k
ak的第一行元素。
(c) python实现
import sympy as sp
sp.var('k',positive=True,integre=True)
a=sp.Matrix([[0,1],[1,1]])
val=a.eigenvals()
vec=a.eigenvects()
P,D=a.diagonalize()
ak=P@(D**k)@(P.inv())
F=ak@sp.Matrix([1,1])
print(sp.latex(sp.simplify(F[0])))
求出通项公式为:
F
k
=
2
−
k
(
2
(
1
−
5
)
k
+
5
(
1
+
5
)
k
+
3
(
1
+
5
)
k
)
5
+
5
F^k=\frac{2^{- k} \left(2 \left(1 - \sqrt{5}\right)^{k} + \sqrt{5} \left(1 + \sqrt{5}\right)^{k} + 3 \left(1 + \sqrt{5}\right)^{k}\right)}{\sqrt{5} + 5}
Fk=5+52−k(2(1−5)k+5(1+5)k+3(1+5)k)
取值:
f = sp.lambdify(k,F[0])
print(f(9))
(2)特征根法求通项
由于斐波那契数列的特征根是互异的,故可设通项为:
F
k
=
c
1
(
1
+
5
2
)
k
+
c
2
(
1
−
5
2
)
k
F_k=c_1(\frac{1+\sqrt5}{2})^k+c_2(\frac{1-\sqrt5}{2})^k
Fk=c1(21+5)k+c2(21−5)k
代入初值条件求解上述二元一次方程:
F
0
=
F
1
=
1
F_0=F_1=1
F0=F1=1
{
c
1
+
c
2
=
1
c
1
(
1
+
5
2
)
+
c
2
(
1
−
5
2
)
=
1
\begin{cases} c_1+c_2=1\\ c_1(\frac{1+\sqrt5}{2})+c_2(\frac{1-\sqrt5}{2})=1 \end{cases}
{c1+c2=1c1(21+5)+c2(21−5)=1
解得
{
c
1
=
1
2
+
5
10
c
2
=
1
2
−
5
10
\begin{cases} c1=\frac{1}{2}+\frac{\sqrt5}{10}\\c2=\frac{1}{2}-\frac{\sqrt5}{10} \end{cases}
{c1=21+105c2=21−105,从而得到通项公式。
python实现:
import sympy as sp
x=sp.symbols('x')
c=sp.symbols('c:2')
f=sp.Eq(x**2,x+1)
vals=list(sp.solveset(f))
eq1=c[0]+c[1]-1
eq2=c[0]*vals[0]+c[1]*vals[1]-1
s=sp.solve([eq1,eq2])
(3)利用rsolve函数求解有理系数单变量递推式
import sympy as sp
k=sp.symbols('k')
y=sp.Function('y')
f=y(k+2)-y(k+1)-y(k)
F=sp.rsolve(f,y(k),{y(0):1, y(1):1})
2、Leslie种群模型
Leslie模型是研究动物种群数量增长的模型,研究了种群中雌性生物的年龄分布和数量增长的规律。
仅考察雌性动物的年龄和数量:设最大生存年龄为L,把年龄区间
[
0
,
L
]
[0,L]
[0,L]等分成
n
n
n个年龄组。设第
i
i
i个年龄组的生育率为
a
i
a_i
ai,存活率为
b
i
b_i
bi。则
a
i
≥
0
,
0
<
b
i
≤
1
a_i\geq 0,0<b_i\leq 1
ai≥0,0<bi≤1
且至少有一个
a
i
>
0
a_i>0
ai>0,即至少有一个年龄组的雌性是具有生育能力的。
记第
i
i
i组的雌性动物数量在第
k
k
k个时刻的数量为
x
i
k
x_i^{k}
xik,若以年龄组的间隔
L
n
\frac{L}{n}
nL,记第
k
k
k个时刻为
t
k
=
k
L
n
t_k=\frac{kL}{n}
tk=nkL
在
t
k
t_k
tk时刻,第1个年龄组的雌性动物数量,应该该等于在
t
k
−
1
t_{k-1}
tk−1和
t
k
t_k
tk之间出生的所有雌性动物数量之和:
x
1
(
k
)
=
a
1
x
1
(
k
−
1
)
+
a
2
x
2
(
k
−
1
)
+
.
.
.
.
+
a
n
x
n
(
k
−
1
)
x_1^{(k)}=a_1x_1^{(k-1)}+a_2x_2^{(k-1)}+....+a_nx_n^{(k-1)}
x1(k)=a1x1(k−1)+a2x2(k−1)+....+anxn(k−1)
而第i个年龄组在
t
k
t_k
tk时刻的雌性动物数量,应该由在
t
k
−
1
t_{k-1}
tk−1和
t
k
t_k
tk之间存活的第i-1个年龄组的雌性动物数量决定,即:
x
i
+
1
(
k
)
=
b
i
x
i
(
k
−
1
)
x_{i+1}^{(k)}=b_ix_i^{(k-1)}
xi+1(k)=bixi(k−1)
由此可以得到线性方程组,蕴含了
t
k
−
1
t_{k-1}
tk−1和
t
k
t_k
tk之间各年龄组之间雌性动物数量的关系。
{
x
1
(
k
)
=
a
1
x
1
(
k
−
1
)
+
a
2
x
2
(
k
−
1
)
+
.
.
.
.
+
a
n
x
n
(
k
−
1
)
x
2
(
k
)
=
b
1
x
1
(
k
−
1
)
x
3
(
k
)
=
b
2
x
2
(
k
−
1
)
.
.
.
.
.
.
.
x
n
(
k
)
=
b
n
−
1
x
n
−
1
(
k
−
1
)
\begin{cases}x_1^{(k)}=a_1x_1^{(k-1)}+a_2x_2^{(k-1)}+....+a_nx_n^{(k-1)}\\ x_{2}^{(k)}=b_1x_1^{(k-1)}\\x_{3}^{(k)}=\quad \quad b_2x_2^{(k-1)} \\ .......\\x_{n}^{(k)}=\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad b_{n-1}x_{n-1}^{(k-1)}\end{cases}
⎩
⎨
⎧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)
系数矩阵记为
L
L
L,成为莱斯利矩阵,则上述线性方程组可以写成:
x
(
k
)
=
L
x
(
k
−
1
)
x^{(k)}=Lx^{(k-1)}
x(k)=Lx(k−1)
显然可推导出公式:
x
(
k
)
=
L
k
x
(
0
)
x^{(k)}=L^kx^{(0)}
x(k)=Lkx(0)
故若已知初始时刻的种群数量分布向量,就可以推出任何一个时刻的种群数量分布向量。
莱斯利模型在分析动物种群的年龄分布和总量增长方面有广泛应用,这一模型也可以应用于人口增长的年龄分布问题。
3、Pagerank算法
如果网页A有一个指向网页B的链接,则认为存在一条从顶点A到顶点B的有向边,这样就可以利用图论来研究网络的拓扑结构。
设网络对应图的邻接矩阵为
W
W
W,为了能够将网页的页面等级值平均分给该网页链接指向的网页,对
W
W
W各行向量作行归一化处理,记为矩阵
P
P
P
矩阵
P
P
P称为状态转移矩阵,它的各行向量元素之和为1。
P
T
P^T
PT的最大特征值(一定为1)所对应的归一化特征向量即为各顶点的Pagerank值。
记
W
W
W矩阵的行和为
r
i
=
∑
j
=
1
N
w
i
j
r_i=\sum\limits_{j=1}^N w_{ij}
ri=j=1∑Nwij,它给出了页面i的链出链接数。
则矩阵
P
P
P定义如下:
p
i
j
=
w
i
j
r
i
p_{ij}=\frac{w_{ij}}{r_i}
pij=riwij
P
P
P是马尔科夫链的状态转移概率矩阵。
p
i
j
p_{ij}
pij表示了从页面i跳转到页面j的概率。
求马尔科夫链的平稳分布
x
=
(
x
1
,
x
2
,
.
.
.
,
x
N
)
T
x=(x_1,x_2,...,x_N)^T
x=(x1,x2,...,xN)T,它满足:
P
T
x
=
x
,
∑
i
=
1
N
x
i
=
1
P^Tx=x\ , \ \sum\limits_{i=1}^{N}x_i=1
PTx=x , i=1∑Nxi=1
x
x
x表示在极限情况(转移次数接近于无限)下各网页被访问的概率分布,Google将其定义为各网页的Pagerank值。