[学习笔记] 牛顿迭代
描述
已知 \(g(x)\),求 \(f(x)\) 满足 \(g(f(x)) \equiv 0 \pmod{x^n}\)。
方法
倍增。
设 \(f_0(x)\) 满足 \(g(f_0(x)) \equiv 0 \pmod{x^{\lceil \frac{n}{2} \rceil}}\)。
将 \(g(x)\) 在 \(f_0(x)\) 处泰勒展开,
\[g(x) \equiv \sum_{i \ge 0}\frac{g^{(i)}(f_0(x))}{i!}(f(x) - f_0(x))^i \equiv 0 \pmod{x^n}
\]
由于 \(f(x)\) 和 \(f_0(x)\) 的前 \(\lceil \frac{n}{2} \rceil - 1\) 项相同,所以 \(\forall i \ge 2,(f(x) - f_0(x))^i \equiv 0 \pmod{x^n}\)
所以
\[g(x) \equiv g(f_0(x)) + g'(f_0(x))(f(x) - f_0(x)) \equiv 0 \pmod{x^n}
\]
移项可得
\[f(x) = f_0(x) - \frac{g(f_0(x))}{g'(f_0(x))}
\]
用途
设 \(h(x)\) 为原多项式,
求逆
设
\[g(f(x)) \equiv \frac{1}{f(x)} - h(x) \equiv 0 \pmod{x^n}
\]
则
\[\begin{aligned}
f(x)
&\equiv f_0(x) - \frac{\frac{1}{f_0(x)} - h(x)}{-\frac{1}{f_0^2(x)}} \pmod{x^n} \\
&\equiv f_0(x) + f_0(x) - f_0^2(x)h(x) \pmod{x^n} \\
&\equiv f_0(x)(2 - f_0(x)h(x)) \pmod{x^n} \\
\end{aligned}
\]
时间复杂度为 \(T(n) = T(\frac{n}{2}) + O(n\log n) = O(n \log n)\)。
开方
设
\[g(f(x)) \equiv f_0^2(x) - h(x) \equiv 0 \pmod{x^n}
\]
则
\[\begin{aligned}
f(x)
&\equiv f_0(x) - \frac{f_0^2(x) - h(x)}{2f_0(x)} \pmod{x^n} \\
&\equiv \frac{1}{2}(f_0(x) - \frac{h(x)}{f_0(x)})
\end{aligned}
\]
时间复杂度为 \(O(n \log n)\)。
exp
前置知识:\((\ln x)' = \frac{1}{x}\)
设
\[g(f(x)) \equiv \ln f(x) - h(x) \equiv 0 \pmod{x^n}
\]
则
\[\begin{aligned}
f(x)
&\equiv f_0(x) - \frac{\ln f_0(x) - h(x)}{\frac{1}{f_0(x)}} \pmod{x^n} \\
&\equiv f_0(x)(1 - \ln f_0(x) + h(x)) \pmod{x^n}
\end{aligned}
\]
时间复杂度为 \(O(n\log n)\)。