数模竞赛-线性代数模型
数模竞赛-线性代数模型
特征值&特征向量
差分方程-Fibonacci数列
化为一阶差分方程组:
$$
\begin{cases}
\displaylines{
F_{k+1}=F_{k+1},\\
F_{k+2}=F_{k+1}+F_k,
}
\end{cases}k=0,1,2,\cdots
$$
写成矩阵形式:
$$
\alpha_{k+1}=A\alpha_{k}
$$
其中:
$$
A=\left[
\begin{matrix}
\displaylines{
0&1\\
1&1
}
\end{matrix}
\right],
\alpha_k=\left[
\begin{matrix}
\displaylines{
F_k\\
F_{k+1}
}
\end{matrix}
\right],
\alpha_0=\left[
\begin{matrix}
\displaylines{
1\\1
}
\end{matrix}
\right]
$$
由递推式得:
$$
\alpha_k=A^k\alpha_0,k=1,2,3,\cdots
$$
设特征值为$\lambda_1,\lambda_2$,矩阵$P$为特征向量矩阵,即:
$$
A^k=P\left[
\begin{matrix}
\displaylines{
\lambda_1^k&0\\
0&\lambda_2^k
}
\end{matrix}
\right]P^{-1}
$$
则:
$$
a_k=A^k\left[
\begin{matrix}
\displaylines{
1\\1
}
\end{matrix}
\right]
$$
代码:
1 | import sympy |
求特征根:
$$
|\lambda E-A|=\lambda^2-\lambda-1
$$
俩根互异,特征根可知,通解为:
$$
F_k=c_1\lambda_1^k+c_2\lambda_2^k
$$
求$c_1,c_2$,即:
$$
\begin{cases}
\displaylines{
c_1+c_2=1,\\
c_1\lambda_1+c_2\lambda_2=1
}
\end{cases}
$$
代码:
1 | import sympy |
或者直接尝试求解通项公式:
1 | import sympy |
Leslie种群模型
在某动物种群中,仅考查雌性动物的年龄和数量,设雌性动物的最大生存年龄为$L$,把$[0,L]$等分为$n$个年龄组:
$$
\left[0,\dfrac{L}{n}\right),\left[\dfrac{L}{n},\dfrac{2L}{n}\right),\cdots,\left[\dfrac{n-1}{n}L,L\right]
$$
设第$i$个年龄组的生育率为$a_i$,存活率为$b_i$,记$x_i^{0}$为$t=0$时第$i$个年龄组雌性动物的数量,得到初始时刻种群数量分布向量:
$$
x^{(0)}=\left[x_1^{(0)},x_2^{(0)},\cdots,x_n^{(0)}\right]^{\mathrm T}
$$
则第$1$个年龄组为:
$$
x_1^{(k)}=\sum_{i=1}^na_ix_i^{(k-1)}
$$
其他年龄组则生存率:
$$
x_{i+1}^{(k)}=b_ix_i^{(k-1)}
$$
记Leslie矩阵:
$$
L=\left[
\begin{matrix}
\displaylines{
a_1&a_2&\cdots&a_{n-1}&a_n\\
b_1&0&\cdots&0&0\\
0&b_2&\cdots&0&0\\
\vdots&\vdots&&\vdots&\vdots\\
0&0&\cdots&b_{n-1}&0
}
\end{matrix}
\right]
$$
一般有$x^{(k)}=Lx^{(k-1)}=L^kx^{(0)}$。
例题:某动物雌性最大年龄为$15$年,$5$年为一间隔,分成$3$个年龄组,已知$a_1=0,a_2=4,a_3=3,b_1=0.5,b_2=0.25$,在$t=0$时雌性动物数量为$500,1000,500$。
即:
$$
x^{(0)}=\left[500,1000,500\right]^{\mathrm{T}},L=\left[
\begin{matrix}
\displaylines{
0&4&3\\
0.5&0&0\\
0&0.25&0
}
\end{matrix}
\right]
$$
于是有$x^{(i)}=Lx^{(i-1)}$,求特征值$\mid\lambda E-L\mid=0$得$\lambda_1,\lambda_2,\lambda_3$,对应特征向量为$\alpha_1,\alpha_2,\alpha_3$,记矩阵$P=\left[\alpha_1,\alpha_2,\alpha_3\right],\Lambda=\operatorname{diag}(\lambda_1,\lambda_2,\lambda_3)$,则$L=P\Lambda P^{-1}$,于是有$x^{(k)}=L^kx^{(0)}$,即
$$
\dfrac{1}{\lambda_1^k}x^{(k)}=P\left[
\begin{matrix}
\displaylines{
1&0&0\\
0&\left(\dfrac{\lambda_2}{\lambda_1}\right)^k&0\\
0&0&\left(\dfrac{\lambda_3}{\lambda_1}\right)^k
}
\end{matrix}
\right]
$$
因$\displaystyle\left|\dfrac{\lambda_2}{\lambda_1}\right|<1,\left|\dfrac{\lambda_3}{\lambda_1}\right|<1$,有:
$$
\lim_{k\rightarrow\infty}\dfrac{1}{\lambda_1^k}=P\operatorname{diag}(1,0,0)P^{-1}x^{(0)}
$$
于是当$k$充分大,近似成立:
$$
x^{(k)}=\dfrac{2250}{19}\left(\dfrac{3}{2}\right)^k\left[
\begin{matrix}
\displaylines{
18\\6\\1
}
\end{matrix}
\right]
$$
其中$c=\dfrac{2250}{19}$为列向量$P^{-1}x^{(0)}$的第一个元素。
代码:
1 | import numpy,sympy |
奇异值分解
有$A=(a_{ij})_{m\times n},\operatorname{rank}(A)=r$,存在正交矩阵$U,V$,使得:
$$
U^{\mathrm T}AV=\left[
\begin{matrix}
\displaylines{
\Sigma&0\
0&0
}
\end{matrix}
\right]
$$
其中$\Sigma=\operatorname{diag}{\sigma_1,\sigma_2,\cdots,\sigma_r},\sigma_1\geqslant\sigma_2\geqslant\cdots\geqslant\sigma_r>0$,且$\sigma_1^2,\sigma_2^2,\cdots,\sigma^2_r$为矩阵$A^{\mathrm T}A$的正特征值。
称下式为$A$的奇异值分解,$\sigma_i,i=1,2,\cdots,r$为$A$的奇异值。
$$
A=U\left[
\begin{matrix}
\displaylines{
\Sigma&0\
0&0
}
\end{matrix}
\right]V^{\mathrm T}
$$
矩阵的F范数定义为:
$$
\begin{Vmatrix}A\end{Vmatrix}^2_{\mathrm F}=\operatorname{tr}\left(A^{\mathrm T}A\right)=\sum_{i=1}^m\sum_{j=1}^na_{ij}^2=\sum_{i=1}^r\sigma_i^2
$$
例题1:
求矩阵$A$的奇异值分解。
$$
A=\left[
\begin{matrix}
\displaylines{
1&0&1\
0&1&1\
0&0&0
}
\end{matrix}
\right]
$$
代码:
1 | import numpy |