mlg的多项式全家桶

引入

首先,我们有这样的两个式子:$$快速傅里叶卷积式: F(\omega_{n}^{k+n/2})=FL(\omega_{n/2}^{k})+\omega_{n}^{k}FR(\omega_{n/2}^{k})$$

$$牛顿迭代式:已知G(F(x))=0,则F(x)=F_{0}(x)-\frac{G(F_{0}(x))}{G^{'}(F_{0}(x))}$$

根据快速傅里叶卷积式,我们可以构造出多项式乘法模型.在多项式乘法的基础上,根据牛顿迭代式,我们可以推导出多项式的其它运算.

多项式求逆

已知多项式$H(x)$, 求$F(x)$使得$F(x)\cdot H(x) \equiv 1(\mod 998244353)$.

先构造出复合多项式$ G(F(x))=\frac{1}{F(x)}-H(x) $ ,然后根据牛顿迭代式得到:$$F(x)=F_{0}(x)-\frac{F_{0}^{-1}(x)-H(x)}{-F_{0}^{2}(x)}=F_{0}(x)[2-F_{0}(x)\cdot H(x)]$$ 据此牛顿迭代即可,边界为$F[0]=inv(H[0])$

时间复杂度$$T(n)=T(n/2)+\Omicron(n\log n)=\Omicron(n\log n)$$

多项式开根

已知多项式$H(x)$,求$F(x)$使得$F^{2}(x) \equiv H(x) (\mod 998244353)$(其中$H[0]$为模998244353下的二次剩余).

先构造复合多项式$ G(F(x))=F^{2}(x)-H(x)$  ,然后根据牛顿迭代式得:$$F(x)=F_{0}(x)-\frac{F_{0}^{2}-H(x)}{2\cdot F_{0}(x)}=2^{-1}[F_{0}(x)+H(x) \cdot F^{-1}(x)]$$ 界为$F[0]=x_{0}$,其中$x_{0}$为二次剩余方程$x_{0}^{2}\equiv H[0](\mod 998244353)$的解,可以运用$cipolla$算法求出.

时间复杂度$$T(n)=T(n/2)+\Omicron(n\log n)=\Omicron(n\log n)$$

多项式带余除法

给定一个$n$次多项式$F(x)$和一个$m$次多项式$G(x)$,请求出多项式$Q(x)$,$R(x)$,满足以下条件:

  • $Q(x)$次数为$n-m$,$R(x)$次数小于$m$
  • $F(x)=Q(x)*G(x)+R(x)$

所有运算在模998244353意义下进行.

此题操作起来比较麻烦.首先对一个度为$n$的多项式$F(x)$,我们构造多项式$F^{R}(x)=x^{n}F(\frac{1}{x})$,不难看出$F^{R}(x)$与$F(x)$各项系数相反.

考虑原式,我们在两边同时将主元$x$换成$x^{-1}$,然后同时乘上$x^{n}$,即$$x^{n}F(\frac{1}{x})=x^{m}G(x)x^{n-m}Q(x)+x^{n-m+1}x^{m-1}R(x)$$
于是有$F^{R}(x)=G^{R}(x)Q^{R}(x)+x^{n-m+1}R^{R}x$,然后对$x^{n-m+1}$取模消除余数的影响,于是就有$Q^{R}(x)=F^{R}(x)G^{R^{-1}}(x)$,剩下的凭直觉去ntt即可.

多项式对数函数(Ln)

给定一个$n$次多项式$H(x)$,求多项式$F(x)$使得$F(x)\equiv \ln H(x) (\mod 998244353)$.

由于对数函数的反函数是指数函数,而指数函数又不是我们熟悉的类型,于是此时牛顿迭代不再适用,我们可以换一种思路.

观察到对数函数的导函数$(\ln x)^{'}=\frac{1}{x}$,我们已知$\ln(H(x))=F(x)$,然后对其求导,得到$F^{'}(x)=\frac{H^{'}(x)}{H(x)}$,然后求个导取个逆积个分就可以啦!

至此,我们成功地把陌生的多项式对数函数转换成熟悉的多项式求导积分乘法逆,式子如下:$$F(x)=\int(H^{'}(x)H^{-1}(x))$$

多项式指数函数(Exp)

给定一个$n$次多项式$H(x)$,求多项式$F(x)$使得$F(x) \equiv e^{H(x)}(\mod 998244353)$

上面我们已经求出了指数函数的反函数——对数函数,于是我们可以直接构造$G(F(x))=\ln F(x)-H(x)$,然后牛顿迭代得到$$F(x)=F_{0}(x)-\frac{\ln F_{0}(x)+H(x)}{F_{0}^{-1}(x)}=F_{0}(x)[1-ln F_{0}(x)+H(x)]$$

时间复杂度$$T(n)=T(n/2)+\Omicron(n\log n)=\Omicron(n\log n)$$

多项式三角函数

多项式三角函数,这里主要推导$sin$和$cos$.

首先,根据欧拉公式,有$e^{ix}=\cos x +i\sin x$,同时有$e^{-ix}=\cos x -i\sin x$.

然后加减消元,即可得出$$\sin x=\frac{e^{ix}-e^{-ix}}{2i}$$ $$\cos x=\frac{e^{ix}+e^{-ix}}{2}$$

然后在数论里,就是求个$exp$的事了呀!值得注意的是,我们有$i^{2} \equiv -1 \equiv 998244352 ( \mod 998244353)$,所以$i \equiv \sqrt{998244352} ( \mod 998244353)$,然后就是一个$cipolla$求二次剩余解的事了.

多项式反三角函数

多项式反三角函数,这里我们主要推导$arcsin$和$arctan$

这两个也不是我们所熟悉的,但类比我们推导对数函数的思路,我们同样可以将这两个函数转化成求导+积分的形式.

首先,我们有$$\frac{d}{dx} arcsin x=\frac{1}{\sqrt{1-x^{2}}}$$ $$\frac{d}{dx}arctan x=\frac{1}{1+x^{2}}$$

这不就是一个多项式加法卷积开根求逆的事了吗?

最后再积个分就行了.具体式子如下:$$H(x)=\arcsin F(x)=\int(\frac{1}{\sqrt{1-F^{2}(x)}})$$ $$H(x)=\arctan F(x)=\int (\frac{1}{1+F^{2}(x)})$$

 

终!

 

posted @ 2020-10-16 16:57  月落乌啼算钱  阅读(123)  评论(3编辑  收藏  举报