牛顿法求平方根的本质就是在抛物线上任取一点做切线,再把该切线与x轴的交点代入该抛物线方程又得到一根更逼近根的切线,如此迭代最终获得结果。但是牛顿法求函数根,需要该函数有二阶导数,否则牛顿法会在根附近抖动甚至越来越远。好在抛物线函数符合这个条件,所以可以安全使用牛顿迭代法。
以下是我找到的两篇讲解牛顿法的文章,第一篇通俗讲解了牛顿法的思想,第二篇推导了牛顿法求平方根的公式。都是很好的文章,但是都不完美,第一篇没讲怎么应用在求平方根上,第二篇排版混乱。下文对这两篇文章做了整理。
https://www.zhihu.com/question/20690553
http://www.voidcn.com/article/p-btcbtpcx-gk.html
(一)形象解释牛顿迭代法
请参考https://www.zhihu.com/question/20690553,标题为“如何通俗易懂地讲解牛顿迭代法求开方?”。此处截屏的目的是留档,避免链接丢失。
(二)计算机实现牛顿迭代法
1.设函数的根为,我们任意选取作为的初值。
2.过点做曲线的切线,则的方程为:
与轴的交点的坐标为:
3.计算 的差值,若差值小于一定值,则可认为已经求得解,停止算法;否则以 为新的点重复第2步
计算过程中,称为的 次近似值,而 即称为牛顿迭代公式。
(三)平方根函数
求数的平方根,则 。可以定义函数 ,最终问题转换为求方程 的根。
又,代入牛顿迭代公式得到:
转换后得到
以此替代上文牛顿迭代法第2步中的公式,迭代计算就得到了平方根。