1. 程式人生 > >特徵多項式與常係數線性齊次遞推學習筆記

特徵多項式與常係數線性齊次遞推學習筆記

特徵多項式

定義一個大小為$ k$矩陣$ M$的特徵多項式$ P$要求滿足

$$ \sum_{i=0}^k P_iM^i=0$$

其中$ 0$是一個全$ 0$矩陣

Cayley-Hamilton定理

一個矩陣$ P$的特徵多項式為

$$P(\lambda)=|\lambda E-M|=\lambda^n+P_1\lambda^{n-1}+P_2\lambda^{n-2}+...+P_n$$

其中$ E$是單位矩陣,$ |\lambda|$表示$ \lambda$的行列式

快速求一般矩陣的特徵多項式

暴力插值+消元是$ O(n^4)$的

有$ O(n^3)$的奇妙做法

咕咕咕

常係數線性齊次遞推

就是給定轉移式$ f_i=\displaystyle\sum_{j=1}^k a_j f_{i-j}$求$ f_n$

$ n \leq 10^9 k \leq 5·10^4$

模版題

直接矩陣快速冪是$ k^3 \log n $的,顯然無法通過

這類轉移矩陣$ M$有一個非常好的性質:其特徵多項式$ P(\lambda)=\lambda^k-\lambda^{k-1}a_1-\lambda^{k-2}a_2-..-a_k$

證明

將行列式第一行展開

咕咕咕

食用方法

對於該矩陣的特徵多項式式$ P$有$ P(M)=0$

因此有$ M^k=a_1M^{k-1}+a_2M^{k-2}+..+a_k$

這意味著我們可以通過降次將$ M^n$轉化成$ b_0+b_1M+b_2M^2+..+b_kM^k$

我們令$ M^n$的係數多項式為$ b$

顯然矩陣的乘積等價於對應係數多項式的乘積

即設$ M^x$的係數多項式為$ a$,$ M^y$的係數多項式為$ b$

則$ M^{x+y}$的係數多項式為$ a*b$

初始令$ M$的係數多項式為$ \{0,1,0,0..0\}$然後快速冪即可

誒等等..這樣求多項式快速冪的話..多項式的長度不會過長嗎..?

回到原特徵方程式,我們發現$ P(M)=0$

意味著我們可以對求出來的係數多項式進行任意的加減特徵多項式

即我們可以對特徵多項式進行取模操作,將係數多項式的長度控制在$ k+1$

計算答案

如果我們用係數多項式化出原矩陣的話複雜度還沒有優化到最優

發現我們只是要求一個向量乘上前$ k$個矩陣

而前$ k$個矩陣只有對應位置上有值

因此答案就是$ \displaystyle\sum_{i=0}^k b_if_i$

其中$ b$是$ M^n$的係數多項式的對應位係數

用多項式板子優化複雜度可以達到$ O(n \log n \log k)$