笔记-多项式相关操作
多项式求导
函数\(f(x)\)的导函数\(f^{'}(x)\)有如下性质:
\((f(x)\pm g(x))^{'}=f^{'}(x)\pm g^{'}(x)\)
\((f(x)g(x))^{'}=f^{'}(x)g(x)+f(x)g^{'}(x)\)
而且对于单项式\(f(x)=x^n\),其导数\(f^{'}(x)=nx^{n-1}\),所以其\(k(k\leq n)\)阶导数\(f^{(k)}(x)=\frac{n!}{(n-k)!}x^{n-k}\)
相应的,对于多项式\(f(x)=\sum_{i=0}^na_ix^i\),其导数\(f(x)=\sum_{i=0}^{n-1}a_{i+1}(i+1)x^i\),其\(k(k\leq n)\)阶导数\(f^{(k)}=\sum_{i=0}^{n-k}a_{i+k}\frac {(i+k)!}{i!}x^i\)
\(T(n)=O(n)\)
多项式积分
在一定程度上,积分是求导的逆运算
若\(f(x)=\sum_{i=0}^{n-1}a_ix_i\)
即\(\int f^{'}(x)\cdot dx=\sum_{i=1}^{n}\frac {a_{i-1}}{i}x^i\)
\(T(n)=O(n)\)
注意同一多项式求导需要逆序
多项式翻转
NOIP考点,但有个式子可以留意:\(f^{R}(x)=x^nf(\frac 1x)\)
多项式求逆
单个元素的逆元应该是是会求的,比如说一个数\(t\)的逆元在膜质数意义下为\(t^{p-2}\)
但现在要求求一个多项式的逆元,联想到在模数为\(x\)时可以快速求得其逆元为\(a(0)^{-1}\),可以考虑从这里开始递推
对于题目可设
\(a*b\equiv 1\pmod {x^{2p}}\\a*c\equiv 1\pmod {x^p}\)
即已知\(a,c\)求\(b\)
\(a*b\equiv 1\pmod {x^p}\\a*c\equiv 1\pmod {x^p}\)
\(\Rightarrow b-c\equiv 0\pmod {x^p}\)
\(\Rightarrow b^2-2bc+c^2\equiv 0 \pmod {x^{2p}}\)
同乘\(a\)
\(\Leftrightarrow ab^2-2abc+ac^2\equiv 0 \pmod {x^{2p}}\)
考虑到\(ab\equiv 1\pmod {x^{2p}}\)
\(\Leftrightarrow b-2c+ac^2\equiv 0 \pmod {x^{2p}}\)
\(\Leftrightarrow b\equiv 2c-ac^2 \pmod {x^{2p}}\)
\(T(n)=O(n\log_2 n)\)
牛顿迭代法
①
可以用来比较高效地求解多项式函数\(f(x)=\sum_{i=0}^na_ix^i\)零点的近似解,大致过程是,选取\(x_0\)作为零点的近似值(当然这个近似值很可能差距很大,但经过若干次牛顿迭代后将会接近零点),然后求过点\((x_o,f(x_0))\)关于\(f(x)\)的切线\(l\),然后得到直线\(l\)的零点\(x_1\)作为新的近似值,如此反复,得到的\(x_i\)会收敛
②
求解使得\(F(f(x))=0\pmod {x^n}\)的多项式\(f(x)\)
可以用类似多项式求逆的方法,从\(\bmod x^1\)的情况下开始推导至\(\bmod x^n\)的情况,\(\bmod x^1\)的情况可以直接求得,设当前\(F(f_0(x))\equiv 0\pmod {x^{\lceil \frac k2\rceil}}\),现在要求解\(F(f(x))\equiv 0\pmod {x^k}\),在\(f_0(x)\)处展开\(F(f(x))\):
由于\(f(x)\)与\(f_0(x)\)中前\(\lceil \frac k2 \rceil\)项是相同的,所以多项式\((f(x)-f_0(x))^t\)当\(t\geq 2\)时在\(\bmod x^k\)情况下为\(0\),所以
由于\(F(f(x))\equiv 0\pmod {x^k}\),所以可推得
这个式子貌似很有用
多项式开根
已知\(g(x)\),求解\(f(x)^2\equiv g(x)\pmod {x^n}\)
\(f(x)^2-g(x)\equiv 0\pmod {x^n}\)
则有\(F(f(x))\equiv f_0(x)^2-g(x)\pmod {x^n}\\F^{'}(f(x))\equiv 2f_0(x)\pmod {x^n}\)
由上述牛顿迭代得到的式子可知
\(f(x)\equiv f_0(x)-\frac{F(f_0(x))}{F^{'}(f_0(x))}\pmod {x^n}\)
\(f(x)\equiv f_0(x)-\frac {f_0(x)^2-g(x)}{2f_0(x)}\pmod {x^n}\)
\(f(x)\equiv \frac {f_0(x)^2+g(x)}{2f_0(x)}\pmod {x^n}\)
\(T(n)=O(n\log_2n)\)
另外常数项如果非1则需要求二次剩余,然而我并不会
多项式求ln
已知\(f(x)\),求解\(\ln(f(x))\)
\((\ln f(x))^{'}=\frac {d \ln f(x)}{d~f(x)}\cdot \frac{d~f(x)}{dx}=(\ln f(x))^{'}\cdot f^{'}(x)=\frac{f^{'}(x)}{f(x)}\)
所以
\(\ln f(x)=\large \int \small(\ln f(x))^{'}=\large \int \small \frac {f^{'}(x)}{f(x)}\)
\(T(n)=O(n\log_2n)\)
多项式求exp
已知\(g(x)\),求解\(f(x)=e^{g(x)}\)
令\(F(f(x))=\ln f(x)-g(x)\equiv 0\pmod {x^n}\)
则有\(F^{'}(f(x))\equiv \frac 1{f(x)}\)
由上述牛顿迭代得到的式子可知
\(f(x)\equiv f_0(x)-\frac{F(f_0(x))}{F^{'}(f_0(x))}\pmod {x^n}\)
\(f(x)\equiv f_0(x)-\frac {\ln f_0(x)-g(x)}{\frac 1{f_0(x)}}\pmod {x^n}\)
\(f(x)\equiv f_0(x)(1-\ln f_0(x)+g(x))\pmod {x^n}\)
\(T(n)=O(n\log_2n)\)
多项式求k次方
暴力\(O(n\log_2n\log_2k)\)
但数学就是那么神奇,转个弯可以加速
\(f(x)^k=(e^{\ln f(x)})^k=e^{k\cdot \ln f(x)}\)
\(T(n)=O(n\log_2n)\)
多项式除法&取模
已知\(n\)次多项式\(A(x)\)和\(m\)次多项式\(B(x)\),求解\(n-m\)次多项式\(f(x)\)与\(k(k<m)\)次多项式\(g(x)\),使得\(A(x)=f(x)B(x)+g(x)\)
消除\(g(x)\)的影响,将\(f(x)\)翻转
\(x^nA(\frac 1x)=x^nf(\frac 1x)B(\frac 1x)+x^ng(\frac 1x)\)
\(\Leftrightarrow x^nA(\frac 1x)=x^{n-m}f(\frac 1x)x^mB(\frac 1x)+x^{n-m+1}x^{m-1}g(\frac 1x)\)
\(\Leftrightarrow A^R(x)=f^R(x)B^R(x)+x^{n-m+1}g^R(x)\)
这个式子在模\(x^{n-m+1}\)的情况下,关于\(g^R(x)\)的项恒为零,同时\(deg~f^R(x)<n-m+1\)不受影响,就可以得到\(f^R(x)\)的真实值\(f^R(x)=\frac {A^R(x)}{B^R(x)}\bmod {x^{n-m+1}}\),对\(f^R(x)\)翻转可得\(f(x)\),同时计算出\(g(x)=A(x)-f(x)B(x)\)