多项式牛顿迭代法

本文仅考虑域(Field)$\mathbb{F}$上的一元$N$次多项式

$$ f(x) = \sum_{n=0}^N a_n x^n, $$

其中$x$是形式参数,$a_n \in \mathbb{F}$。我们把多项式$f(x)$简记作$f$。记

$$ \mathbb{F}[x] = \left\{\, f(x) = \sum_{n=0}^N a_n x^n \mid a_0, a_1, \dots, a_N \in \mathbb{F}, N \geq 0 \,\right\} $$

表示域$\mathbb{F}$上的所有一元多项式。

给定多项式$F \in \left(\mathbb{F}[x]\right)[x]$,求多项式$f \in \mathbb{F}[x]$,使得$F(f) \equiv 0 \pmod {x^N}$。

设$f_0 \equiv f \pmod {x^n}$,其中$n \leq N$。考虑$F(f)$在$f=f_0$处的Taylor展开,

$$ F(f) = \sum_{k=0}^\infty (k!)^{-1} F^{(k)}(f_0) (f-f_0)^k. $$

当$k \geq 2$时,我们有$(f-f_0)^k \equiv 0 \pmod {x^{2n}}$。若$2n \leq N$,则上式在模$x^{2n}$意义下化为

$$ F(f_0)+F'(f_0) (f-f_0) \equiv 0 \pmod {x^{2n}}. $$

解得

$$ f \equiv f_0 - \left[F'(f_0)\right]^{-1} F(f_0) \pmod {x^{2n}}, $$

其中$f^{-1}$表示$f$在模$x^{2n}$意义下的逆元,即$f^{-1} f \equiv 1 \pmod {x^{2n}}$。

如此迭代即可求得多项式$f$,称之为牛顿迭代法。

多项式求逆

已知多项式$g \in \mathbb{F}[x]$,求$g$在模$x^N$意义下的逆$f \equiv g^{-1} \pmod {x^N}$,即$fg \equiv 1 \pmod {x^N}$。令

$$ F(f) = f^{-1} - g, $$

则$ F'(f) = -f^{-2} $。设$f \equiv f_0 \pmod {x^n}$,应用牛顿迭代法可得递推式

$$ f \equiv f_0 - (-f_0^{-2})^{-1} (f_0^{-1}-g) \equiv f_0(2-f_0g) \pmod {x^{2n}}. $$

多项式开根

已知多项式$g \in \mathbb{F}[x]$,求$g$在模$x^N$意义下的二次方根$f \equiv g^{\frac 1 2} \pmod {x^N}$,即$f^2 \equiv g \pmod {x^N}$。令

$$ F(f) = f^2 - g, $$

则$ F'(f) = 2f $。设$f \equiv f_0 \pmod {x^n}$,应用牛顿迭代法可得递推式

$$ f \equiv f_0 - (2f_0)^{-1} (f_0^2-g) \equiv 2^{-1}(f_0+f_0^{-1}g) \pmod {x^{2n}}. $$

多项式的对数和指数

设$f \in \mathbb{F}[x]$。若$[x^0]f = 0$,则定义$f$的指数为

$$ \exp f = \sum_{n=0}^\infty (n!)^{-1} f^n. $$

若$[x^0]f = 1$,则定义$f$的对数为

$$ \ln f = \sum_{n=1}^\infty (-1)^{n+1}n^{-1}(f-1)^n. $$

多项式的对数

设$f \in \mathbb{F}[x]$且$[x^0]f = 1$,则求$\ln f$的方法为

$$ \ln f = \int \mathrm{d} \ln f = \int f^{-1}f' \mathrm{d} x. $$

多项式的指数

已知多项式$g \in \mathbb{F}[x]$,求$g$在模$x^N$意义下的指数$f \equiv \exp g \pmod {x^N}$。

我们利用$\ln \exp g = g$。令

$$ F(f) = \ln f - g, $$

则$ F'(f) = f^{-1} $。设$f \equiv f_0 \pmod {x^n}$,应用牛顿迭代法可得递推式

$$ f \equiv f_0 - (f_0^{-1})^{-1} (\ln f_0 - g) \equiv f_0(1-\ln f_0+g) \pmod {x^{2n}}. $$

意外收获

若$[x^0]g=1$,则$g$的$k$次幂$g^k$可由

$$ g^k = \exp \left( k \ln g \right) $$

导出。而除此之外的一般情形都可设法化为如上情形。

猜你喜欢

转载自www.cnblogs.com/TinyWong/p/12952384.html