多项式计算2
多项式 \(\text{Newton}\) 法
考虑如何解 \(G(x,F)=0\pmod x^n\) 下的解。
如果我们已知 \(G(x,F)=0\pmod x^m\) 的解为 \(F_0\),将其扩展到 \(G(x,F)=0\pmod {x^{2m}}\) 的解 \(F\).
我们让 \(G(x,F)\) 在 \(F=F_0\) 处 \(\text{Taylor}\) 展开,有
因为 \((F-F_0)^2=0\pmod {x^{2m}}\),所以直接有
所以迭代 \(\mathcal O(\log n)\) 次来解形式幂级数的方程。
由于在 \(\frac{\partial G}{\partial F}\) 对 \(F\) 求偏导,所以 \(x,F(x^k)(k\not=1)\) 都被视为常数。
多项式 \(\exp\) 的计算
在数据范围较小时 \(G(x)=\exp F(x)\) 对 \(x\) 微分有 \(G'(x)=\exp F(x)F'(x)=G(x)F'(x)\),展开得
暴力递推有 \(\mathcal O(n^2)\) 的计算方法。
\(\text{Bostan-mori}\) 算法
设 \(k=\max(\deg F,\deg G)\),以 \(\mathcal O(k\log k\log n)\) 求 \([x^n]H(x)=[x^n]\dfrac{F(x)}{G(x)}\).
令 \(E(x),O(x)\) 分别为 \(F(x)G(-x)\) 的偶数项和奇数项的系数。\(G(x)G(-x)=G(-x^2)\) 只有偶数项,所以设 \(U(x^2)=G(x)G(-x)\),则有
根据 \(n\) 的奇偶性分治一侧即可每次分治复杂度为 \(\mathcal O(k\log k)\),递归 \(\mathcal O(\log n)\) 次,复杂度为 \(\mathcal O(k\log k\log n)\).