下文中的“复合”默认为右复合。
复合 \(x+c\):
展开后差卷积。
复合 \(e^x\):
\[\sum a_i(e^x)^i=\sum a_i\sum_j\frac{i^j}{j!}=\sum_{j}\frac{1}{j!}\sum_i\ a_ii^j \]只需计算 \(\sum_i\frac{a_i}{1-ix}\),分治通分即可。
复合 \(\sqrt{1+x}\):
对于偶数项,我们可以先复合 \(\sqrt{x}\)(将 \(2k\) 乘系数后平移到 \(k\)),再右复合 \(1+x\)。
对于奇数项,使用二项式定理:
\[(1+x)^{k+\frac 12}=\sum_{i\geqslant 0}{k+\frac 12\choose i}x^i\\=\sum_{i\geqslant 0}\frac{(2k+1)(2k-1)\cdot\cdots\cdot(2k-2i+3)}{2^ii!}x^i\\=\sum_{i\geqslant 0}\frac{(2i+1)!!}{2^ii!(2i-2j+1)!!}x^j \]差卷积即可。
复合 \(ax^2+bx+c\):
我们取系数 \(\alpha,\beta,\gamma\),并进行:复合 \(x+\gamma\),复合 \(\alpha x\),复合 \(x^2\)(这一步只需将 \(k\) 处系数移动到 \(2k\) 处),复合 \(x+\beta\),于是 \(F(x)\) 会变为 \(F((\alpha(x+\gamma))^2+\beta)\),解下方程就好了(而且显然有解)。
复合 \(\frac{1}{dx^2+ex+f}\):
我们记 \(F^R\) 为 \(F\) 系数翻转后的多项式,注意到 \(F^R=x^{|F|}F(\frac 1x)\)(这是差卷积)。
利用这一性质,我们可以直接翻转系数并复合 \(dx^2+ex+f\),最后除以 \((dx^2+ex+f)^n\)。这一步并不需要求逆,因为我们有:
\[G=\frac{1}{(dx^2+ex+f)^n}\\\ln G=-n\ln(dx^2+ex+f)\\\frac{G'}{G}=(-n)\frac{2dx+e}{dx^2+ex+f} \]整理后可以得到递推式,可以线性求解。
复合 \(\frac{ax+b}{cx+d}\):
取系数 \(\alpha,\beta,\gamma\),翻转系数,复合 \(\alpha x+\beta\) 得到 \(x^nF(\frac{1}{\alpha x+\beta})\),翻转系数并复合 \(\gamma x+\delta\) 得到 \(F(\frac{\gamma x+\delta}{\alpha+\beta {\gamma x+\delta}})\),解方程即可。
复合 \(\frac{(x+b)^2}{dx^2+ex+f}\):
不妨先求得 \(\frac{x^2}{dx^2+(e-2db)x+(f-db^2-eb)}\) 并最后复合 \(x+b\),记新的分式为 \(\frac{x^2}{dx^2+e'x+f'}\),使用上面的方法将分式取倒数:
\[F(\frac{x^2}{dx^2+e'x+f'})=F^R(\frac{dx^2}{x^2}+\frac{e'x}{x^2}+\frac{f'}{x^2})(\frac{x^2}{dx^2+e'x+f'})^n \]而 \(F^R(d+\frac{e'}{x}+\frac{f'}{x^2})\) 仍然可以通过该公式求得:
\[F^R(d+\frac{e'}{x}+\frac{f'}{x^2})=(\frac{1}{x})^{2n}(F^R(f'x^2+e'x+d))^R \]括号内的部分可以通过上文的方法求得,于是我们完成了复合。
实现中由于要使用截断,需注意一个细节:我们应先完成平移再乘上 \((\frac{1}{d(x+b)^2+e'(x+b)+f'})^n=(\frac{1}{dx^2+ex+f})^n\),因为该式有无限项,乘上它之后必定要截断,而复合 \(+b\) 是向下的差卷积,截断会忽略有贡献的项。
复合 \(\frac{ax^2+bx+c}{dx^2+ex+f}\):
我们的目标是将分式形式化为前一部分所述的形式。
取系数 \(\lambda\),将多项式平移 \(\lambda\) 得到:
\[\frac{a(x+\lambda)^2+b(x+\lambda)+c}{d(x+\lambda)^2+e(x+\lambda)+f} \]我们若使得 \(\frac{2a\lambda+b}{a\lambda^2+b\lambda+c}=\frac{2d\lambda+e}{d\lambda^2+e\lambda+f}\),那么我们便可减去一常数使分式上方仅剩二次项。
令 \(\lambda\) 为 \((ae-bd)\lambda^2+2(af-cd)\lambda+(bf-ce)=0\) 的解(无解需要扩域),那么可平移常数 \(\lambda=\frac{2a\lambda+b}{2d\lambda+e}\)(易证其存在性),化为前一种情况。
复合 \(ax^3+bx^2+cx+d\):
取系数 \(\alpha,\beta,\gamma\),并复合 \(ax+\gamma\),\(x^3+\beta x\)(假设我们能做),\(x+\alpha\),容易解出一组符合的系数,因此问题变为复合 \(x^3+cx\)。
事实上我们只需解决任意 \(c_0\ne 0\) 的情况,因为可以取系数 \(\eta,\theta\) 作复合 \((\eta x)\circ(x^3-c_0x)\circ(\theta x)\)(无解时需扩域)。
不妨取 \(c=-3\) 这一问题,而我们有:
\[(x^3-3x)\circ(x+\frac 1x)=x^3+\frac 1{x^3}\\x^3-3x=(x+\frac 1x)\circ x^3\circ(x+\frac 1x)^{\langle -1\rangle} \]让我们继续拆分 \((1+\frac 1x)^{\langle-1\rangle}\):
\[(\frac{1+\frac1x}2)=(\frac{x+1}{x-1})\circ x^2\circ(\frac{x+1}{x-1})\\(\frac{1+\frac 1x}{2})^{\langle-1\rangle}=(\frac{x+1}{x-1})^{\langle-1\rangle}\circ(x^2)^{\langle-1\rangle}\circ(\frac{x+1}{x-1})^{\langle-1\rangle}\\=(\frac{x+1}{x-1})\circ\sqrt x\circ(\frac{x+1}{x-1}) \]复合 \(\sqrt x\) 需要手动维护 \(x^{k+\frac12}\) 次项。
参考资料:
- 浅谈多项式复合和拉格朗日反演 by alpha1022
- 任意二次分式均可于 nlogn 时间复合 by 飞雨烟雁
- 关于三次多项式复合的一个注记 by EI
- conversation with ei,alpha1022