参考文章
ruanxingzhi
引入
对于一些递推式,我们常常会有关于求数列某一项的问题,如果我们能推出其通项公式,那么问题就会变得更好解决,特征方程就是一个有力的工具。
相关定义及引理
我们定义对于数列
fn
递推关系
fn=w0+∑ki=1wi∗fn−k+i−1(n>k)
我们给出两个引理:
引理1:对于一个
w0=0
的递推式,若有数列
{an}
满足递推关系,那么数列
{Aan}
也满足递推关系。
引理2:对于一个
w0=0
的递推式,若有数列
{an}
和
{bn}
满足递推关系,那么数列
{an+bn}
也满足递推关系
对于引理1的证明是比较简单的,既然
{an}
满足
an=∑ki=1wi∗an−k+i−1
,那么我们在两边同乘上A,并把右边的A乘在f的系数之前即得证,即
Aan=∑ki=1wi∗Aan−k+i−1(n>k)
引理2也比较好证。我们知道
an=∑ki=1wi∗an−k+i−1
,
bn=∑ki=1wi∗bn−k+i−1
,左右分别相加再提取公因式,即
an+bn=∑ki=1wi∗an−k+i−1+∑ki=1wi∗bn−k+i−1=∑ki=1wi∗(an−k+i−1+bn−k+i−1)
。
所以如果我们有一些数列满足某递推关系,那么我们对其进行线性组合得到通项公式。一般地,我们认为k阶需要k个线性组合。
一次线性递推式
我们称形如
fn=Afn−1+B
的递推式为一次线性递推式,即当k=1时。
怎么由它推导得出我们需要的通项公式呢,我们只需要用一个小trick就够了。
我们对这个数列进行偏移,得到一个等比数列
{fn+t}
。不妨令
fn+t=q(fn−1+t)
,则
fn=qfn−1+qt−t
那么我们会得到两个方程:
{q=Aqt−t=B(1)
解之得
{q=At=BA−1(2)
利用等比数列通项公式立知
fn=(f1+t)∗qn−1−t
但有人就会问了,如果
A=1
呢?此时我们再看递推关系式,那不就是一个简单的等差数列吗。
特殊的二次线性递推式
我们称形如
fn=Afn−1+Bfn−2+C
的递推式为二次线性递推式,即当k=2时。
我们先来看一个特殊的二次线性递推式,当C=0时,即有
fn=Afn−1+Bfn−2
。那么我们仍然希望做出一个偏移,使得这个序列能像一次一样处理。
不妨设
fn−tfn−1=q(fn−1−tfn−2)
即
fn=(q+t)fn−1−qtfn−2
,同样的我们有
{q+t=Aqt=−B(3)
注意到这和韦达定理的形式是一样的,那么我们可以构造一个一元二次方程,这个方程恰好是
x2−Ax−B=0
。这就是这个递推式的特征方程。
从之前设的方程,我们知道一个以q为公比的等比数列满足该递推方程,那么现在我们解出了这两个可能的q值,我们可以这样表示通项公式
fn=A∗qn−11+B∗qn−12
。再代入
f1,f2
的值,就可以解出A和B。
但这里我们同样没有讨论到特殊的情况,也就是当这个一元二次方程有两个相同的根时。我们重新回到之前所设的递推式,则有
fn−tfn−1=t(fn−1−tfn−2)
则我们可以轻易地得到
fn=tfn−1+(f2−tf1)∗tn−2
再同时除以
tn
可得一个新数列
fntn=fn−1tn−1+f2−tf1t2
我们容易知道
fntn=f1t+f2−tf1t2∗(n−1)
整理得
fn=[(2tf1−f2)+(f2−tf1)n]tn−2
但是一般地,我们认为这个表达式过于复杂,不如仍然设为
fn=(A+Bn)tn−1
,然后利用
f1,f2
解之。
一般的二次线性递推式
上面说过了特殊情况,我们再来看一般的情况
fn=Afn−1+Bfn−2+C
。
对于这样的一个递推关系,我们同样希望能化为上面特殊情况的形式,同样的套路。设
fn+t=A(fn−1+t)+B(fn−2+t)
展开即得
(A+B−1)t=C
。那么只需设
fn+t
为新的数列,就可以套用之前的方法解决了。
同样有一个问题,可能存在
A+B−1=0
的情况。
那么既然无法偏移,我们设
fn−tfn−1=q(fn−1−tfn−2)+C
则相当于一个
gn=qgn−1+C
,用一次线性递推式解决之。