转自利用牛顿迭代法自己写平方根函数sqrt

给定一个正数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,至于逼近到什么时候才算完,这个取决于你自己设定的精度。整个过程的迭代只需要几步就可以求得最终的结果。

代码如下:

[cpp] view plaincopy
  1. double NewtonMethod(double fToBeSqrted)
  2. {
  3. double x = 1.0;
  4. while(abs(x*x-fToBeSqrted) > 1e-5)
  5. {
  6. x = (x+fToBeSqrted/x)/2;
  7. }
  8. return x;
  9. }

当然,从图中可以看出,当你所取的初始值的横坐标在红色曲线与x轴交点右边,即比最终的结果大时,比如选初始值x=a,我们可以将while语句里面的abs(x*x-fToBeSqrted)直接换成fToBeSqrted -x*x,这样可以省去abs的运算。当然这不能确保效率的提升,因为初始值的选取直接影响了迭代的次数。

牛顿迭代法实现平方根函数sqrt相关推荐

  1. java 牛顿迭代算术平方根,牛顿迭代法求n方根

    一.简单推导 二.使用 借助上述公式,理论上可以求任意次方根,假设要求a(假设非负)的n次方根,则有xn=a,令f(x)=xn-a,则只需求f(x)=0时x的值即可.由上述简单推导知,当f(x)=0时 ...

  2. 用二分法定义平方根函数(Bisection method Square Root Python)

    Python里面有内置(Built-in)的平方根函数:sqrt(),可以方便计算正数的平方根.那么,如果要自己定义一个sqrt函数,该怎么解决呢? 解决思路:  1. 大于等于1的正数n的方根,范围 ...

  3. 【leetcode】第69题 x 的平方根 牛顿迭代法实现求平方根函数 C++

    这题属于简单题,但是因为学到了新的算法:牛顿迭代法(或牛顿法),这里做一下记录. 题目描述: 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类 ...

  4. 牛顿法求解1-100的平方根python_使用牛顿-拉弗森法定义平方根函数(Newton-Raphson method Square Root Python)...

    牛顿法(Newton's method)又称为牛顿-拉弗森法(Newton-Raphson method),是一种近似求解实数方程式的方法.(注:Joseph Raphson在1690年出版的< ...

  5. 二分查找算法应用-实现求平方根函数

    使用二分查找算法,尽可能的逼近求解平方根.算法的思路很简单:设置三个标识:left=0,right=x(x为输进去的被开方数) mid=(left+right)/2,然后用mid*mid-x的绝对值去 ...

  6. 牛顿迭代法python_python 牛顿迭代法

    使用牛顿迭代法求方程 在x附近的一个实根. 赋值X,即迭代初值:用初值x代入方程中计算此时的f(x)=(a * x * x * x + b * x * x + c * x + d)和f'(x)=(3 ...

  7. 二分法和牛顿迭代法求平方根(Python实现)

    求一个数的平方根函数sqrt(int num) ,在大多数语言中都提供实现.那么要求一个数的平方根,是怎么实现的呢? 实际上求平方根的算法方法主要有两种:二分法(binary search)和牛顿迭代 ...

  8. 如何用牛顿迭代法求平方根

    设函数y=f(x)在点x0的某个邻域内有定义,当自变量x在x0处有增量Δx,(x0+Δx)也在该邻域内时,相应地函数取得增量Δy=f(x0+Δx)-f(x0):如果Δy与Δx之比当Δx→0时极限存在, ...

  9. UPC Participate in E-sports(参加电子竞技)(Biginteger的平方根:二分或牛顿迭代法)

    Jessie and Justin want to participate in e-sports. E-sports contain many games, but they don't know ...

最新文章

  1. 麻省理工学院开发出可“听音识貌”的人工智能
  2. Linux下安装jdk(xxx.rpm,非xxx.tar.gz,请注意!)过程
  3. datastage服务器项目nls安装,datastage 安装
  4. Android 12来了,支持更多设备,你的应用准备好了么?
  5. Python学习13 异常处理机制
  6. linux设备文件列表,linux 设备文件
  7. json 转对象函数_JSON_QUERY()函数从JSON数据提取对象
  8. C# 删除 文件 里面的第一行数据
  9. 30幅精美的Photoshop三维字体作品欣赏及教程
  10. Android 应用程序之间数据共享—ContentProvider
  11. C#如何实现一个简单的流程图设计器
  12. 易筋SpringBoot 2.1 | 第廿六篇:SpringBoot访问缓存抽象Cache
  13. 实战教你刷显卡BIOS
  14. 360安卓_360手机助手安卓下载
  15. 时间复杂度和空间复杂度详解
  16. elasticsearch实战 中文+拼音搜索
  17. Windows 11正式版来了!一文带你免费升级、镜像下载、最低系统要求
  18. low memory killer
  19. 【论文阅读】3D Topology-Preserving Segmentation with Compound Multi-Slice Representation
  20. A. Good Pairs

热门文章

  1. 心形函数用计算机怎么画,怎么用几何画板画爱心,真神奇!
  2. Linux SATA驱动
  3. Problem L: 定义哺乳动物类Mammal和Dog类
  4. 【ATP Public100】100场公益演讲!微软亲传 AI 与职场秘籍
  5. Preferences DataStore使用实例
  6. Worthington 组织解离指南
  7. 百变工具箱网页版来了!
  8. 第八集 动词的不定式
  9. (设计模式十一)java设计模式之组合模式
  10. Username for ‘https://github.com‘: