跳转至

多项式牛顿迭代

描述

给定多项式 ,已知多项式 满足:

且存在数值 使 满足以下条件:

求出模 意义下的

Newton's Method

考虑倍增。

首先当 时, 的解需要单独求出,假设中的 即为一个解。

假设现在已经得到了模 意义下的解 ,要求模 意义下的解

处进行泰勒展开,有:

因为 的最低非零项次数最低为 ,故有:

则:

或者

例题

多项式求逆

设给定函数为 ,有:

应用 Newton's Method 可得:

时间复杂度

多项式开方

设给定函数为 ,有:

应用 Newton's Method 可得:

时间复杂度

多项式指数函数

设给定函数为 ,有:

应用 Newton's Method 可得:

时间复杂度

手算演示

为了方便理解,这里举几个例子演示一下算法流程。

复数多项式模多项式的平方根

假设 是一个不被 整除(有常数项)的复数多项式,求它对模 的平方根。

我们有方程:

Taylor 展开 得到下式。注意这里是对 的展开,所以导数都是对 的偏导数, 在这里是当成常数算的。

用倍增计算。假设倍增中的中间结果是 ,或者数学严谨地说 是满足 的一个复数多项式,且为了唯一性它同时满足以下两个条件:

  • 次数不超过
  • ,对所有

代入上面的式子就有:

显然 必然是 的倍数。于是得到

如果 存在,那么 不被 整除(有常数项),所以必然有模 的逆元。因此数列 存在当且仅当 存在。不被 整除的复数多项式 的平方根是一定存在的,因为 模掉 就是个普通非零复数,一定有两个平方根。所以可以对所有有常数项的 用这个算法。

举例计算如下:

  • ,,,
  • ,,(等于前一个取负)

可以验证两个都是正确的模平方根多项式列。

整数模素数幂的平方根

牛顿迭代算法还可以迁移到整数模素数的幂的情况。 假设 是一个不被 3 整除的「方便的」整数。(「方便」指「必然有解」,具体条件后文再言)假设要算 在模 意义下的平方根 。有方程:

Taylor 展开 得到:

用倍增计算。假设倍增中得到的中间结果是 ,或者严谨地说 是满足 的一个整数,且为了唯一性它同时满足以下两个条件:

  • ,对所有

代入上面的式子就有:

显然 必然是 的倍数。于是得到

如果 存在,那么 不被 整除,所以必然有模 的逆元。因此数列 存在当且仅当 存在。不被 3 整除的整数 的平方根要么不存在,要么有两个。所以 有模 平方根就是整个算法能跑的唯一条件。

这里选 实际计算示例。

  • ,,,,
  • ,,,,(等于前一个取负)

可以验证一下两个都是正确的模平方根数列。

代数证明

这一节对前文进行引申,用抽象代数的语言证明只要 满足初始解条件,牛顿法对所有的 都能给出解,并且可以得到全部的解。

有解的证明

引理 1

整环 有多项式或 形式幂级数 使得 (亦即 在模 意义下的根)且 在模 意义下是可逆的。这里 形式导数。那么

证明

对所有

所以

因为 ,且 可逆,所以取 即可,这里 是模 意义下的逆元。因为 在模 意义下可逆,所以它在模 意义下也必定存在逆元:设有 使 ,那么 ,故可以取

对于域 上的多项式环 ,设有 使 ,那么应用引理 1 就可得到

而倍增的初始条件只要有 使得 。后一个条件保证了 有非零常数项,同时因为 ,故而对所有的 总是模 意义下可逆的,也就满足了下一次迭代的条件。

得到全部解的证明

引理 2

UFD 定义同引理 1。则引理 1 给出的 是模 意义下唯一满足以下两条件的 的值:

亦即

证明

,引理 1 保证 满足两个条件,且 。 设 是满足上述条件的值,则有 。 于是有

牛顿法可以保证得到模 的全部解。假设 ,那么令 ,然后取 并用牛顿法,根据引理 2 可得 ,所以一定有

上面的论证也说明了,在 永远可逆时, 的解的个数等于 的解的个数。这个结论并非平凡。请看下面的例子。

牛顿法无效时解的个数随次数而变多的例子

意义下 的平方根只有 ,但是模 意义下 的平方根有