[学习笔记] 牛顿迭代

描述

已知 (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} ceil}})

(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} ceil - 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} ]

[egin{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(nlog n) = O(n log n))

开方

[g(f(x)) equiv f_0^2(x) - h(x) equiv 0 pmod{x^n} ]

[egin{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} ]

[egin{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(nlog n))

原文地址:https://www.cnblogs.com/BruceW/p/14079514.html