下降幂学习笔记

下降幂学习笔记

还原精灵还我笔记——来自打完笔记但关电脑前没有保存的某人的呐喊。

定义

下降幂就是形如 nm 的式子,表示

nm=i=nm+1n=n!(nm)!

同理声明一个上升幂 nm,表示

nm=i=nn+m1i=(n+m1)!(n1)!

注意这里 n,m 均可以取负数即可。

性质

上升下降之间的转换

首先是幂相加的求解

na+b=na(na)bna+b=na(n+a)b

这个性质常用于倍增求解一些多项式,因为有

x2n=xn(xn)nx2n+1=x2n(x2n)

这样良好的性质,于是可以设 xn=f(x)=i=0naixi,则有

x2n=f(x)f(xn)=(i=0naixi)(i=0nai(xn)i)=(i=0naixi)(i=0naij=0i(ij)xj(n)ij)=(i=0naixi)(j=0nxji=jnai(ij)(n)ij)=(i=0naixi)(j=0nxji=jai(n)iji!j!(ij)!)=(i=0naixi)(i=0nxii!j=in(ajj!)(n)ji(ji)!)

于是可以设 Fi=aii!,Gi=(n)ii!,Gi=Gni。那么原式等于

=(i=0naixi)(i=0nxii!j=inFjGji)=(i=0naixi)(i=0nxii!j=inFjGn(ji))

如果令 Wi=(FG)i,则原式等于

=(i=0naixi)(i=0nWn+ii!xi)

于是转换成两个多项式相乘,依旧利用 FFT 求解即可。于是我们便能在

T(n)=T(n2)+O(nlogn)=O(nlogn)

的时间复杂度内,得到 xn 的展开形式,上升幂同理。

接着有

nm=(1)m(n)m=(nm+1)mnm=(1)m(n)m=(n+m1)m

关于组合数

下降幂和组合数结合往往有意想不到的效果。

首先先简单将组合数转化成下降幂的形式

(nm)=n!m!(nm)!=nmm!

这个性质可以将组合数拓展到实数域

(rn)=rnn!

此处的 r 是任意实数。然后可以用这个表示牛顿二项式定理

(x+y)r=i0(ri)xiyri

只需要注意 i 没有上界即可。二项式定理其实是 r 取任意非负整数时的特殊情况,因为当 i>r 时,(ri)0,因此省略了后面的无穷项。

然后有一个组合数的转换

(nm)=nmm!=(1)m(n)mm!=(1)m(mn1)mm!=(1)m(mn1m)

接着考虑下降幂与组合数相乘

(nk)ki=n!k!(nk)!k!(ki)!=(ni)!(nk)!(ki)!n!(ni)!=(niki)ni

通过这个性质,不妨将 n,i 视作参数,那么我们成功将变化的 ki 转换成了不变的 ni,那么预处理将会容易许多。

更常见的,对于多项式乘组合数的情况,即 f(k)(nk) 的形式,不难考虑到将 f(x)=i0aixi 的形式改写成 f(x)=i0bixi 的形式,那么则有

f(k)(nk)=(nk)i0biki=i0biki(nk)=i0bi(niki)ni

于是我们看出来只需要求出 bi,便能求出整个表达式的值。

于是我们考虑

xn=i=0n{ni}i!(xi)=i=0n{ni}xi

考虑组合意义,即 n 个不同的球放进 x 个不同的盒子里,盒子可以为空。那么就是枚举具体放进了多少个盒子,从 x 个盒子中选出来,将 n 个球放入有多少方案,接着考虑不同的盒子,因此需要乘上 i!

那么有

f(x)=i0aixi=i0aij=0i{ij}xj=i0xijiaj{ij}

所以有 bi=jiaj{ji},预处理第二类斯特林数可以对于 n 次多项式做到 O(n2) 求解。

接着考虑一个推导:求 F(x)=i0(2ii)xi 的封闭形式。

首先有一个显然成立的等式

xk(x12)k=(2x)2k22k

其实只需要将左边展开后每一项均乘 2 即可得到。那么就有

(2nn)=(2n)nn!=(2n)2n(n!)2=22nnn(n12)n(n!)2=(22)n(n12)nn!=4n(n12n)=4n(1)n(n(n12)1n)=(4)n(12n)

所以

F(x)=i0(2ii)xi=i0(4)i(12i)xi=i0(4x)i(12i)=(14x)12=114x

对于下降幂也有二项式定理

(x+y)n=i=0n(ni)xiyni(x+y)n=i=0n(ni)xiyni

考虑证明:

i=0n(ni)xiyni=i=0nn!i!(ni)!xiyni=n!i=0n(xi)(yni)=n!(x+yn)=(x+y)n

考虑组合意义,(xi)(yni) 就表示从 x+y 个中选出 n 个的方案数。上升幂相关的证明同理。

有限微积分

重定义

在微积分中我们引入了算子 D 的概念,表示一个无穷小量上的斜率

Df(x)=df(x)dx=limh0f(x+h)f(x)h

此时我们定义另一个算子 Δ 表示 h=1 时的斜率,也就是

Δf(x)=f(x+1)f(x)

本质上就是差分。

D 算子下,最基本的函数是

