更新于 

牛顿迭代法求开 n 次方

牛顿迭代法本身是一种对于高次多项式数值解的一种方法。考研的时候,某个学校的题竟然要手动开n次方,虽然以前背过常见的开平方的值,比如 2=1.4143=1.732\sqrt{2}=1.414,\sqrt{3}=1.732,\cdots,但对于高次的复杂的没啥意义。
于是就想到这个方法。基本上迭代个三四次精度就很不错了。
求根式 An\sqrt[n]{A} 的值,等同于求方程 xnA=0x^n-A=0 的解,或者说是求 f(x)=xnAf(x)=x^n-A,求 f(x)=0f(x)=0 的根。
这实际上是牛顿迭代法的一个特例。形式上,计算上都要简单一些,也就为手算提供可能。

牛顿迭代法

首先,要找到一个初始值 x0x_0,要尽量接近解(避免过多无效的迭代)。如果初始值 x0x_0 不是解,则过(x0,f(x0))(x_0,f(x_0))点作 f(x)f(x) 的切线与 xx 轴交于点 x1x_1。若 x1x_1 不是解,则过(x1,f(x1))(x_1,f(x_1))点作 f(x)f(x) 的切线与 xx 轴交于点 x2x_2,依次类推。直到 xnx_n 是方程的解,或 xnx_n 满足要求的精度。
通常用牛顿迭代法难以求到解析解,一般情况下,数值解也够了(例如:应对手动开n次方)

迭代关系式

令初始点为 (xi,f(xi))(x_i,f(x_i)) ,切线方程为 f(x)=f(xi)+f(xi)(xxi)f(x)=f(x_i)+f'(x_i)(x-x_i)
其中,f(xi)f'(x_i)f(xi)f(x_i) 的倒数,令切线方程为0,则有:

xi+1=xif(xi)f(xi)x_{i+1}=x_i-\cfrac{f(x_i)}{f'(x_i)}

带入 f(x)=xnAf(x)=x^n-A,则有:

xi+1=xixinAnxin1=xixin+Anxin1=(n1)xin+Anxin1x_{i+1}=x_i-\cfrac{x_{i}^{n}-A}{nx_i^{n-1}}=x_i-\cfrac{x_i}{n}+\cfrac{A}{nx_{i}^{n-1}}=\cfrac{(n-1)x_i}{n}+\cfrac{A}{nx_{i}^{n-1}}

例子

97.245=2.49786515707\sqrt[5]{97.24}=2.49786515707 ,求解的方程为 f(x)=x597.24f(x)=x^5-97.24
首先确定初始值,97.245\sqrt[5]{97.24} 开五次方大概是 22 点多(25=3235=2432^5=32,3^5=243),那么 f(x)=x597.24f(x)=x^5-97.24 初始值就从 x0(2,65.24)x_0 (2,-65.24) 开始,因为2,比3更接近零点。
则:x1=(n1)x0n+Anx0n1=(51)25+97.425×251=2.8155x_1=\cfrac{(n-1)x_0}{n}+\cfrac{A}{nx_{0}^{n-1}}=\cfrac{(5-1)2}{5}+\cfrac{97.42}{5×2^{5-1}}=2.8155,则 x1=2.8155x_1=2.8155
以此类推 x2=2.562x_2=2.562x3=2.501x_3=2.501x4=2.501x_4=2.501x5=2.49787x_5=2.49787
此时迭代了 5 次,精度就很可观了。