【学习笔记】拉格朗日反演

0.吐槽

有些文章讲的还没有百度百科好。

1.概述

(这一段很重要啊,不然真的搞不懂在反演什么。结果百度百科说得最清楚。)

对于原函数 y = f ( x ) y=f(x) y=f(x) ,我们想求一个 反向映射 g ( y ) = x g(y)=x g(y)=x ,从图像来看,二者关于直线 y = x y=x y=x 对称。

形式化的,对于 f ( x ) f(x) f(x) ,其复合逆函数 g ( x ) = f − 1 ( x ) g(x)=f^{-1}(x) g(x)=f1(x) 满足
g [ f ( x ) ] = x g[f(x)]=x g[f(x)]=x

注:也有人写成 f [ g ( x ) ] = x f[g(x)]=x f[g(x)]=x ,二者是等价的。因为 g [ f ( x ) ] = x ⇒ f { g [ f ( x ) ] } = f ( x ) ⇒ f [ g ( x ) ] = x g[f(x)]=x\Rightarrow f\{g[f(x)]\}=f(x)\Rightarrow f[g(x)]=x g[f(x)]=xf{ g[f(x)]}=f(x)f[g(x)]=x

2.怎么求

这个就可以看专业文献了。不过,为了保证反演法可行,它强调了 f ( x ) , g ( x ) f(x),g(x) f(x),g(x) 只含有 x x x 的正整数次幂(所以没有常数)。按照我的个人习惯,用 [ [ x k ] ] f ( x ) \big[[x^k]\big]f(x) [[xk]]f(x) 表示 f ( x ) f(x) f(x) x k x^k xk 的系数。先写结论
[ [ x n ] ] f − 1 ( x ) = 1 n [ [ x − 1 ] ] 1 f ( x ) n = 1 n [ [ x n − 1 ] ] x n f ( x ) n \big[[x^n]\big]f^{-1}(x)=\frac{1}{n}\big[[x^{-1}]\big]\frac{1}{f(x)^n}=\frac{1}{n}\big[[x^{n-1}]\big]\frac{x^n}{f(x)^n} [[xn]]f1(x)=n1[[x1]]f(x)n1=n1[[xn1]]f(x)nxn

注:原文写的是,若 f ( x ) = x ϕ ( x ) f(x)={x\over\phi(x)} f(x)=ϕ(x)x [ [ x n ] ] f − 1 ( x ) = 1 n [ [ x n − 1 ] ] ϕ ( x ) n \big[[x^n]\big]f^{-1}(x)=\frac{1}{n}\big[[x^{n-1}]\big]\phi(x)^n [[xn]]f1(x)=n1[[xn1]]ϕ(x)n ,我不太明白这与 ϕ ( x ) = x f ( x ) \phi(x)={x\over f(x)} ϕ(x)=f(x)x 的区别……

证明其实并不难,只要你用心看。首先,设 g ( x ) = f − 1 ( x ) = ∑ i = 1 + ∞ b i x i g(x)=f^{-1}(x)=\sum_{i=1}^{+\infty}b_ix^i g(x)=f1(x)=i=1+bixi 。其次,根据定义有 g [ f ( x ) ] = x g[f(x)]=x g[f(x)]=x 。左边展开得
∑ i = 1 + ∞ b i f ( x ) i = x \sum_{i=1}^{+\infty}b_if(x)^i=x i=1+bif(x)i=x

两边同时以 x x x 为自变量求导,
∑ i = 1 + ∞ i b i f ( x ) i − 1 f ′ ( x ) = 1 \sum_{i=1}^{+\infty}ib_if(x)^{i-1}f'(x)=1 i=1+ibif(x)i1f(x)=1

两边同时除以 f ( x ) n f(x)^n f(x)n
∑ i = 1 + ∞ i b i f ( x ) i − n − 1 f ′ ( x ) = 1 f ( x ) n \sum_{i=1}^{+\infty}ib_if(x)^{i-n-1}f'(x)={1\over f(x)^n} i=1+ibif(x)in1f(x)=f(x)n1

