写在前面
按理来说,求数列通项本应该属于数学范围,但ACM中也有数列推导题的出现,处于方便,笔者决定把一些常见数列整理出来。
注:笔者是一名十八线蒟蒻,如果有错误请在评论区下留言,谢谢您帮助我做得更好。
前置知识
无!带上你的小脑瓜跟着学就是了!
一、基础数列(等比、等差、等比*等差,累加,累乘)
众所周知,
(1)对于
an=an−1+d(n≥2),我们有
an=a1+(n−1)d,
Sn=na1+2n(n−1)d。
(2)对于
an=an−1∗q(n≥2),我们有
an=a1∗qn−1
Sn={na1,q=11−qa1∗(1−qn),q=1
(3)对于
an的通项是类似
(an+b)qn这种"一个等差×一个等比"时,求
Sn可以通过错位相减法。操作略
(4)对于形如
an=an−1+f(n)的,我们可以通过构造式子的办法。
即构造
an=an−1+f(n)
an−1=an−2+f(n−1)
an−2=an−3+f(n−2)
…
a2=a1+f(2)
把上述所有式子加起来,化简消去,得到
an=a1+∑i=2nf(i)
(5)对于形如
an=an−1∗f(n)的,也是构造式子
an=an−1∗f(n)
an−1=an−2∗f(n−1)
an−2=an−3∗f(n−2)
…
a2=a1∗f(2)
全部乘起来,化简,得到
an=a1∗∏i=2nf(i)
(以上为高中生必备技能,请各位复习/预习一下)
(4)和(5)中的累加和累乘的方法很重要!
最后介绍一些常用公式。
1+2+3+...+n=2n(n+1)
12+22+32+...n2=6n(n+1)(2n+1)
13+23+33...+n3=(2n(n+1))2
Q:如何求解
1k+2k+3k+...+nk?
A:有个前提,k阶之前的次幂和公式必须是已知的。
先写出
nk+1−(n−1)k+1的展开式,即
nk+1−(n−1)k+1=ak+1nk+aknk−1+...+a0
我们构造式子,得到
(n−1)k+1−(n−2)k+1=ak+1(n−1)k+ak(n−1)k−1+...+a0
(n−2)k+1−(n−3)k+1=ak+1(n−2)k+ak(n−2)k−1+...+a0
…
(2)k+1−(1)k+1=ak+1(1)k+a2(n−1)1+...+a0
全部累加,得到
nk+1=ak+1∑i=1nik+ak∑i=1nik−1+...
因为k阶之前的公式是已知的,故就可求得
∑i=1nik。
UPD(2020/2/13):可以通过伯努利数求解,效率更高。
(6)当然还有裂项相消啊之类的破玩意儿就不说了,遇到了就见仁见智。
二、一阶线性递推(形如
an=pan−1+q)
对于
an=pan−1+q(n≥2),我们先想办法消去这个系数
q然后转化为等比数列求解。
p=1时,同等差数列处理,接下来讲
p=1的情况。
即设
bn=an−k,且想办法让原式变为
bn=pbn−1。而
p已知,
b1可以算,那我们就能求出
bn,进而求出
an。
an−k=p(an−1−k)
an=pan−1+k−pk
即:
k−pk=q
k=1−pq。
故
b1=a1−1−pq,
bn=(a1−1−pq)∗pn−1
所以我们得到
an=(a1−1−pq)∗pn−1+1−pq。
三、二阶线性递推(形如
an=pan−1+qan−2+r)
对于
an=pan−1+qan−2+r(n≥2)我们根据之前求线递推性递推的思路,去考虑如何把二阶线性递推化为一阶线性递推。
我们设
bn=an−kan−1,想办法使式子变为
bn=sbn−1+r,这样就可以用我们已经有的式子去求解。
将
bn=an−kan−1代入,得到
an−kan−1=s(an−1−kan−2)+r
an=(s+k)an−1−ksan−2+r
即
s+k=p,−ks=q。
这很容易联想到韦达定理,因此,
s,k就是方程
x2−px−q=0的两个解。
求出了
s,k后,
bn就能求,问题便能转化成
an−kan−1=bn,累加即可。
这里不具体写过程,贴个结论。
对于
an=pan−1+qan−2。
如果该方程有二实根
p,q,则
F(n)=Apn+Bqn,A=p(p−q)F(2)−qF(1),B=q(p−q)pF(1)−F(2)------------①
如果该方程只有一实根
p,则
F(n)=(A+bn)pn,A=p2pF(1)−F(2),B=p2F(2)−pF(1)------------②
该方程无实根的情况我展示未遇到过…不知道虚数可不可以…
其实,对于更高阶的线性递推,都是用类似地方法,将
n阶降到
n−1阶的形式一层层降下去。
而这种方程的解,我们叫特征根(也叫不动点)。
对于一阶线性递推,其实
1−pq就是特征根。
基本思路就是让方程分别减去特征根,然后化简,式子除一下。
而特征方程其实就是把所有的项(除了常数数)都变成
x,求出来的解就是特征根。
四、形如
an=Can−1+DAan−1+B
这种形式通常已经可以算是个毒瘤题了…
同样方法,先求特征根
x=Cx+DAx+B
(1)若该方程有两个特征根
p,q,则构造两个式子
an−p=Can−1+DAan−1+B−p.........①
an−q=Can−1+DAan−1+B−q.........②
然后令
①÷②,化简,可以得到类似之前的一个
bn=Kbn−1的形式,然后当成等比数列求就是了。
(2)若该方程只有一个特征根
p,则自构造一个式子
an−p1=Can−1+DAan−1+B−p1
然后化简,其他步骤同上。
五、递推方程中只有幂、乘除等运算
这个标题其实有点歧义的感觉,但一时又找不到很好的说辞…
这类问题主要是依靠一手套log
众所周知,我们有
log基本运算法则之:
log(ab)=loga+logb
log(ba)=loga−logb
log(ak)=kloga
因此,一手log,可以让所有的幂运算、乘、除变成线性的简单运算,然后根据前文给出的内容去搞就完事了。
举个例子,对于
an=an−12an−2,两边套log,得
logan=2logan−1+logan−2
设
bn=logan,
原式变为
bn=2bn−1+bn−2。
再用二阶线性递推整个活即可。
六、方程中有
∑,∏的
举个例子,对于HDU 6680,其给出的数列如下
我们只需要构造
gm(i−1),然后令
gm(i)−gm(i−1)就能消去
∑
对于
∏,相除即可。
扫描二维码关注公众号,回复:
11513111 查看本文章
七、方程中的系数是非常数的
这类方程非常复杂,我这里主要讨论简单的。
还是这个HDU 6880为例,用上面的方法消去
∑后,可以得到
显然这个式子不满足我们上面说的任何一种情况,那咋整呢?
我们注意一个细节,项的下标
n与
n−1之差与其对应系数
n和
n+1之差相同。
那我们就两边同除以
n(n+1),得到
然后设
bn=n+1gm(n),就变成了
bn=bn−1+n(n+1)2n−2,累加即可。右边的求和利用错位相减法得到。
类似地问题还可以是这个。
(n+2)an+1=nan+2(n+1)2r,r是已知常数。(1992年中国台北数学奥林匹克试题)
两边同乘
(n+1)得到
(n+2)(n+1)an+1=n(n+1)an+2(n+1)2r+1。
记
bn=n(n+1)an,得到
bn+1=bn+2(n+1)2r+1。
后面部分是连续自然数求和,公式见之前的即可。
这一类问题其实很复杂,笔者也很难归纳出一般情况…
八、式子中存在组合数的
这里我们要用到一个性质:
Cmn=Cnn−m
具体操作可以看我这篇博客… HDU 6467
九、式子中存在根号的
一般根号出现时,我们考虑三角换元或者代数换元,
eg1:求
an+1=161(1+4an+1+24an
),a1=1(1981年第22届IMO预选题)
我们可以先用特征根的办法求一下,得到
x1=31,x2=0
我们试着让两边减去
31,整理,得到
48an+1=12an+31+24an
−13
很好,摸不着头绪了,此时似乎特征根的方法不管用。
那我们就试着换元。
记
bn=1+24an
,那
an=241(bn2−1)
原式等价于
241(bn+12−1)=161(1+61(bn2−1)+bn)
化简,得到
4bn+12=bn2+6bn+9
即
(2bn+1)2=(bn+3)2
而且因为
bn≥0,所以
2bn+1=bn+3。
一阶线性递推套一下,莽就完事了。
eg2:求
an=an−11+an−12
−1,a0=1(1990年匈牙利数学奥林匹克试题)
这题我们考虑三角代换。
熟练掌握三角代换的前提是:你要对三角公式(这里指半角/二倍角、万能公式、三倍角以及六个三角函数的倒数、商数和三个平方关系)相当熟练。
而且,通常我们有以下两个换元规则。
(1)根号里的数字比1大,我们采用
tan,csc,sec。(前者居多)
(2)根号里的数字比1小,我们采用
sin,cos,cot(前两者居多)
这题我们考虑设
an=tanbn(bn∈(0,2π))
(为啥不是把根号换元?你根号换元了左边怎么办? )
于是原式等于
tanbn+1=tanbntanbn2+1
−1
tanbn+1=sinbn1−cosbn=tan2bn
tanbn+1=tan2bn
因为
tan函数在
(0,2π)上单调递增,故
2bn+1=bn
莽就完事了。
后记
望2020的打铁生涯一切顺利…
(铜牌来一个好吗?秋梨膏)
DrGilbert 2020.2.5