利用牛顿迭代法自己写平方根函数sqrt
来源:互联网 发布:ubuntu cuda caffe 编辑:程序博客网 时间:2024/06/03 01:04
给定一个正数a,不用库函数求其平方根。
设其平方根为x,则有x2=a,即x2-a=0。设函数f(x)= x2-a,则可得图示红色的函数曲线。在曲线上任取一点(x0,f(x0)),其中x0≠0那么曲线上该点的切线方程为
(1-1)
求该切线与x轴的交点得
(1-2)
因为1-2式中x0作为分母,所以在之前限定了一下初始值不要选0。那么得到的这个与x轴的交点其实是最终要求得的x的一次逼近,我们再以这个x基准继续迭代就可以求得更逼近的x,至于逼近到什么时候才算完,这个取决于你自己设定的精度。整个过程的迭代只需要几步就可以求得最终的结果。
代码如下:
- double NewtonMethod(double fToBeSqrted)
- {
- double x = 1.0;
- while(abs(x*x-fToBeSqrted) > 1e-5)
- {
- x = (x+fToBeSqrted/x)/2;
- }
- return x;
- }
当然,从图中可以看出,当你所取的初始值的横坐标在红色曲线与x轴交点右边,即比最终的结果大时,比如选初始值x=a,我们可以将while语句里面的abs(x*x-fToBeSqrted)直接换成fToBeSqrted -x*x,这样可以省去abs的运算。当然这不能确保效率的提升,因为初始值的选取直接影响了迭代的次数。
转载自:http://blog.csdn.net/wumuzi520/article/details/7026808
0 0
- 利用牛顿迭代法自己写平方根函数sqrt
- 利用牛顿迭代法自己写平方根函数sqrt
- 牛顿迭代法实现平方根函数sqrt
- 利用牛顿迭代法求平方根
- 利用牛顿迭代法求平方根
- 利用牛顿迭代法求平方根 .
- 利用牛顿迭代法求平方根
- 利用牛顿迭代法求平方根
- 利用牛顿迭代法求平方根
- 利用牛顿迭代法求平方根
- 牛顿迭代法实现平方根函数
- sqrt函数实现--牛顿迭代法(重点)
- 牛顿迭代法计算平方根
- 牛顿迭代法求平方根
- 牛顿迭代法求平方根
- 牛顿迭代法求解平方根
- 牛顿迭代法求平方根
- 牛顿迭代法求平方根
- 1111111111111111111111
- Objective-C中不同方式实现锁(二)
- UIScreen UIWindow UIView
- webx3 mvc
- android 模拟键盘鼠标事件(adb shell)
- 利用牛顿迭代法自己写平方根函数sqrt
- 环境:Windows 7 + Oracle 11g r2 + Navicat premium 9.15
- 深入linux设备驱动底层模型
- 解决内网其他机器无法访问本地Apache网站的问题
- conflunect 的安装
- Struts2——(1)Struts2入门
- 全排列算法--一种非递归算法的实现
- IOS开发常用的开源类库3
- BUPTOJ 0087-0089