数列通项#
特征根法#
基本流程#
设有常系数齐次线性递推数列 ∑mi=0cian+i=0,并给定 a0,a1,…,am−1。
记其特征方程为 ∑mi=0cixi=0,则由代数基本定理,该方程最多有 m 个复数根。称这些根为该序列的特征根。
假设最终解出 k 个不等根,记为 x1,…,xk,并记每个根的代数重数为 mi(即每个根出现了多少次),且 ∑ki=1mi=m。
则该数列的通项可表示为
an=k∑i=1mi∑j=1λi,jnj−1xni
其中 λi,j 为常数,根据 a0,…,am−1 的值而定。
例1:求斐波那契数列的通项公式。
斐波那契数列:F0=0,F1=1,F2=1,Fn=Fn−1+Fn−2。
数列的特征方程为 x2−x−1=0,两根为 x1=1−√52,x2=1+√52。
构造通项公式 Fn=λxn1+μxn2,由 F1=1,F2=1 得
⎧⎪
⎪
⎪⎨⎪
⎪
⎪⎩1−√52λ+1+√52μ=1(1−√52)2λ+(1+√52)2μ=1
解得 λ=−1√5,μ=1√5。
所以 Fn=1√5((1+√52)n−(1−√52)n)。
例2:求数列 an+2=6an+1−9an 的通项公式,其中 a1=3,a2=27。
列出特征方程 x2=6x−9,解得特征根 x1=x2=3。于是通项形式为 (An+B)3n,代入 a1,a2 解得 A=2,B=−1。
生成函数#
考虑该数列的生成函数 F(x)=∑n≥0anxn。则由递推式可以写出关于 F(x) 的方程:∑mi=0xm−iciF(x)=C,其中 C 为某一个与 a0,…,am−1 有关的 m−1 次多项式,具体是多少我们不关心。(参考生成函数法求序列通项公式)
所以可以解出封闭形式 F(x)=C∑mi=0cixm−i。
我们尝试对右式进行拆分,考虑对分母进行因式分解。
在分母的多项式中对 x 取倒数,由因式定理可以知道分母可以分解成 ∑mi=0cixi=∏ki=1(x−xi)mi,其中 xi 与 mi 的定义与上文相同。
所以有 ∑mi=0cixm−i=∏ki=1(1−xix)mi,即 F(x) 可以改写成
F(x)=C∑mi=0cixm−i=k∑i=1λi(1−xix)mi
其中 λi 是某一个 m−mi−1 次多项式,具体我们也不关心。
考虑求出 1(1−xix)mi 的开放形式:
首先有 11−px=∑n≥0pixi。两边求 q 阶导变为
1(1−px)q+1=∑n≥0n(n−1)…(n−q+1)pnxn−q=∑n≥0pq(n+1)(n+2)…(n+q)pnxn
把 λi 乘上去以后,相当于对序列进行平移与缩放,也可以简单的通过乘上一个多项式来解决,最终每一个 xni 前的系数多项式次数均小于 mi。
所以每一个 xni 前的系数都是一个关于 n 的 mi−1 次多项式,证毕。
线性代数#
考虑将递推写成矩阵形式,先把递推改写:an+m=∑m−1i=0cian+i,然后写出线性递推:
⎡⎢
⎢
⎢
⎢⎣anan−1⋮an−m+1⎤⎥
⎥
⎥
⎥⎦=⎡⎢
⎢
⎢
⎢
⎢⎣cm−1⋯c1c01⋱1⎤⎥
⎥
⎥
⎥
⎥⎦m×m⎡⎢
⎢
⎢
⎢⎣an−1an−2⋮an−m⎤⎥
⎥
⎥
⎥⎦
记转移矩阵为 M,求其特征值
det(M−xI)=∣∣
∣
∣
∣
∣∣cm−1−xcm−2⋯c1c01−x⋱⋱1−x∣∣
∣
∣
∣
∣∣=0
该行列式为上 Hessenberg 阵,经过计算、归纳,我们得到特征多项式 f(x)=xm−∑m−1i=0cixi,即 xi 为转移矩阵 M 的特征值。
先考虑无重根的情况:
此时 m 个特征值对应 m 个特征向量,观察可得 xi 对应的特征向量 pi=(xm−1i,xm−2i,⋯,1),显然他们线性无关。
于是 (am−1,am−2,⋯,a0) 必定可以表示成 p 的线性组合,从而递推后也可表示为其线性组合。
再考虑有重根:
此时无法构造基向量,考虑多找几组解:将其特征多项式改写 f(x)=∏ki=1(x−xi)mi,那么对于每一个 gi(x)=(x−xi) 都是 f 的 mi 重因式(显然 g 不可约),并且有如下引理以及推论:
引理 1:设不可约多项式 p(x) 为多项式 f(x) 的 k 重因式,那么 p(x) 是 f′(x) 的 k−1 重因式。
推论:p(x) 是 f(x),f′(x),…,f(k−1)(x) 的因式,但不是 f(n)(x) 的因式。
读者自证不难。
我们对 f 求若干次导,即得到 f(nx),f(n(n−1)x),…,f(nmi−1––––––x) ,它们全都含有因式 (x−xi),即 njxi 均为 f(x)=0 的解。
这样恰好构造出 m 个线性无关的向量,于是证毕。
不动点法#
先来点简单的。
一阶齐次递推#
对于数列 an+1=pan+q,请求出数 λ 使得 an+1−λ=p(an−λ),并求出其通项公式。
可以待定系数,但是最后发现 λ 实质上是方程 x=px+q 的根,怎么会事呢?
我们在做的实际上是对原式进行代数变形,而且这个操作类似于因式分解。
所以我们如果解出来 x=λ,那么原式一定可以写成 A(x−λ)=x−λ 的形式,然后再换回 a 即可。
一阶分式递推#
对于数列 fn+1=afn+bcfn+d,求其通项公式。
同样的,我们解它的不动点,应该可以求出它的因式。
由于得到的方程是 x=ax+bcx+d,因此对根的数量进行分类讨论。
- 当只有一个根 x0 时,代数变形后两边取倒数,发现 1an−x0 为等差数列。
- 当有两根 x1,x2 时,分别写出关于 an−x1 和 an−x2 的式子,两式相除即可发现 an−x1an−x2 为等比数列。
数列求和#
错位相减#
没啥好说的。
裂项叠缩与阿贝尔变换#
裂项的大体思想是对于已知要求的 ∑f,构造函数 g 使得 f(n)=g(n+1)−g(n),于是有 ∑bk=af(k)=∑bk=ag(k+1)−g(k)=g(b+1)−g(a)。
这种方式也被称为叠缩(Telescoping),叫这个名字大抵是因为折叠望远镜的镜筒厚度止于最外层和最内层半径有关。
例3:求数列 an=(2n−1)3n 的前缀和 Sn 的表达式。
考虑构造 an=bn+1−bn,假设 bn=(pn+q)3n,可得:
{a1=3=9(2p+q)−3(p+q)a2=27=27(3p+q)−9(2p+q)
解得 p=1,q=−2,于是 Sn=bn+1−b1=(n−1)3n+1+3。
更深入的,我们有Gosper算法和机械求和法,这里不深入讨论。
阿贝尔求和公式#
我们尝试对错位相减与裂项两种方法进行对比:
- 重新回顾错位相减,发现我们实际上是对原数列的等差部分做了差分。
- 考虑构造裂项的时候,我们假设列出来的仍是一个 Aqn 的形式,看起来像是对等比部分做了前缀和。
这启发我们,对于形如 anbn 的序列,a 的差分和 b 的前缀和应当有某种联系。
阿贝尔求和公式就是通过变换求和顺序,来构造出容易计算的差分数列。
阿贝尔求和公式:定义 Bk=∑nk=1bk,则有以下恒等式
n∑k=1akbk=Bnan−n−1∑k=1Bk(ak+1−ak)
更一般的,有阿贝尔变换(分部求和法)
n∑k=mak(bk+1−bk)=an+1bn+1−ambm−n∑k=mbk+1(ak+1−ak)
证明:
n∑k=1akbk=n∑k=1ak(Bk−Bk−1)=n∑k=1akBk−n∑k=1akBk−1=n∑k=1akBk−n−1∑k=0ak+1Bk=anBn−n−1∑k=1Bk(ak+1−ak)
于是我们直接进行替换:∑nk=1(2n−1)3n=32(2n−1)(3n−1)−32∑nk=12(3k−1),整理即可。
注意到出现了形如 ∑kxk 的式子,考虑求导。
首先对于等比数列有 ∑nk=1xk−1=xn−1x−1,两边求导得到 ∑nk=1(k−1)xk−2=nxn−1(x−1)−xn+1(x−1)2。
之后同时乘以 x,再换一下下标得到 ∑nk=1kxk=(n+1)xn+1x−1−xn+1−1(x−1)2x。
于是 ∑nk=1(Ak+B)xk=A(n+1)xn+1x−1−Axxn+1−1(x−1)2+Bxxn−1x−1,整理得到
n∑k=1(Ak+B)xk=an+1x−1−xx−1(A(xn+1−1)x−1+B)
有限微积分#
可参考有限微积分与数列求和。
不难注意到分部求和法则 ∑uΔv=uv−∑EvΔu 其实就是阿贝尔变换,同时我们做的事情和求导也很像,这揭示了无限微积分与有限和式之间的一些联系。
以及由于 ∑xk––qxδx=xk––qxq−1−∑qx+1q−1kxk−1–––––δx,所以对于形如 an=f(n)qn 的求和,其前缀和必定可以写成 Sn=g(n)qn+C 的形式(其中 f(n),g(n) 为关于 n 的 k 次多项式),从而可以强行待定系数法(这也说明了上文例3中直接将答案设成这种形式的原因)。
函数迭代#
定义与性质#
定义1:定义 f(n)(x)=f(f(⋯f(x)⋯))n个f 表示函数 f(x) 的 n 次迭代。
特别地,约定 f(0)(x)=x。
显然有一些性质,比如 f(m)(f(n)(x))=f(m+n)(x)。
于是我们可以定义 f(−n)(x) 为满足 f(n)(f(−n)(x))=x 的函数。注意它不一定存在。
对于 n=1,我们也把 f(−1)(x) 叫做 f(x) 的反函数,简记为 f−1(x)。
定义2(轨道):对于 x 与函数 f(x),定义 x 的一个 f 轨道为无穷序列 x,f(x),f(2)(x),…,f(n)(x),…。
也可简称为 x 的轨道。
其实就是数列和他的递推公式。
定义3(不动点):称满足 f(x0)=x0 的数 x0 为函数 f 的一个不动点。
后面会有用。
定义4(相似函数):如果两个函数 f,g 的定义域相同,且存在可逆函数 φ,使得 f(x)=φ−1(g(φ(x))),则称函数 f 与 g 关于 φ 相似,记作 fφ∼g,简称为 f∼g。
这里的函数 φ(x) 称为桥函数。
相似函数满足一些性质:
-
反身性:f∼f。
-
传递性:若 f∼g,g∼h,则 f∼h。
-
对称性:若 fφ∼g,则 gφ−1∼f。
-
若 f∼g,则 f(n)∼g(n)。
写出来发现里面的 φ 全部消掉了。
桥函数法#
由相似函数性质四,我们不难注意到,对于一个看上去复杂的 f,如果能构造他的一个好求的相似函数 g,就可以简单地逆推回去。
下面是一些简单的 g:
- g(x)=kx→g(n)(x)=knx。
- g(x)=x+k→g(n)(x)=x+nk。
- g(x)=xk→g(n)(x)=xkn。
比如一个经典例题:
例4:求 f(x)=2x2−1 的 n 次迭代 f(n)(x)。
看起来就不是一个好做的东西,但是形式很熟悉:
我们有余弦的二倍角公式 cos2x=2cos2x−1,于是尝试取 φ−1(x)=cosx,φ(x)=arccosx,得到 g(x)=arccos(2cos2x−1)=2x,于是 g(n)(x)=2nx,f(n)(x)=cos(2narccosx)。
再探不动点法#
当不动点与桥函数结合到一起时,有一个特别的性质:
设 fφ∼g,f 的一个不动点为 x0,则 φ(x0) 为 g 的一个不动点。
那么这个东西可以为我们寻找桥函数提供一些启发。
观察上面比较好求的几种函数,他们的不动点基本上不是 0 就是 ∞。
因此,假设 f 的不动点为 x0,可以考虑取 φ(x)=x−x0 或 1x−x0。对于两个或以上的不动点也是一样的思路。
之后就和上面数列的很像了,这里还有一个典例:
例5:求函数 f(x)=x22x−1 的 n 次迭代 f(n)(x)。
两不动点分别为 x1=0,x2=1,考虑构造 φ(x)=x−1x,φ−1(x)=11−x。
计算得 g(x)=x2,g(n)(x)=x2n,于是反推 f(n)(x)=x2nx2n−(x−1)2n。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2021-12-31 线性代数基础知识