多项式的各种操作

多项式求逆

给定多项式\(A(x)\),求一个多项式\(B(x)\)满足\(A(x)B(x)=1\left(\text{mod}\ x^n\right)\)

假设已求出多项式\(C(x)\)满足\(A(x)C(x)=1\left(\text{mod}\ x^{\lceil\frac{n}{2}\rceil}\right)\)

又因为\(A(x)B(X)=1\left(\text{mod}\ x^{\lceil\frac{n}{2}\rceil}\right)\)

\(\therefore A(x)\left(B(x)-C(x)\right)=0\left(\text{mod}\ x^{\lceil\frac{n}{2}\rceil}\right)\)

\(\because A(x)\not=0\left(\text{mod}\ x^{\lceil\frac{n}{2}\rceil}\right)\)

\(\therefore B(x)-C(x)=0\left(\text{mod}\ x^{\lceil\frac{n}{2}\rceil}\right)\)

\(\therefore \left(B(x)-C(x)\right)^2=0\left(\text{mod}\ x^n\right)\)

\(\therefore B^2(x)+C^2(x)-2B(x)C(x)=0\left(\text{mod}\ x^n\right)\)

两边同乘\(A(x)\)\(A(x)C^2(x)+B(x)-2C(x)=0\left(\text{mod}\ x^n\right)\)

\(\therefore B(x)=C(x)(2-C(x)A(x))\left(\text{mod}\ x^n\right)\)

多项式除法

已知\(A(x),B(x)\),求\(A(x)=B(x)D(x)+R(x)\)

其中,\(A(x)\)有n项,\(B(x)\)有m项,\(D(x)\)有n-m+1项,\(R(x)<m\)项。

定义\(A(x)\)的翻转\(A^R(x)=x^{n-1}A(\frac{1}{x})=\sum_{i=0}^{n-1}a_{n-i-1}x^i\)

\(\left. \begin{array}{rl}\\ A^R(x)&=x^{n-1}A\left(\frac{1}{x}\right)\\ &=x^{n-1}\left(B\left(\frac{1}{x}\right)D\left(\frac{1}{x}\right)+R\left(\frac{1}{x}\right)\right)\\ &=x^{n-m}D\left(\frac{1}{x}\right)x^{m-1}B\left(\frac{1}{x}\right)+x^{n-m+1}x^{m-2}R\left(\frac{1}{x}\right)\\ &=D^R(x)B^R(x)+x^{n-m+1}R^R(x) \end{array} \right.\)

\(\therefore A^R(x)=B^R(x)D^R(x)(\text{mod}\ x^{n-m+1})\)
\(\ \ \ \ D^R(x)=\frac{A^R(x)}{B^R(x)}(\text{mod}\ x^{n-m+1})\)

然后即可求出\(D(x)\),代回去即可求出\(R(x)\)

多项式牛顿迭代

牛顿迭代:

求函数\(f(x)\)的零点:

随便选一个点\(x_0\),把\(f(x)\)泰勒展开,

\(f(x)=f(x_0)+f'(x_0)(x-x_0)+\frac{f''(x_0)}{2!}(x-x_0)^2+\frac{f'''(x_0)}{3!}(x-x_0)^3+\cdots\)

然后只保留线性部分,得到

\(f(x)\approx f(x_0)+f'(x_0)(x-x_0)=0\)

然后令\(x_0\leftarrow x_0-\frac{f(x_0)}{f'(x_0)}\),多次迭代后求出近似解。


现在考虑的是多项式函数\(f(A(x))\)。考虑倍增:

当n=1时,直接算出来。

现在已经求出来\(f(A_0(x))=0\left(\text{mod}\ x^{\lceil\frac{n}{2}\rceil}\right)\),那么考虑泰勒展开,

\(f(A(x))=f(A_0(x))+f'(A_0(x))(A(x)-A_0(x))+\frac{f''(A_0(x))}{2}(A(x)-A_0(x))^2+\cdots\)

因为\(A(x)\)有n项,\(A_0(0)\)\(\lceil\frac{n}{2}\rceil\)项,而他们的前\(\lceil\frac{n}{2}\rceil\)完全相同,那么\(A(x)-A_0(x)\)的前\(\lceil\frac{n}{2}\rceil\)项为0,那么\((A(x)-A_0(x))^2\)及更高项的前n项均为0。所以对于多项式来说,保留线性部分得到的就是准确解。

\(\therefore A(x)=A_0(x)-\frac{f(A_0(x))}{f'(A_0(x))}\)

  1. 多项式函数求导时,应把常数多项式看做常数来求导,例如:$$f(A(x))=A^2(x)+B(x)$$那么$$f'(A(x))=2A(x),\not=2A(x)+B'(x)$$(其实求的就是\(\frac{df}{dA}\)

  2. 多零点的函数,求出来的是哪个零点,取决于常数项取哪个零点,零点的数量取决于常数项的零点的个数。

多项式对数

\(B(x)=\ln(A(x))(\text{mod}\ x^n)\)

\(\ln(A(x))=\int(\ln(A(x)))'=\int\frac{A'(x)}{A(x)}\)

只需要多项式求逆和多项式求导。

多项式exp

求出\(e^{A(x)}(\text{mod}\ x^n)\)

\(f(x)=e^{A(x)}(\text{mod}\ x^n)\)

\(\ln f(x)-A(x)=0(\text{mod}\ x^n)\)

\(g(f(x))=\ln f(x)-A(x)\)

然后牛顿迭代,

\[f(x)=f_0(x)-\frac{\ln f_0(x)-A(x)}{\cfrac{1}{f_0(x)}} \]

\[f(x)=f_0(x)(1-\ln f_0(x)+A(x)) \]

多项式幂

\(A^k(x)(\text{mod}\ x^n)\)

\(A^k(x)=e^{k\ln A(x)}(\text{mod}\ x^n)\)

警惕大常数。

其中的k可以是个多项式。

多项式三角函数

\[\sin(A(x))(\text{mod }x^n)\text{和}\cos(A(x))(\text{mod }x^n) \]

用欧拉公式\(e^{ix}=\cos x+i\sin x\)

\(e^{iA(x)}=\cos A(x)+i\sin A(x)\)

似乎这个没什么用。。。

多项式开方

已知\(A(x)\),求:

\[B^2(x)=A(x)(\text{mod }x^n) \]

\(g(f(x))=f^2(x)-A(x)\),要求的就是这个函数的零点啦。

那么套牛顿迭代,

\[f(x)=f_0(x)-\frac{f_0^2(x)-A(x)}{2f_0(x)}=\frac{f_0^2(x)+A(x)}{2f_0(x)} \]

常数项上有个东西叫做二次剩余。


例题

代码

posted @ 2019-03-14 15:42  shanxizeng  阅读(320)  评论(0编辑  收藏  举报
广告位招商,有意者请联系