特征多项式及Cayley-Hamilton定理

大佬blog
大佬blog
大佬blog
大佬blog
上面的都没有证明
学数学的时候,可能会接触到一个叫做特征根法,特征根方程的东西,当时不觉明历。
实际上这是和线性代数中的特征多项式离不开的。
学OI的时候,可能会接触到矩阵快速幂求解常系数齐次线性递推的东西,懂了但是只会当模板用。
实际上这也和特征多项式有着紧密的联系。
言归正传。
特征多项式是指对一个 n n n阶(转移)方阵 A A A , f ( λ ) = det ⁡ ( λ I − A ) = λ N + b 1 λ N − 1 + b 2 λ N − 2 + . . . + b N − 1 λ + b N f(\lambda) = \det(\lambda I-A) = \lambda^N+b_1\lambda^{N-1}+b_2\lambda^{N-2}+...+b_{N-1}\lambda+b_N f(λ)=det(λIA)=λN+b1λN1+b2λN2+...+bN1λ+bN是一个以 λ \lambda λ为自变量的 n n n次多项式。
Cayley-Hamilton定理指的是 f ( A ) = 0 = A N + b 1 A N − 1 + b 2 A N − 2 + . . . + b N − 1 A + b N f(A) = 0 = A^N+b_1A^{N-1}+b_2A^{N-2}+...+b_{N-1}A+b_N f(A)=0=AN+b1AN1+b2AN2+...+bN1A+bN为化零多项式。为了方便记忆有一个著名的伪证: f A ( A ) = ∣ A − A I ∣ = 0 f_A(A)=∣A−AI∣=0 fA(A)=AAI=0

