多项式计算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}\) 展开,有

\[G(x,F)=G(x,F_0)+\dfrac{\partial G}{\partial F}|_{F=F_0}(F-F_0)+\dfrac{\partial^2 G}{\partial^2 F}|_{F=F_0}(F-F_0)^2+\cdots=0\pmod {x^{2m}} \]

因为 \((F-F_0)^2=0\pmod {x^{2m}}\),所以直接有

\[F=F_0-\dfrac{G(x,F_0)}{\frac{\partial G}{\partial F}|_{F=F_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)\),展开得

\[ng_n=\sum_{k=0}^{n-1}g_k(k-i)f_{k-i} \]

暴力递推有 \(\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)}\).

\[H(x)=\dfrac{F(x)}{G(x)}=\dfrac{F(x)G(-x)}{G(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)\),则有

\[H(x)=\dfrac{E(x^2)+xO(x^2)}{U(x^2)}=\dfrac{E(x^2)}{U(x^2)}+x\dfrac{O(x^2)}{U(x^2)} \]

根据 \(n\) 的奇偶性分治一侧即可每次分治复杂度为 \(\mathcal O(k\log k)\),递归 \(\mathcal O(\log n)\) 次,复杂度为 \(\mathcal O(k\log k\log n)\).

posted @ 2022-08-21 12:47  little_pinkpig  阅读(14)  评论(0)    收藏  举报