ブログ名

競技プログラミングやお歌のお話をする高菜です。

形式的冪級数のニュートン法 (2次収束性の証明)

導入

形式的冪級数 $f(x) \in k [ [ x ] ]$ に対して、$1 / f, \ \sqrt{f}, \ \exp{f}$ などを計算する手法として、ニュートン法がありますね。これは欲しい形式的冪級数 $g(x) \in k [ [ x ] ]$ をある方程式 $\varphi(g) = 0$ ($\varphi$ も形式的冪級数)で表して、漸化式 $\psi(g) = g - \varphi(g) / \varphi ' (g)$ によって精度を倍々にしていく (つまり $\varphi (g) \in \left ( x ^ d \right )$ $\implies$ $\varphi ( \psi ( g ) ) \in \left (x ^ {2d} \right )$ が成り立ってほしい) 手法です。

欲しいもの $\varphi(g)$ $\psi(g)$
$1 / f$ $1 / g - f$ $g \cdot (2 - g f)$
$\sqrt{f}$ $g ^ 2 - 1$ $\displaystyle{\frac{g ^ 2 + f}{2g}}$
$\exp{f}$ $\log(g)$ $g \cdot (1 - \log g + f)$

精度が倍々になっていく証明

正確に言うと、証明することは $g$ の精度ではなくて $\varphi(g)$ の精度です。(ごめん YO)

あと当然 $\varphi ' (g)$ が可逆であることは仮定しますね。まあ漸化式にこれの逆元がきますからね。

ところで仮定 $\varphi(g) \in \left( x ^ d \right)$ より、$\varphi(\psi(g))$ が $x ^ { 2d }$ の倍元であることを示すためにはこれが $\varphi(g) ^ 2$ の倍元であることを示せばよいことがわかります。

ここでちょっと注意です。倍元といっても、👇️ 次の 2 つの意味は異なります。要は環 $k [ [ y ] ]$ の中で考えるか、$y = g(x)$ と代入して環 $k [ [ x ] ]$ の中で考えるかです。

  1. $\varphi(\psi(g))(x) \in \left ( \varphi(g) (x) \right ) ^ 2 \cdot k [ [ x ] ]$
  2. $\varphi(\psi(y)) \in \varphi(g) ^ 2 \cdot k [ [ y ] ]$

今回示したいことは 1 の方です。しかし 2 は 1 より強いので、2 を示せばよいですね。すなわち、示すべきことはこうです:

[定理] $[y]\varphi(y) \neq 0$ なる形式的冪級数 $\varphi(y) \in k [ [ y ] ]$ に対して $\psi(y) = y - \varphi(y) / \varphi'(y)$ と定義すると、$\varphi ( \psi ( y ) ) \in \left ( \varphi(y) ^ 2 \right)$ が成り立つ。

仮定 $[x] \varphi(g)(x) \neq 0$ が $[y] \varphi(y)$ にサイレント強化されていますが、ここは YO の精神でお願いします。(なお YO は YOGA の略です。)

[証明] $y$ に関してテイラー展開すると次のようになります:

$$ \begin{aligned} \varphi ( \psi ( y ) ) &= \varphi \left ( y - \frac { - \varphi ( y ) } { \varphi ' ( y ) } \right ) \\ &= \sum _ { i \ge 0 } \varphi ^ { (i) } (y) \cdot \left ( \frac { - \varphi ( y ) } { \varphi ' ( y ) } \right ) ^ i \\ &= \varphi ^ { ( 0 ) } (y) + \varphi ^ { (1) } (y) \cdot \frac { - \varphi ( y ) } { \varphi ' ( y ) } \pmod { g ( y ) ^ 2 } \\ &= 0 \end{aligned} $$ ■

前半部分が変わっていない証明

ちなみに $g(x) = \psi(g)(x) \pmod { x ^ d}$ も大事なのですが、よく見ると当たりですので、省略いたします。