【python数学建模】特征值与特征向量运用

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±5 1),取特征向量为列向量构成矩阵 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+5 00215 )P1
从而 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 +52k(2(15 )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(215 )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(215 )=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+105 c2=21105 ,从而得到通项公式。

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 ai0,0<bi1
且至少有一个 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} tk1 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(k1)+a2x2(k1)+....+anxn(k1)
而第i个年龄组在 t k t_k tk时刻的雌性动物数量,应该由在 t k − 1 t_{k-1} tk1 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(k1)
由此可以得到线性方程组,蕴含了 t k − 1 t_{k-1} tk1 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(k1)+a2x2(k1)+....+anxn(k1)x2(k)=b1x1(k1)x3(k)=b2x2(k1).......xn(k)=bn1xn1(k1)
系数矩阵记为 L L L,成为莱斯利矩阵,则上述线性方程组可以写成:
x ( k ) = L x ( k − 1 ) x^{(k)}=Lx^{(k-1)} x(k)=Lx(k1)
显然可推导出公式:
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=1Nwij,它给出了页面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=1Nxi=1
x x x表示在极限情况(转移次数接近于无限)下各网页被访问的概率分布,Google将其定义为各网页的Pagerank值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值