码迷,mamicode.com
首页 > 其他好文 > 详细

特征多项式 与 常系数线性齐次递推

时间:2020-05-24 11:31:30      阅读:42      评论:0      收藏:0      [点我收藏+]

标签:class   strong   use   数列   problem   span   十分   方法   https   

特征多项式

约定:

\(I_n\)\(n\)阶单位矩阵,即主对角线是\(1\)\(n\)阶矩阵

一个矩阵\(A\)\(|A|\)\(A\)的行列式


定义

对于一个\(n\)阶的矩阵\(A\),它的特征多项式

\(p(\lambda)=|\lambda I_n-A|\)

\(\lambda\)定义域不止是\(\R\),还可以是矩阵

\(p(\lambda)\)是关于$\lambda \(的一个\)n+1$次多项式

\(p(\lambda )=\sum_1^{n+1}a_ix^i\)


Cayley-Hamilton定理

\(p(A)=0\)

即带入原来的矩阵得到的答案是一个全\(0\)矩阵


求解特征多项式

带入\(n+1\)个数,求出得\(|x I_n-A|\),得到\(n+1\)个矩阵,通过高斯消元可以\(O(n^3)\)地求出行列式

然后可\(O(n^2)\)拉格朗日插值求出原来的多项式

总复杂度\(O(n^4)\)


特征多项式求解矩阵\(k\)次幂

由于\(p(A)=0\)

所以\(\forall i, p(A)A^i=0\)

\(A^k=\sum_0^k w_i A^i\)

\(w_i\)构成了了一个\(k+1\)次多项式\(F(x)\)

显然一种合法的表示是\(F(x)=x^k\)

\(\because p(A)=0 \therefore \forall i, p(A)A^i=0\)

\(\therefore F(x) \Leftrightarrow F(x)\mod p(x)\)

也就是我们要求出\(x^k\)对于\(p(x)\)这个\(n+1\)多项式取模

显然可以通过类似快速幂的方式倍增求解这个多项式,每次对\(p(x)\)取模复杂度是\(O(n\log n)\)

就能在\(O(n\log m\log n)\)时间得求出\(F(x)\)

如果能快速得到\(A^0,A^1,\cdots,A^n\)

那么就可以快速求出\(A_k\)

可以认为这个复杂度是受限于求解\(A^0,A^1,\cdots,A^n\)\(O(n^4)\)

而一般的矩阵快速幂是\(O(n^3\log k)\)

所以也只是在\(k\)极大时有用吧

但是如果并不需要知道整个矩阵的答案,并且\(A^1,A^2,\cdots,A^n\)特殊,这个方法就十分有效


特征多项式求解 常系数线性齐次递推

问题是要求数列\(f_i=\sum _{j=1}^{n}a_j\cdot f_{i-j}\)

给出\(f_1,f_2,\cdots,f_{n}\),求第\(k\)项的值

我们的转移矩阵是(\(n=4\)时)

1 2 3 4
1 \(a_4\)
2 1 \(a_3\)
3 1 \(a_2\)
4 1 \(a_1\)

那么\(\lambda I_n-A=\)

1 2 3 4
1 \(\lambda\) \(-a_4\)
2 $-1 $ \(\lambda\) \(-a_3\)
3 \(-1\) \(\lambda\) \(-a_2\)
4 \(-1\) \(\lambda -a_1\)

带入行列式最暴力的求法

枚举一个排列\(p_i\),设排列\(p\)的逆序对为\(f(p)\)\(|A|=\sum (-1)^{f(p)} \Pi A_{i,p_i}\)

实际上合法的排列只有\(n\)个,就是

枚举\(p_i=n\)

那么\(p_j=\left\{\begin{aligned} j && j<i \\ n && j=i \\ j-1 && j> i\end{aligned}\right.\)

\(i=n\)时,\((-1)^{f(p)} \Pi A_{i,p_i}=\lambda ^n-a_1\lambda ^{n-1}\)

\(i>1\)时,

\(f(p)=n-i\)

\(\Pi A_{i,p_i}=(-1)^{n-i+1}\lambda^i\cdot a_{n-i+1}\)

\((-1)^{f(p)} \Pi A_{i,p_i}=-\lambda^i a_{n-i+1}\)

综上:

\(|\lambda I_n-A|=\lambda^n-a_1\lambda^{n-1} -a_2\lambda^{n-2} -\cdots -a^n\)

假设有一个\(f_0\)这一项(不需要知道是多少),那么设初始矩阵为\(S=(f_0,f_1,\cdots ,f_{n-1})\)

这个问题,我们要求的是\(S\cdot A^k\)的第\(n\)项,不需要知道整个矩阵

带入上一个框内求出的\(F(x)\)

\(S\cdot A^k=\sum_1^{n}[x^i]{F(x)}S\cdot A^i\)

\(S\cdot A^i\)的第\(n\)项就是\(f_1,f_2,\cdots,f_n\)

求解这个表达式是\(O(n\log n\log k)\)的,求完直接带入即可

用最朴素的\(\text{NTT}\),完全不卡常,甚至过不掉模板题

特征多项式 与 常系数线性齐次递推

标签:class   strong   use   数列   problem   span   十分   方法   https   

原文地址:https://www.cnblogs.com/chasedeath/p/12949896.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!