初中证法:
( λ I − A ) − 1 = a d j ( λ I − A ) ∣ λ I − A ∣ ( a d j 为 伴 随 矩 阵 ) (\lambda I - A) ^ {-1} = \frac {adj(\lambda I - A)}{|\lambda I - A|}(adj为伴随矩阵) (λIA)1=λIAadj(λIA)(adj)
∣ λ I − A ∣ |\lambda I - A| λIA一定非零因为 λ ∣ A ∣ \lambda ^{|A|} λA前的系数一定是 1 1 1。)
两边同时右乘 ( λ I − A ) ∣ λ I − ∣ A ∣ ∣ (\lambda I - A)|\lambda I - |A|| (λIA)λIA,令 B = a d j ( λ I − A ) , f ( λ ) = ∣ λ I − A ∣ B = adj(\lambda I - A) , f(\lambda) = |\lambda I - A| B=adj(λIA),f(λ)=λIA
那么
f ( λ ) I = B ( λ I − A ) = λ B − B A f(\lambda ) I = B(\lambda I-A) = \lambda B - BA f(λ)I=B(λIA)=λBBA
f ( λ ) I = ∑ i = 0 ∣ A ∣ a i λ i I f(\lambda)I = \sum_{i=0}^{|A|} a_i\lambda^iI f(λ)I=i=0AaiλiI
因为 B B B是伴随矩阵,其中的 λ \lambda λ次数最高为 ∣ A ∣ − 1 |A|-1 A1,我们把 B B B按照 λ \lambda λ次数分为 B 0 . . . B ∣ A ∣ − 1 B_0...B_{|A|-1} B0...BA1
B = ∑ i = 0 ∣ A ∣ − 1 B i λ i B = \sum_{i=0}^{|A|-1} B_i \lambda^i B=i=0A1Biλi
(也就是说 B i B_i Bi里面是 λ i \lambda^i λi的系数而不包含 λ \lambda λ
λ B − B A = ∑ i = 0 ∣ A ∣ − 1 B i λ i + 1 − B i A λ i = B ∣ A ∣ − 1 λ ∣ A ∣ − B 0 A + ∑ i = 1 ∣ A ∣ − 1 ( B i − 1 − B i A ) λ i \lambda B - BA = \sum_{i=0}^{|A|-1} B_i\lambda^{i+1} - B_iA\lambda ^i \\=B_{|A|-1}\lambda ^{|A|} - B_0A+\sum_{i=1}^{|A|-1} (B_{i-1} - B_iA)\lambda^i λBBA=i=0A1Biλi+1BiAλi=BA1λAB0A+i=1A1(Bi1BiA)λi
将这个式子和 f ( λ ) I f(\lambda)I f(λ)I按次数比对相等得到 ∣ A ∣ + 1 |A|+1 A+1个等式:
B ∣ A ∣ − 1 = a ∣ A ∣ I B i − 1 − B i A = a i I − B 0 A = a 0 I \begin{aligned}&B_{|A|-1} = a_{|A|}I \\ &B_{i-1}-B_{i}A = a_iI\\ &-B_0A = a_0I\end{aligned} BA1=aAIBi1BiA=aiIB0A=a0I
在第 i i i个式子的左右同乘 A ∣ A ∣ − i + 1 A^{|A|-i+1} AAi+1
a ∣ A ∣ = 1 a_{|A|} = 1 aA=1
B ∣ A ∣ − 1 A ∣ A ∣ = a ∣ A ∣ A ∣ A ∣ B i − 1 A ∣ A ∣ − 1 − B i A ∣ A ∣ = a i A ∣ A ∣ − 1 − B 0 A = a 0 I \begin{aligned}&B_{|A|-1}A^{|A|} = a_{|A|}A^{|A|} \\ &B_{i-1}A^{|A|-1}-B_{i}A^{|A|} = a_iA^{|A|-1}\\ &-B_0A = a_0I\end{aligned} BA1AA=aAAABi1AA1BiAA=aiAA1B0A=a0I
全部加起来,相邻的式子会抵消一项:
0 = ∑ i = 0 ∣ A ∣ a i A i 0 = \sum_{i=0}^{|A|} a_iA^i 0=i=0AaiAi
f ( A ) = 0 f(A) = 0 f(A)=0得证。

对于常系数线性递推
A n = ∑ i = 1 n − 1 a i A n − i A^{n}=\sum_{i=1}^{n-1}a_iA^{n-i} An=i=1n1aiAni
我们把 A A A看做变量,上面的就是方程。
我们可以把 A n A^n An换成比n次幂小的一个多项式。
就相当于 m o d    g ( A ) = ( A n − ∑ i = 1 n − 1 a i A n − i ) \mod g(A) = (A^n-\sum_{i=1}^{n-1}a_iA^{n-i}) modg(A)=(Ani=1n1aiAni)
有了模之后我们就可以把 A x m o d    g ( A ) A^x \mod g(A) Axmodg(A)拿出来算就行了。
得到 A x = ∑ i = 0 n c i A i A^x = \sum_{i=0}^nc_iA^i Ax=i=0nciAi
然后就可以 O ( n 4 ) O(n^4) O(n4)算矩阵了。
把前 n n n项构成的行向量 H 1 H_1 H1同时左乘于等式左右,可以得到:
H x + 1 = ∑ i = 0 n c i H i + 1 H_{x+1}=\sum_{i=0}^nc_iH_{i+1} Hx+1=i=0nciHi+1
现在是 O ( n 2 ) O(n^2) O(n2)
所以有:
h x + 1 = ∑ i = 0 n c i h i + 1 h_{x+1}=\sum_{i=0}^nc_ih_{i+1} hx+1=i=0ncihi+1
就可以 O ( n ) O(n) O(n)
但是不要忘了多项式模取幂是 O ( n 2 log ⁡ x ) O(n^2\log x) O(n2logx)的暴力, O ( n log ⁡ n log ⁡ x ) O(n\log n\log x) O(nlognlogx)的多项式FFT取模。
为了算一个矩阵的特征多项式,可以 O ( n 3 ) O(n^3) O(n3),也可以 O ( n 4 ) O(n^4) O(n4)求值后用BM。。。

你可能感兴趣的:(模板,多项式,数论)