拉格朗日反演学习笔记

拉格朗日反演

复合

定义形式幂级数 F(x),G(x)复合为:FG=F(G(x))=i=0([xi]F(x))G(x)i
上式有定义(收敛)当且仅当 F 有限(多项式)或者 G 的常数项为 0

【模板】多项式复合函数
存在厉害的 O((nlogn)1.5) 做法。
但是更为简单的做法是 O(n2+nnlogn) 的分块暴力(跑得据说比实现不精细的 O((nlogn)1.5) 快)。

复合逆

形式幂级数 F(x),G(x) 常数项均为 0,且一次项不为 0

GF=x,则有 FG=x,称 F,G 互为复合逆

GF=x,则 FG=x

证明:

首先,满足 FH=x 且常数项为 0,一次项不为 0 的多项式 H 一定存在。

那么 G(F(x))=x,F(H(x))=x

G(F(H(x)))=G(x),G(F(H(x)))=H(x)

G(x)=H(x),证毕。

事实上,常数项均为 0,且一次项不为 0 的多项式构成群。

拉格朗日反演的多种形式

若幂级数 F(x),G(x) 常数项均为 0,一次项不为 0,且 F,G 互为复合逆,n,kZ

最初的形式:

[xn]Fk(x)=kn[xk]Gn(x)

进行简单的变换,一般使用的形式:

[xn]Fk(x)=kn[xnk](xG(x))n

H 是一个一般的形式幂级数,将形式 2 线性组合起来,得到扩展拉格朗日反演:

[xn]H(F(x))=1n[xn1]H(x)(xG(x))n

以及 EI 提出规避求 n 的逆与对 H 求导的另类拉反:

[xn]Fk(x)[xnk]G(x)(xG(x))n+1[xn]H(F(x))=[xn]H(x)G(x)(xG(x))n+1

证明

G(F(x))=xG(F(x))k=xk(Gk)(F)×F(x)=kxk1i=0iGk[i]Fi1F=kxk1[x1]i=0iGk[i]Fin1F=[x1]kxk1Fni=0iGk[i][in1=1]=k[xk]FnnGk[n]=k[xk]Fn[xn]Gk(x)=kn[xk]Fn(x)

手动求解复合逆

对于一个封闭形式的幂级数,例如 ln(1+2x),我们直接复合上复合逆解方程就行。

对于我们仅有一个方程(不含微分)的幂级数,我们在方程的一边留下一个单项 x,另一边所有的 F 换成 x 即为其复合逆。

小试牛刀

n 个点有标号无根树数量。是的,是 nn2,请使用拉反解决好吗。

F(x) 表示答案的 EGF,那么有 F(x)=xexp(F(x))
F(x) 的复合逆即为 G(x)=xex

直接使用拉反:

[xn]F(x)=[xn1]1n(xG(x))n[xn]F(x)=[xn1]1nenx

得到答案 nn2


求解 [xn]Ck(x),其中 C(x) 为卡特兰数。

考虑卡特兰数生成函数方程:C(x)=xC2(x)+1
由于 [x0]C(x)0,其没有复合逆,我们构造其去掉常数项的形式幂级数 B(x)=C(x)1,那么 B(x)=x(B(x)+1)2

所求即为 [xn](B(x)+1)k,令 H(x)=(x+1)k,则所求为 [xn]HB
计算 B 的复合逆 AA=x(x+1)2
使用扩展拉反:

[xn]H(B(x))=1n[xn1]H(x)(xA(x))n[xn]H(B(x))=1n[xn1]k(x+1)k1(x+1)2n[xn]H(B(x))=kn(2n+k1n1)


ABC222H,我们忽略组合计数,得到生成函数方程的部分。
[xn]F,满足 F=x(F+(F+1)2)2

计算其复合逆 G=x(x+(x+1)2)2
使用拉反:

[xn]F(x)=1n[xn1](xG(x))n[xn]F(x)=1n[xn1](x+(x+1)2)2n[xn]F(x)=1ni=0n1(2ni)[xn1i](x+1)2(2ni)[xn]F(x)=1ni=0n1(2ni)(4n2in1i)


一个更复杂的具体应用是广义二项级数,可以参考:广义二项级数与广义指数级数

H 求导很痛苦的情况下,可以考虑使用另类拉反。但好像 EI 认为另类拉反更大的作用是规避了求 n 的逆。

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