线性常系数齐次递推关系学习笔记
之前写的太烂了,重新写一个
这个名字怎么来的啊
以斐波那契数列\(\{f_n\}\)为例
\[\begin{aligned}
f_i &= f_{i - 1} + f_{i - 2}\\
f_1 &= 1, f_2 = 1
\end{aligned}
\]
"线性"表示没有平方项,"常系数"表示没有系数是变量
"齐次"表示没有常数项
应该是这样的
问题引入
1
求\(f_n\;\mathrm{mod}\;10^9 + 7, n \leq 2^{30}\)
这应该是最简单的了,直接矩阵快速幂
2
van了,这怎么做啊啊啊
\(\mathrm{OGF:}\)我来啦!!!
普通型生成函数自觉起座,秒了此题
设这个数列的生成函数为\(G(x)\)
由递推式:
\[\begin{aligned}
G(x) &= 233xG(x) + 666x^2G(x) + x \\
\therefore G(x) &= \frac{x}{1 - 233x - 666x^2} \\
&= \frac{x}{-666(x_1-x)(x_2-x)} \\
&= \frac{x}{-666(x_1-x_2)} \times\left(\frac{1}{x_1-x}-\frac{1}{x_2 - x}\right)\\
&= \cdots
\end{aligned}
\]
不想写了,看这个吧
好麻烦啊,怎么办啊
特征方程站了起来:
\(a_n=233a_{n-1}+666a_{n-2}\)的特征方程为
\[x^2=233x+666 \\ x^2-233x+666=0 \\ x_1=\frac{233+\sqrt{56953}}2,x_2=\frac{233-\sqrt{56953}}2 \\ \therefore a_n=\alpha x_1^n+\beta x_2^n \\ \because a_0=0,a_1=1 \\ \therefore \begin{cases} \alpha+\beta=0 \\ \alpha x_1+\beta x_2=1 \end{cases} \\ \therefore \begin{cases} \alpha=\frac1{\sqrt{56953}} \\ \beta=-\frac1{\sqrt{56953}} \end{cases} \\ \therefore a_n=\frac1{\sqrt{56953}}\left(\left(\frac{233+\sqrt{56953}}2\right)^n-\left(\frac{233-\sqrt{56953}}2\right)^n\right) \\ \because 188305837^2 \equiv 56953 \; (\text{mod}\;10^9+7) \\ \therefore a_n \equiv 233230706 \times\left(94153035^n-905847205^n\right)
\]
解决啦!!!
正题
递推关系\(a_n = f_1a_{n-1} + f_2a_{n-2} + \cdots + f_ka_{n-k}\)的特征方程为
\[x^k = f_1x^{k-1} + f_2x^{k-2} + \cdots + f_k
\]
解出来之后会有很多很多的根,对其进行分类讨论
情况一:
\(x\)是\(k\)重根,那么在通项中加入\(f(n)x^n\),其中\(f(n)\)是一个\(k-1\)次多项式,需要待定系数
情况二:
\(x_1,x_2\)是一对共轭复根\(a\pm bi\)
那么在通项中加入:
\[r^n(\alpha cos(n\theta)+\beta sin(n\theta))
\]
其中\(\mathrm{tan}\theta=\frac{b}{a},\;r=\sqrt{a^2+b^2}\)
例题
求
\[\left\lceil (a + \sqrt b) ^ n\right\rceil \% m,\ (a-1)^2 < b < a^2
\]
解:原式为
\[(a+\sqrt b)^n + (a - \sqrt b)^n
\]
是不是像情况一的时候的通项公式???
我们可以使用韦达定理还原特征方程,求出递推式,矩阵快速幂即可。
想不到还有反着推的题目吧