左边可以 脱水缩合 去掉 f ′ ( x ) f'(x) f(x) 而写成
n b n f ′ ( x ) f ( x ) + ∑ i ≥ 1 i ≠ n i ⋅ b i i − n [ f ( x ) i − n ] ′ = 1 f ( x ) n nb_n{f'(x)\over f(x)}+\sum_{i\ge 1}^{i\ne n}{i\cdot b_i\over i-n}\left[f(x)^{i-n}\right]'={1\over f(x)^n} nbnf(x)f(x)+i1i=ninibi[f(x)in]=f(x)n1

考虑两边同时取 [ [ x − 1 ] ] \big[[x^{-1}]\big] [[x1]] 因为 f ( x ) i − n f(x)^{i-n} f(x)in 是形式幂级数,而形式幂级数求导不会得到 x − 1 x^{-1} x1 的项。注:我没学过抽象代数,所以有一个概念不是很懂,导致这里始终学不懂。我把我的揣测写在了最后。
n b n [ [ x − 1 ] ] f ′ ( x ) f ( x ) = [ [ x − 1 ] ] 1 f ( x ) n nb_n\big[[x^{-1}]\big]\frac{f'(x)}{f(x)}=\big[[x^{-1}]\big]\frac{1}{f(x)^n} nbn[[x1]]f(x)f(x)=[[x1]]f(x)n1

不妨设 f ( x ) = ∑ i = 1 + ∞ a i x i f(x)=\sum_{i=1}^{+\infty}a_ix^i f(x)=i=1+aixi ,手算一下这个分数的值,
f ′ ( x ) f ( x ) = ∑ i = 1 + ∞ i a i x i − 1 ∑ i = 1 + ∞ a i x i = ∑ i = 1 + ∞ i a i x i − 1 a 1 x × 1 1 + ∑ i = 2 + ∞ a i a 1 x i − 1 = ( x − 1 + ∑ i = 2 + ∞ i a i a 1 x i − 2 ) 1 1 + λ ( x ) = [ x − 1 + γ ( x ) ] [ 1 + ∑ i = 1 + ∞ ( − 1 ) i λ ( x ) i ] \begin{aligned} {f'(x)\over f(x)}&=\frac{\sum_{i=1}^{+\infty}ia_ix^{i-1}}{\sum_{i=1}^{+\infty} a_ix^i}\\ &=\frac{\sum_{i=1}^{+\infty}ia_ix^{i-1}}{a_1x}\times\frac{1}{1+\sum_{i=2}^{+\infty}{a_i\over a_1}x^{i-1}}\\ &=\left(x^{-1}+\sum_{i=2}^{+\infty}{ia_i\over a_1}x^{i-2}\right)\frac{1}{1+\lambda(x)}\\ &=\big[x^{-1}+\gamma(x)\big]\left[1+\sum_{i=1}^{+\infty}(-1)^i\lambda(x)^i\right] \end{aligned} f(x)f(x)=i=1+aixii=1+iaixi1=a1xi=1+iaixi1×1+i=2+a1aixi11=(x1+i=2+a1iaixi2)1+λ(x)1=[x1+γ(x)][1+i=1+(1)iλ(x)i]

这里用 γ ( x ) \gamma(x) γ(x) λ ( x ) \lambda(x) λ(x) 代替了两个形式幂级数。不要紧,毕竟二者不可能给 x − 1 x^{-1} x1 作贡献。所以
[ [ x − 1 ] ] f ′ ( x ) f ( x ) = 1 \big[[x^{-1}]\big]\frac{f'(x)}{f(x)}=1 [[x1]]f(x)f(x)=1

进而
b n = 1 n [ [ x − 1 ] ] 1 f ( x ) n b_n=\frac{1}{n}\big[[x^{-1}]\big]{1\over f(x)^n} bn=n1[[x1]]f(x)n1

这与开头的「结论」的式子是等价的。

∗ \color{red}{^{*}} 不知道这一点是不是对的:形式幂级数允许 x − k x^{-k} xk 出现,不允许 1 λ ( x ) k ( k ∈ N + ) {1\over \lambda(x)^k}(k\in \N^+) λ(x)k1(kN+) 出现,其中 λ ( x ) \lambda(x) λ(x) 为多项式(非单个 x x x 的次幂)。

3.拓展

h ( 0 ) = 0 h(0)=0 h(0)=0
[ [ x n ] ] h [ g ( x ) ] = 1 n [ [ x − 1 ] ] h ′ ( x ) f ( x ) n \big[[x^n]\big]h[g(x)]=\frac{1}{n}\big[[x^{-1}]\big]{h'(x)\over f(x)^n} [[xn]]h[g(x)]=n1[[x1]]f(x)nh(x)

其中 g ( x ) = f − 1 ( x ) g(x)=f^{-1}(x) g(x)=f1(x) 即二者互为复合逆。

你可能感兴趣的:(C++,数学,#,多项式/生成函数)