zoukankan      html  css  js  c++  java
  • 平方根倒数快速算法

    主要算法的思路可以参考维基百科的相关说明,这里主要阐述一个该算法的思想。为了能够快速地求解平方根倒数,算法首先将一个32的浮点数float number转化为一个32为的整形数long int,接着对该整形数进行一次右移操作,也就意味着取该整数的一半,之后用一个神奇的数做个减法,即可得到该数平方根倒数的估计值。这也是该算法的精华所在。当得到了一个估计值之后,既可以使用牛顿迭代法来逼近其真实值。通常迭代一次,误差就已经很小了,迭代两次就已经相当精确了。具体的牛顿迭代将在下节中进行介绍。

    牛顿迭代法

    牛顿迭代的思路其实可以用泰勒级数来描述。高等数学中告诉我们一个正常的函数(不存在若干奇点的可导函数)均可以在某一点展开成泰勒级数的形式。如果需要知道函数中的某一点的值 f(x1),则通过函数中的另外的任何一点f(x0)就可以推导出。但是如果两个点x0和x1距离的比较远,则需要知道函数的多阶导数信息才可以计算。但是如果这两个点距离的比较近的话,就可以用低阶导数就可以获得比较精确的值了。比如说求解f(x1),而知道了一个其大致的结果f(x0),就可以使用泰勒级数的一阶展开式 f(x)=f(x0)+f(x0)'(x-x0)+R(n) 并忽略误差,代入x1后得到,f(x1)=f(x0)+f(x0)'(x1-x0),这样,通过x0,f(x0)和f(x0)'我们就可以计算出f(x1)的更准确的估计值。根据上述的思想,再重复迭代几次,就可以计算出更加准确的f(x1)值了。

    所以牛顿迭代法的基本特性就是在知道了函数特性的基础上,可以通过某一估计的函数值,获得该函数值的更加精确的值。

  • 相关阅读:
    【2021-01-01】爱自己等于爱家人
    【2020-12-31】2020的收获与2021的挑战
    【2020-12-30】说别人辛苦,其实是自己辛苦
    【一句日历】2021年1月
    最大子序和
    判断子序列
    下载安装 ethereal
    6812. 【2020.10.05提高组模拟】战争
    6816. 【2020.10.06提高组模拟】随机的排列
    python 版本及pip安装相关
  • 原文地址:https://www.cnblogs.com/nearmeng/p/4361765.html
Copyright © 2011-2022 走看看