Post

牛顿迭代法手算开平方:从问题转化到二次收敛

用牛顿迭代法手算平方根的完整推导与计算技巧,包含问题转化、迭代公式来源、手算示例、收敛速度分析及结构性总结。

1. 问题转化

a\sqrt{a},本质上不是”开方运算”,而是寻找一个数 xx,使得:

x2=ax^2 = a

即这是一个非线性方程求根问题,可以统一写成:

f(x)=x2a=0f(x) = x^2 - a = 0

这样做的意义在于:把”代数运算问题”转化为”函数零点问题”,从而可以使用数值方法处理。


2. 套牛顿迭代公式

牛顿法的核心来自一阶泰勒展开:

f(x)f(xn)+f(xn)(xxn)f(x) \approx f(x_n) + f'(x_n)(x - x_n)

用直线近似曲线,并令近似为零:

f(xn)+f(xn)(xn+1xn)=0f(x_n) + f'(x_n)(x_{n+1} - x_n) = 0

整理得到:

xn+1=xnf(xn)f(xn)x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}

对于本题:

  • f(x)=x2af(x) = x^2 - a
  • f(x)=2xf'(x) = 2x

代入:

xn+1=xnxn2a2xnx_{n+1} = x_n - \frac{x_n^2 - a}{2x_n}

化简得到标准迭代形式:

xn+1=12(xn+axn)x_{n+1} = \frac{1}{2}\left(x_n + \frac{a}{x_n}\right)

3. 手算示例:2\sqrt{2}

Step 0:初值选择

x0=1x_0 = 1

原因:21.4\sqrt{2} \approx 1.4,初值只需”在附近即可”,牛顿法是局部收敛方法

Step 1:第一次迭代(粗修正)

x1=12(1+21)=32=1.5x_1 = \frac{1}{2}\left(1 + \frac{2}{1}\right) = \frac{3}{2} = 1.5

此时结果已从 11.51 \to 1.5,开始逼近真实值。

Step 2:误差快速压缩

x2=12(1.5+21.5)x_2 = \frac{1}{2}\left(1.5 + \frac{2}{1.5}\right)

先算倒数项:

21.5=1.3333\frac{2}{1.5} = 1.3333

再平均:

x2=12(2.8333)=1.4167x_2 = \frac{1}{2}(2.8333) = 1.4167

误差已明显缩小。

Step 3:进入高精度阶段

x3=12(1.4167+21.4167)x_3 = \frac{1}{2}\left(1.4167 + \frac{2}{1.4167}\right) 21.41671.4118\frac{2}{1.4167} \approx 1.4118 x31.4142x_3 \approx 1.4142

此时已达到四位小数精度。


4. 收敛结果

21.4142\sqrt{2} \approx 1.4142

牛顿法的关键特征:

误差不是线性减少,而是”平方级下降”。


5. 手算规律总结

每一步迭代的本质:

xx+a/x2x \leftarrow \frac{x + a/x}{2}

可以理解为:用”当前估计值”和”反推修正值”做平均。

  • xx:当前猜测
  • a/xa/x:从方程反推的修正方向

这种”对称平均”结构是收敛稳定性的关键来源。


6. 为什么收敛很快

牛顿法在根附近满足:

en+1Cen2e_{n+1} \approx C \cdot e_n^2

其中:

  • ene_n:当前误差
  • CC:常数

这意味着误差会被”平方压缩”,例如 0.10.010.00010.1 \to 0.01 \to 0.0001

因此只需要 242 \sim 4 次迭代即可达到高精度。


7. 总结

牛顿法开平方的本质:

用函数 x2ax^2 - a 的切线不断逼近零点,使问题从”非线性方程”转化为”线性局部修正”。

Back to archive

Discussion

Comments

Post

Share questions, corrections, or extra notes about this post.