多项式

多项式各种运算都是在 \(\pmod {x^n}\) 的意义下进行的。

牛顿迭代

多项式操作大量用到牛顿迭代思想,举个简单的例子:
如果 \(f(x)=x^2+7x+3\),求一个根,可以设置一个合理的初值比如 \(0\)
然后不断计算 \(x=x-\frac{f(x)}{f'(x)}\),几何上相当于在 \((x,f(x))\) 处做切线向 \(0\) 点靠近。
\(x_0=0,f_0=3\)\(x_1=-0.42857,f_1=0.1837\)\(x_2=-0.45847,f_2=0.0009\)\(x_3=-0.45862,f_3=0\)

多项式牛顿迭代

在上例中 \(x\) 是一个变量,现在 \(x\) 换为多项式。
现在要求 \(F(g(x))=0\),为方便起见,直接记为 \(F(g)=0\),则不断计算 \(g=g-\frac{f(g)}{f'(g)}\)。注意,这里 \(g\) 是关于 \(x\) 的多项式。
不断迭代上式,每次求到的有效位数会翻倍。

多项式求逆

已知多项式 \(f(x)\),要求 \(g(x)\) 满足 \(f(x)g(x)=1\)
稍微移项,\(f(x)g(x)-1=0\)。如果令 \(F(g)=fg-1\),迭代的式子为:
\(g=g-\frac{F(g)}{F'(g)}= g-\frac{fg-1}{f}=g-g+\frac{1}{f}\) 虽然正确,但很平凡。
尝试令 \(F(g)=f-\frac{1}{g}\),此时牛顿迭代变为:
\(g=g-\frac{F(g)}{F'(g)}=g-\frac{f-\frac{1}{g}}{\frac{1}{g^2}}=g-fg^2+g=g(2-fg)\)
很显然 \(g_0=\frac{1}{f_0}\),因为这是唯一产生 \(fg_0=1\) 的项。

每迭代一次,项数翻倍,共需 \(log\) 次迭代。
复杂度为 \(T(n)=T(\frac{n}{2})+O(nlogn)=O(nlogn)\)

多项式除法

\(f(x)/g(x)\),等于 \(f(x)\frac{1}{g(x)}\),可以先对 \(g(x)\) 求逆,再做多项式乘法。
复杂度 \(O(nlogn)\)

多项式微分

\(F(x)=a_0+a_1x+a_2x^2+a_3x^3+a_4x^4...\)
\(f(x)=F'(x)=a_1+2a_2x+3a_3x^2+4a_4x^3...\)
复杂度 \(O(n)\)

多项式积分

\(f(x)=a_0+a_1x+a_2x^2+a_3x^3+a_4x^4...\)
\(F(x)=\int f(x)=a_0x+\frac{a_1}{2}x^2+\frac{a_2}{3}x^3+\frac{a_3}{4}x^4+\frac{a_4}{5}x^5...\)
复杂度 \(O(n)\)

多项式对数

\(\ln' f(x)=f'(x)/f(x)=f'(x)\frac{1}{f(x)}\)
进行积分可得 \(\ln f(x)=f'(x)/f(x)=\int f'(x)\frac{1}{f(x)}\)
复杂度 \(O(nlogn)\)

指数

\(g(x)=e^{f(x)}\),若令 \(F(g)=g-e^f\),则迭代
\(g=g-\frac{F(g)}{F'(g)}=g-\frac{g-e^f}{1}=e^f\) 很平凡。
若令 \(F(g)=\ln g- \ln e^f=\ln g-f\),则迭代
\(g=g-\frac{F(g)}{F'(g)}=g-\frac{\ln g-f}{\frac{1}{g}}=g(1-\ln g +f)\)
迭代起点 \(g_0=1\)
复杂度 \(T(n)=T(n/2)+O(nlogn)=O(nlogn)\)

开方

\(g(x)=f^{1/2}(x)\),可以令 \(F(x)=g^2(x)-f(x)\)
\(g=g-\frac{F(g)}{F'(g)}=g-\frac{g^2-f}{2g}=\frac{g+fg^{-1}}{2}\)
迭代起点需要用二次剩余计算 \(g_0=\sqrt{f_0}\)
复杂度 \(T(n)=T(n/2)+O(nlogn)=O(nlogn)\)

快速幂

\(f^k(x)\)\(\ln f^k(x)=k\ln f(x)\)
\(f^k(x)=e^{k\ln f(x)}\)
所以求对数后乘上常数再指数一下就可以了。
复杂度 \(O(nlogn)\)

posted @ 2026-06-21 11:20  qwynick  阅读(7)  评论(0)    收藏  举报