牛顿迭代法,第二次看了,发现几乎又是从头开始搜集资料,不如整理记录一下,也和大家分享一下;

牛顿迭代法的核心思想是:切线是曲线的线性逼近,通过迭代求切线最后找到函数近似解的过程。具体可以参考下面这个文章,图示画的很容易理解。

牛顿迭代法求平方根(通俗易懂版)_付石头的博客-CSDN博客_迭代法求平方根

既然理解和其核心思想,那么就开始进行公式推导:

对上图求f(x)的零点x0即:f(x)=0的解,由牛顿迭代的核心思想可知,是比更靠近的点;那么直接的关系可以描述为  斜率等于tan角。从而推导出牛顿迭代法的核心公式:

而对于求解,我们是知道x的,因此y是未知数,即求解的值。因此可得:

将其带入牛顿迭代公式得:

在进行平方根倒数求解的时候,初值的选择有一个大而神秘的讲究,有一个魔法数字大大提升了迭代效率,可以参考如下文章,或者Lomont的论文《Fast Inverse Square Root》。

0x5f375a86魔法数字_「已注销」的博客-CSDN博客

将上式的y提出来,得到下图代码中的

其中f表示浮点数float,对此式迭代一次精度会有损失,计算速度快,选择迭代两次精度会大大提高,计算速率慢。此方法也经常用到芯片设计中对数求平方根的倒数,只需要两次迭代即可求出。

float isqrt_nosse(float x)
{float xh = 0.5f * x;std::int32_t i = *(std::int32_t*) &x;// "magic number" which makes a very good first guessi = 0x5f375a86 - (i >> 1);x = *(float*) &i;// Newton's method. One iteration for less accuracy but more speed.x = x * (1.5f - xh * (x * x));return x;
}

牛顿迭代法求平方根倒数相关推荐

  1. 141. Sqrt(x)【牛顿迭代法求平方根 by java】

    Description Implement int sqrt(int x). Compute and return the square root of x. Example sqrt(3) = 1 ...

  2. 经典算法:牛顿迭代法求平方根

    //牛顿迭代法求平方根 1 double mysqrt(double num) 2 { 3 double x = num/2; 4 double y = 0; 5 do{ 6 x = x/2+num/ ...

  3. 牛顿迭代法求平方根原理

    牛顿迭代法可以求解n次方的根,但这里只讨论用它来求平方根. 牛顿迭代法求平方根过程 Java代码实现 /*** 求一个数的平方根* @param number* @return*/public sta ...

  4. 【算法】牛顿迭代法求平方根的原理和误差分析

    前言 在<算法(第四版)>中的P23页,给出了经典的利用牛顿迭代法求平方根的算法,牛顿迭代法在数值计算中应用十分广泛,但是在看书中的代码时,我最困惑的是其中对收敛条件的判断,经过查阅资料和 ...

  5. Python:牛顿迭代法求平方根

    #69573 牛顿迭代法求平方根[光]-函数复用#69573 牛顿迭代法求平方根描述牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson meth ...

  6. python牛顿迭代法求平方根_Newton迭代法求平方根

    牛顿迭代法求根 (即曲线与x坐标轴交点) : 在曲线的一点P1(a, f(a)), 做切线, 切线与x轴, 相交于 A 点, A点做垂线 与曲线交于 P2(b, f(b)) 点, 在P2点继续做切线, ...

  7. 牛顿方法求平方根c语言,C语言之基本算法11—牛顿迭代法求平方根

    //迭代法 /* ================================================================== 题目:牛顿迭代法求a的平方根!迭代公式:Xn+1 ...

  8. 牛顿迭代法-求平方根

    牛顿迭代法 求出根号a的近似值:首先随便猜一个近似值x,然后不断令x等于x和a/x的平均数,迭代个六七次后x的值就已经相当精确了.  例如,我想求根号2等于多少.假如我猜测的结果为4,虽然错的离谱,但 ...

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

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

最新文章

  1. Exchange 2010和Exchange 2016共存部署-3:Exchange2016部署系统要求
  2. java图片转换成base64_Java将图片转换成Base64字符串
  3. 215. Kth Largest Element in an Array 数组中的第K个最大元素
  4. 化妆definer是什么意思_化妆品上的r是什么意思
  5. 680. 验证回文字符串 Ⅱ golang
  6. pytorch保存和加载模型state_dict
  7. 七年级上册计算机教学反思,七年级信息技术上册教学反思范文.docx
  8. m不能被3整除c语言表达式,求mn-之间所有不能被3整除的整数之和求 – 手机爱问...
  9. 眼前一亮的UI设计案例|插画世界里的网页首图
  10. 2018北语c语言程序2答案,北语21春《JAVA语言程序设计》作业2题目【标准答案】...
  11. thinkphp5 open_basedir 补充
  12. 浮点型变量的误差问题
  13. 视易linux进图形界面,视易KTV点歌机系统安装说明.ppt
  14. RELYUM—针对关键系统的物联网和网络安全解决方案 (二)
  15. U盘分区删除和新建分区
  16. 【数据分析师---数据可视化】第三章:逐步详解操作Tableau进行20+种类图表绘制
  17. c语言学生学籍管理修改,C语言课设之学生学籍管理系统.doc
  18. python3or5的值_详解python中and和or的返回值
  19. WindowsForm切换窗口的几种常见实现
  20. java电子宠物_JAVA大神来帮忙啊,ECLIPSE编写一个小程序类似于电子宠物的。弄完截图过来也行,行了就加大悬赏,谢谢!...

热门文章

  1. Linux文件读取操作:read函数的使用
  2. 使用 bash, curl 随机访问指定页面,不输出页面内容
  3. 大数据交易研究_学术著作 | 基于电商平台大数据的特征价格指数研究——统计研究...
  4. IEEE期刊论文格式(一)
  5. 二叉树的公共最近祖先问题
  6. 睿慕课点云第二章报错及解决(二)
  7. nz-upload的[nzCustomRequest]自定义上传
  8. ​FPGA便捷开发-TCL商店(开源)
  9. 【Python】random.randint()用法
  10. cgb2110-day10