【模板】常系数线性递推

问题描述

求一个满足 $K$ 阶齐次线性递推数列 $a_i$ 的第 $n$ 项,即:$a_n = \sum_{i=1}^k f_i \times a_{n-i}$.

分析

首先写成矩阵快速幂

$$\left( \begin{bmatrix} f_1 &f_2 &f_3 &f_4 & \cdots &f_{k-2} &f_{k-1} \\ 1 &0 &0 &0 & \cdots &0 &0 \\ 0 &1 &0 &0 & \cdots &0 &0\\ \cdots & \cdots& \cdots & \cdots & \cdots & \cdots & \cdots\\ 0 &0 &0 &0 & \cdots &1 &0 \end{bmatrix} \right) ^n \times \begin{bmatrix} a_{k-1} \\ a_{k-2} \\ \cdots \\ a_{1} \\ a_{0}\end{bmatrix} =\begin{bmatrix} a_{n+k-1} \\ a_{n+k-2} \\ \cdots \\ a_{n+1} \\ a_{n}\end{bmatrix}$$

所以我们只需要算出 $M^N \times A$,然后取最后一个数即可。

使用矩阵快速幂,复杂度 $O(k^3 \log_2n)$.

Carlay-Hamilton定理

设有 $k$ 个特征值的矩阵 $A$的特征多项式为 $f(\lambda ) =\prod_{i=1}^k(\lambda_i - x)$,则有 $f(A) = 0$,$0$  为零矩阵。

猜你喜欢

转载自www.cnblogs.com/lfri/p/11236711.html