Dxm=mxm1

但在 Δ 算子下,(x+1)mxm,没什么能够化简的地方,于是我们考虑下降幂

Δxm=(x+1)mxm=mxm1

我们发现这和上面的形式一样。

接着考虑无限微积分上定义积分

g(x)=Df(x)g(x)dx=f(x)+C

类似的,我们也可以定义

g(x)=Δf(x)g(x)δx=f(x)+C

这个 C 只需要满足在差分后能够消掉,即周期为 1 的函数。

类似定义定积分

abg(x)dx=f(x)ab=f(b)f(a)abg(x)δx=f(x)ab=f(b)f(a)=i=ab1g(i)

根据定积分的性质,同样的,定义

abg(x)δx=bag(x)δxabg(x)δx+bcg(x)δx=acg(x)δx

函数的对应关系

xm 进行积分,得

i=0n1im=im+1m+10n=nm+1m+1

可惜当 m=1 时无法使用,于是当 m=1 时我们暴力展开,有

i=0n1im=i=1n1i=Hn

所以我们知道

xmδx={xm+1m+1+Cm1Hx+Cm=1

联想到 x1dx=lnx+C,于是我们找到了能和 lnx 相互对应的函数 Hx=i=1x1i

考虑无限微积分中的 Dex=ex,找到一个类似的函数,不难发现 Δ2x=2x。考虑对于所有 ax 的差分和逆差分,有

Δf(x)=ax+1ax=(a1)axf(x)δx=axa1

更进一步,令 Δkf(x)=f(x+k)f(x),同样试图找到一个函数 ax,满足 ex 的性质,于是有

ax+kaxk=axak1=ka=k+1k

那么当 limk0,有

e=limk0(k+1)1k=limn\infin(1+1n)n

运算法则

显然有 Δ(f+g)=Δf+Δg,Δ(cg)=cΔgc 是常数。

接着考虑乘法运算,则有

Δ(f(x)g(x))=f(x+1)g(x+1)f(x)g(x)=f(x+1)g(x+1)f(x+1)g(x)f(x)g(x)+f(x+1)g(x)=f(x+1)Δg(x)+g(x)Δf(x)

定义位移算子 E(f(x)) 表示 f(x+1),则有

Δfg=EfΔg+gΔf

对两边同时逆差分后可以得到

gΔf=fgEfΔg

考虑利用有限微积分计算的具体的问题。

  1. k=0n1k2

    k2 拆成 k2+k1,那么因为 i=0n1im=nm+1m+1 可以得到

    k=0n1k2=k=0n1(k2+k1)=k=0n1k2+k=0n1k1=n33+n22

    展开后化简可以得到我们日常使用的公式

    k=0n1k2=n(n1)(2n1)6

    事实上,通过斯特林数,很多时候一般幂和下降幂间转化。

  2. k=0nk2k

    我们想利用上面的公式,不妨令 Δf(x)=2x,g(x)=x,则有 f(x)=2x,Δg(x)=1。那么所求即为 i=0ng(k)Δf(k)=i=0n+1g(k)Δf(k)δk

    定义 F(k)=g(k)Δf(k)δk,则所求即为 F(k)0n+1,于是考虑计算 F(k),有

    F(k)=g(k)Δf(k)δk=f(k)g(k)E(f(k))Δg(k)δk=k2k2k+1δk=k2k2k+1

    所以

    F(k)0n+1=F(n+1)F(0)=((n+1)2n+12n+2)(02021)=(n1)2n+1+2

    k=0nk2k=(n1)2n+1+2

  3. i=0n1Hi

    依旧考虑相同的思路,但是不难发现我们难以对 Hx 进行逆差分,但是我们知道 Hx 的差分,于是应该令 Δf(x)=1,g(x)=Hx,则有 f(x)=x,Δg(x)=x1。那么所求即为 i=0n1g(i)Δf(i)=i=0ng(i)Δf(i)δi。定义 F(i)=g(i)Δf(i)δi,则所求即为 F(i)0n,考虑计算 F(i),有

    F(i)=g(i)Δf(i)δi=f(i)g(i)E(f(i))Δg(i)δi=iHi(i+1)i1δi=iHii

    于是

    F(i)0n=F(n)F(0)=(nHnn)(0H00)=nHnn

    i=0n1Hi=nHnn

  4. i=0n1kHk

    事实上,根据前面的思路,这没有什么难的。

    Δf(x)=x=x1,g(x)=Hx,则 f(x)=x22,Δg(x)=x1。则所求即为 i=0n1g(i)Δf(i)=i=0ng(i)Δf(i)δi。定义 F(i)=g(i)Δf(i)δi,则所求即为 F(i)0n,考虑计算 F(i),有

    F(i)=g(i)Δf(i)δi=f(i)g(i)E(f(i))Δg(i)δi=i2Hi2(i+1)22i1δi=i2Hi2i12δi=i2Hi2i24=i2(2Hi1)4

    F(i)0n=F(n)F(0)=n2(2Hn1)402(2H01)4=n2(2Hn1)4

    化成正常形式可以得到

    i=0n1kHk=n(n1)(2Hn1)4

posted @   DycIsMyName  阅读(61)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示