多项式求逆
给定多项式(A(x)),求一个多项式(B(x))满足(A(x)B(x)=1left( ext{mod} x^n ight))。
假设已求出多项式(C(x))满足(A(x)C(x)=1left( ext{mod} x^{lceilfrac{n}{2} ceil} ight))。
又因为(A(x)B(X)=1left( ext{mod} x^{lceilfrac{n}{2} ceil} ight)),
( herefore A(x)left(B(x)-C(x) ight)=0left( ext{mod} x^{lceilfrac{n}{2} ceil} ight))
(ecause A(x) ot=0left( ext{mod} x^{lceilfrac{n}{2} ceil} ight))
( herefore B(x)-C(x)=0left( ext{mod} x^{lceilfrac{n}{2} ceil} ight))
( herefore left(B(x)-C(x) ight)^2=0left( ext{mod} x^n ight))
( herefore B^2(x)+C^2(x)-2B(x)C(x)=0left( ext{mod} x^n ight))
两边同乘(A(x))得(A(x)C^2(x)+B(x)-2C(x)=0left( ext{mod} x^n ight))
( herefore B(x)=C(x)(2-C(x)A(x))left( ext{mod} x^n ight))
多项式除法
已知(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-1)项。
定义(A(x))的翻转(A^R(x)=x^{n-1}A(frac{1}{x})=sum_{i=0}^{n-1}a_{n-i-1}x^i)
(left. egin{array}{rl}\ A^R(x)&=x^{n-1}Aleft(frac{1}{x} ight)\ &=x^{n-1}left(Bleft(frac{1}{x} ight)Dleft(frac{1}{x} ight)+Rleft(frac{1}{x} ight) ight)\ &=x^{n-m}Dleft(frac{1}{x} ight)x^{m-1}Bleft(frac{1}{x} ight)+x^{n-m+1}x^{m-2}Rleft(frac{1}{x} ight)\ &=D^R(x)B^R(x)+x^{n-m+1}R^R(x) end{array} ight.)
( herefore A^R(x)=B^R(x)D^R(x)( ext{mod} x^{n-m+1}))
( D^R(x)=frac{A^R(x)}{B^R(x)}( ext{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_0leftarrow x_0-frac{f(x_0)}{f'(x_0)}),多次迭代后求出近似解。
现在考虑的是多项式函数(f(A(x)))。考虑倍增:
当n=1时,直接算出来。
现在已经求出来(f(A_0(x))=0left( ext{mod} x^{lceilfrac{n}{2} ceil} ight)),那么考虑泰勒展开,
(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))有(lceilfrac{n}{2} ceil)项,而他们的前(lceilfrac{n}{2} ceil)完全相同,那么(A(x)-A_0(x))的前(lceilfrac{n}{2} ceil)项为0,那么((A(x)-A_0(x))^2)及更高项的前n项均为0。所以对于多项式来说,保留线性部分得到的就是准确解。
( herefore A(x)=A_0(x)-frac{f(A_0(x))}{f'(A_0(x))})
多项式函数求导时,应把常数多项式看做常数来求导,例如:$$f(A(x))=A^2(x)+B(x)$$那么$$f'(A(x))=2A(x), ot=2A(x)+B'(x)$$(其实求的就是(frac{df}{dA}))
多零点的函数,求出来的是哪个零点,取决于常数项取哪个零点,零点的数量取决于常数项的零点的个数。
多项式对数
求(B(x)=ln(A(x))( ext{mod} x^n))
(ln(A(x))=int(ln(A(x)))'=intfrac{A'(x)}{A(x)})
只需要多项式求逆和多项式求导。
多项式exp
求出(e^{A(x)}( ext{mod} x^n))
设(f(x)=e^{A(x)}( ext{mod} x^n))
(ln f(x)-A(x)=0( ext{mod} x^n))
设(g(f(x))=ln f(x)-A(x))
然后牛顿迭代,
多项式幂
(A^k(x)( ext{mod} x^n))
(A^k(x)=e^{kln A(x)}( ext{mod} x^n))
警惕大常数。
其中的k可以是个多项式。
多项式三角函数
求
用欧拉公式(e^{ix}=cos x+isin x),
(e^{iA(x)}=cos A(x)+isin A(x))
似乎这个没什么用。。。
多项式开方
已知(A(x)),求:
设(g(f(x))=f^2(x)-A(x)),要求的就是这个函数的零点啦。
那么套牛顿迭代,
常数项上有个东西叫做二次剩余。