普通生成函数学习笔记

普通生成函数学习笔记

定义

已知一个序列 a,可以是有限项也可以是无限项,定义其生成函数 F(x)

F(x)=aixi

作用

生成函数本质是一个多项式,所以可以进行多项式卷积,方便处理序列问题。假设序列 a 的生成函数是 F(x),序列 b 的生成函数是 G(x),有

F(x)G(x)=xij=0iajbij

封闭形式

封闭操作可以让生成函数更加易于化简,也就是将无限项的多项式封闭为有限项。有几种比较常见的封闭形式:

  1. \lang(n10),(n1),(n+12),\rang=1(1x)n

    这本质上是二项式定理的负数形式(也叫做牛顿二项式定理):

    (1x)n=(n1+ii)xi

  2. \lang1,n,n2,\rang=11nx

  3. xni=(xn)i=11xn

  4. \lang(n0),(n1),(n2),\rang=(1+x)n

    本质上就是二项式定理。

  5. 存在前导零

    \lang0,0,,0,a0,a1,a2,\rang。假设前面有 n0,这种情况先把 0 后面的结果算出来,再乘上一个 xn 即可。

  6. 其他形式

    对于其他形式的序列,总能将其拆成多个生成函数的和或差,然后便可以求解。

展开形式

[xn]F(x) 表示 xn 的系数。

假设我们成功求出了 F(x) 的封闭形式,显然无法直接求出 [xn]F(x),此时需要我们将封闭形式展开。本质上是封闭的逆过程,一般通过设关于 F(x) 的方程然后求解。

下面以最经典的斐波那契数列的通项公式为例。

F(x)=fixi,其中 fi 为斐波那契数列(f0=0,f1=1,fn=fn1+fn2(n2))。

那么有

F(x)=xF(x)+x2F(x)+x

F(x) 的封闭形式为 x1xx2。发现不属于罗列出的特殊情况。有两种方式进行展开:

  1. x2+x 看作整体

    那么相当于前面有一个前导零,那么

    F(x)=x(x2+x)i=j=0ix(ij)x2jxij=j=0i(ij)xi+j+1=xij=0i(ij1j)

    于是我们得到 fi=j=0i(ij1j),但这并不是我们熟知的形式。

  2. 考虑将此形式转换成两个朴素形式相加

    即写作

    x1xx2=A1ax+B1bx

    接着求解待定系数

    x1xx2=A1ax+B1bx=A(1bx)+B(1ax)(1ax)(1bx)=(A+B)(Ab+aB)x1(a+b)x+abx2

    接着解方程

    {A+B=0Ab+aB=1a+b=1ab=1

    解得

    {A=15B=15a=1+52b=152

    接着回代,所以有

    F(x)=x1xx2=1511+52x+151152x=15(1+52x)i15(152x)i=xi(1+52)i(152)i5

    于是我们得到 fi=(1+52)i(152)i5

posted @   DycIsMyName  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示