初探常系数齐次线性递推
常系数齐次线性递推
定义
设有数列a0,a1,a2,⋯,an满足线性关系,
an=i=1∑kan−i×fi
则称这个数列满足k阶齐次线性递推关系。
矩阵乘法
设有一个满足齐次线性递推关系的数列a, 满足上述定义,现在求an。
假设现在维护一个列矩阵,行数为k,
A=⎝⎜⎜⎜⎜⎜⎛anan−1⋯an−k+2an−k+1⎠⎟⎟⎟⎟⎟⎞
设
M=⎝⎜⎜⎜⎜⎜⎛f110⋯0f201⋯0f300⋯0⋯⋯⋯⋯0fk−200⋯1fk−100⋯0⎠⎟⎟⎟⎟⎟⎞
就可得
⎝⎜⎜⎜⎜⎜⎛f110⋯0f201⋯0f300⋯0⋯⋯⋯⋯0fk−200⋯1fk−100⋯0⎠⎟⎟⎟⎟⎟⎞×⎝⎜⎜⎜⎜⎜⎛an−1an−2⋯an−k+1an−k⎠⎟⎟⎟⎟⎟⎞=⎝⎜⎜⎜⎜⎜⎛anan−1⋯an−k+2an−k+1⎠⎟⎟⎟⎟⎟⎞
接下来用矩阵快速幂就可以做到O(k3log2n)了
⎝⎜⎜⎜⎜⎜⎛f110⋯0f201⋯0f300⋯0⋯⋯⋯⋯0fk−200⋯1fk−100⋯0⎠⎟⎟⎟⎟⎟⎞n×⎝⎜⎜⎜⎜⎜⎛ak−1ak−2⋯a1a0⎠⎟⎟⎟⎟⎟⎞=⎝⎜⎜⎜⎜⎜⎛an+k−1an+k−2⋯an+1an⎠⎟⎟⎟⎟⎟⎞
特征多项式
咕咕咕。