多项式牛顿迭代 学习笔记

零. 前置芝士

在正式进入牛顿迭代的学习前,我们需要预先了解 \(Taylor\) Swift 展开,以便处理我们推导过程中遇到的问题。

所谓泰勒展开,是一个近似模拟原函数的一个公式,和拉格朗日插值大概做的是同一件事情(?),不过拉格朗日插值是通过多项式点值表达求出的,而泰勒展开是基于原函数表达式已知,利用另一种方式来近似它以便计算&研究的。

想要复制这段曲线,首先得找一个切入点,可以是这条曲线最左端的点,也可以是最右端的点,anyway,可以是这条线上任何一点。他选了最左边的点。由于这段曲线过 \((0,1)\) 这个点,仿造的第一步,就是让仿造的曲线也过这个点,完成了仿造的第一步,很粗糙,甚至完全看不出来这俩有什么相似的地方,那就继续细节化。

开始考虑曲线的变化趋势,即导数,保证在此处的导数相等。经历了第二步,现在起始点相同了,整体变化趋势相近了,可能看起来有那么点意思了。想进一步精确化,应该考虑凹凸性。

高中学过:表征图像的凹凸性的参数为“导数的导数”。所以,下一步就让二者的导数的导数相等。起始点相同,增减性相同,凹凸性相同后,仿造的函数更像了。如果再继续细化下去,应该会无限接近。所以泰勒认为“仿造一段曲线,要先保证起点相同,再保证在此处导数相同,继续保证在此处的导数的导数相同……”

(以上内容摘自知乎)

基于以上文字的描述,我们来考虑严谨的计算证明:假设我们求\(n\)次导来近似这个函数,那么我们需要构造一个 \(n\) 次多项式函数 \(g(x)\),使其与原函数 \(f(x)\) 在某一点的初始值相等,且求 \(i(i \in [1,n])\) 阶导相等
如果这个函数可求 \(n\) 阶导,那么它必然是一个 \(n\)次多项式,不妨设为 \(\sum\limits_{i=0}^n{a_ix^i}\)(貌似很像普通生成函数)
现在假设我们选定的点是 \((0,f(0)=a_0)\) ,那么有:\(f^n(0)=g^n(0)\),由于求 \(n\) 阶导时只有最后一项非零,为\(n!a_n\),那么应有:\(a_n=\frac{f^n(0)}{n!}\)
同理有:$$a_i=\frac{f^i(0)}{i!}(i \in [1,n])$$
这就是泰勒展开的精髓,所以原函数的近似函数\(g(x)\)为:\(g(x)=g(0)+\frac{f^1(0)}{1!}x^1+\frac{f^2(0)}{2!}x^2+...+\frac{f^n(0)}{n!}x^n\)
如果 \(n\) 趋于无穷大,那么这两条曲线无限近似,同时我们将 \(0\) 换为 \(x_0\) ,有

\[f(x)=g(x)=g(x_0)+\frac{f^1(x_0)}{1!}(x-x_0)^1+\frac{f^2(x_0)}{2!}(x-x_0)^2+...+\frac{f^n(x_0)}{n!}(x-x_0)^n+... \]

这就是泰勒展开公式

一.\(Newton's\) \(Method\)

理解完上面的泰勒展开,我们进入正题:

牛顿迭代法解决如下问题:已知多项式\(g(x)\)表达式,且有\(g(f(x))=0(\mod x^n)\)(不会打同余符号,以下均用等号表示),求\(f(x)\)
考虑倍增(以下叙述用类似数学归纳法的叙述方式展开)
\(n=1\)时,单独计算\([x^0]g(f(x))=0\)的解单独求出
考虑我们现在已经得到模\(x^{\lceil \frac{n}{2} \rceil}\)意义下的解 \(f_0(x)\)
考虑将 \(g(f(x))\)\(f_0(x)\)处泰勒展开,有:\(\sum\limits_{i=1}^{+ \infty}{\frac{g^{(i)}f_0(x)}{i!}(f(x)-f_0(x))^i}=0 (\mod x^n)\)
容易得到 \(f(x)-f_0(x)\)的最低非零项次数为 \(\lceil \frac{n}{2} \rceil\),有:对于任意\(2 \leq i\)\((f(x)-f_0(x))^i=0(\mod x^n)\),那么重新写柿子,移项,有:

\[f(x)=f_0(x)-\frac{g(f_0(x))}{g'(f_0(x))}(\mod x^n) \]

这样就得到了 \(f(x)\) 的表达式

二.牛顿迭代应用1:多项式求逆

  • 给定多项式 \(f(x)\),求\(g(x) \times f(x) =1 (\mod x^n)\)

\(To\) \(Be\) \(Continue...\)

猜你喜欢

转载自www.cnblogs.com/lgj-lgj/p/13368638.html