用牛顿-拉弗森迭代法求解平方根及其他
用牛顿-拉弗森迭代法求解平方根及其他
牛顿-拉弗森方法是个很有用的方法,在没有计算器需要手算一些式子的时候,其它的运算可能只是需要多花点时间,但对于开平方一类运算必须要有一个数学工具才能开始求解
即便这个方法如此重要,我还是总会忘记,我记得高中的时候受“卡马克魔数”的影响,明明用C写过一个迭代法开平方的程序,还专门和系统自带的sqrt()函数比较过运行速度,但是如今又是全都忘了
今天就找资料,重新学一下这个东西。
核心的公式
手算开平方,核心的公式就一个:
选择一个接近平方根的值作为 代入 开始第一遍计算,获得等式左边 的值,将 代入右侧算式得到 的值,之后每次计算都会更接近 的解
几何过程,试着理解
是函数的图像, 对于 , 点是表示函数在 处取值的点
是斜率与函数图像在 点处斜率的相等的一条直线
过定点直线的方程
那么, 就是一条过函数图像上 处与函数图像相切的直线
求出直线与x轴的交点,也就是直线对应的方程在 时的解,这个值是
然后对 重复一遍上述过程得到
例如,对于 求x的平方根
先将其转换成 的形式
猜想解在1附近,于是假设 画一张图看看
然后根据直线与x轴的交点,代入 ,再画一张图
可以看到,随意取了一个1,仅仅经过两次迭代,就快速逼近了真正的解
这个方法既适合手算,也适合编程序去计算
其他
事实上,牛顿-拉弗森方法是用函数 的泰勒级数的前几项来寻找方程 的根
这个方法还可以用于其他方程的求解,式子是这样的
这个式子是有使用条件的
此外,这个方法还可以用于求极值点
Knighthana
2023/04/02
参考资料
[1] 如何通俗易懂地讲解牛顿迭代法? https://www.matongxue.com/madocs/205/
[2] 牛顿法 https://zh.wikipedia.org/wiki/%E7%89%9B%E9%A1%BF%E6%B3%95
[3] 有趣数学-Bilibili https://www.bilibili.com/video/BV1KT4y1N7Sq/
[3’] Newton-Raphson method | Animated and explained | Algorithm for finding roots of a function Youtube https://www.youtube.com/watch?v=qlNqPE_X4ME
Tag
Newton-Raphson; sqrt(); Carmack