二阶数列特征方程

· · 个人记录

二阶数列特征方程

作用:解决二阶线性递推式通项公式,求解第n项数列值。

时间复杂度:O(logn)

做法:给定数列中任意两项数列值和数列的二阶线性递推式,形如:

a_{n + 1} = c_{1}a_{n}+c_2a_{n - 1}

我们暂且不考虑为什么要执行接下来的操作,将其化为:

t^2 = c_1t+ c_2

合并同列项,最终化为:

t^2 - c_1t - c_2 = 0

根据一元二次方程求根公式解得:

t = \frac{c_1\pm \sqrt{c_1^2+4c_2}}{2}

这里分三种情况讨论:

第一种:t_1\ne t_2,我们将其写成:

a_n = pt_1^2 + qt_2^2

其中 p, q 是常数,我们将题目给定的两项数列值带入上面的方程,即可求解 pq 的值。

第二种: t_1 = t_2,我们将其写成:

a_n = (p + qn)t^n

同样,其中 p, q 是常数,我们将题目给定的数列值带入上面的方程,即可求解。

第三种: t_1,t_2为共轭虚根,即t = r(cos\theta\pm i\cdot sin\theta),我们将其写成:

a_n = r^n(p\cos n\theta \pm q\sin n\theta)

同样的,其中 p, q 是常数,我们将题目给定的数列值带入上面的方程,即可求解。

写出数列的通式方程,再利用快速幂在O(logn)的时间复杂度算出任意一项数列值。

举个例子,给定二阶数列

那么这里 $$t^2 = 4t - 4$$ $$\Rightarrow t^2 - 4 t + 4 = 0$$ $$\Rightarrow (t - 2)^2 = 0$$ $$t_1 = t_2 = 2$$ 我们发现这是情况2,于是写成: $$a_n = (p + q \ n)t^2$$ 也就是: $$a_n = (p + q\ n)2^n$$ 下面求$p, q$: $$\begin{cases} 2(p + q) = 1\\ 4(p + 2q) = 5 \end{cases} $$ $$\Rightarrow \begin{cases} p = -\frac{1}{4}\\ q = \frac{3}{4} \end{cases} $$ 那么,我们得出数列通项公式为: $$ a_n = (-\frac{1}{4}+\frac{3}{4}\ n)\ 2^n $$ 也就是: $$a_n = (3\ n - 1)\ 2^{n - 2}$$ 那么第12项就是$(3 \times12 \ -1)\times1024 = 35840 ω(n) = n -\left \lceil \frac{n}{2} \right \rceil-\left \lceil \frac{n}{4} \right \rceil-\left \lceil \frac{n}{8} \right \rceil-...-\left \lceil \frac{n}{2^{+∞}} \right \rceil