javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】


Posted in Javascript onSeptember 28, 2017

本文实例讲述了javascript基于牛顿迭代法实现求浮点数的平方根。分享给大家供大家参考,具体如下:

今天在网上看到一则利用牛顿迭代法求浮点数的平方根的方法,发现很好,比一些语言自带的sqrt方法运行要快,在这里备份一下,以待后用,这里稍微做了些改动.

首先是牛顿迭代法原理:

比如我们要求a的平方根,首先随便猜一个近似值x,然后不断令x等于x和a/x的平均数,迭代几次后x的值就已经相当精确了。

如我们要求的数学假设为 a=7, var x=a;

( 7  + 7/7 ) / 2 = 3.64287514
       ( 3.64287514  + 7/3.64287514 ) / 2 = ?
..
..

下面是利用JavaScript实现

var G={
 result:0
 ,sqrt:function(a){
  var x=a;
  for(var i=0;i<=Math.floor(a);i++)
  {
  x=(x+a/x)/2;
  if(x-this.result===0){ //用来减少循环次数
   break;
  }
  this.result=x;
  document.body.innerHTML+="this.result-->"+this.result+"-->X:"+x+"<br/>";
  }
 }
};

运行

G.sqrt(16)  : 结果为4
G.sqrt(2) : 结果为1.414
G.sqrt(100.2565)

当然,网上对牛顿迭代法的算法好像还有其他实现,读者可以根据需要选择适合自己理解的方法.

PS:这里再为大家推荐几款计算工具供大家进一步参考借鉴:

在线一元函数(方程)求解计算工具:
http://tools.3water.com/jisuanqi/equ_jisuanqi

科学计算器在线使用_高级计算器在线计算:
http://tools.3water.com/jisuanqi/jsqkexue

在线计算器_标准计算器:
http://tools.3water.com/jisuanqi/jsq

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
jQuery DIV弹出效果实现代码
Jul 03 Javascript
Jquery AJAX POST与GET之间的区别
Nov 14 Javascript
jQuery中 prop() attr()使用详解
May 19 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
Aug 28 Javascript
利用vue实现模态框组件
Dec 19 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
Jan 23 Javascript
详解angular如何调用HTML字符串的方法
Jun 30 Javascript
Bootstrap实现省市区三级联动(亲测可用)
Jul 26 Javascript
Vue路由之JWT身份认证的实现方法
Aug 26 Javascript
Javascript实现秒表计时游戏
May 27 Javascript
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
Jul 17 Javascript
eslint+prettier统一代码风格的实现方法
Jul 22 Javascript
React Native模块之Permissions权限申请的实例相机
Sep 28 #Javascript
Node.js学习之查询字符串解析querystring详解
Sep 28 #Javascript
angular4自定义组件详解
Sep 28 #Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
Sep 28 #Javascript
Node.js利用断言模块assert进行单元测试的方法
Sep 28 #Javascript
详解基于vue-router的动态权限控制实现方案
Sep 28 #Javascript
node.js学习之断言assert的使用示例
Sep 28 #Javascript
You might like
中篇:安装及配置PHP
2006/12/13 PHP
php实现的MySQL通用查询程序
2007/03/11 PHP
php+js实现百度地图多点标注的方法
2016/11/30 PHP
PHP基于面向对象封装的分页类示例
2019/03/15 PHP
PHP实现一个限制实例化次数的类示例
2019/09/16 PHP
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
jQuery实现多级联动下拉列表查询框
2016/01/18 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
基于 flexible 的 Vue 组件:Toast -- 显示框效果
2017/12/26 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
vue-router中scrollBehavior的巧妙用法
2018/07/09 Javascript
vue 点击按钮增加一行的方法
2018/09/07 Javascript
微信小程序和H5页面间相互跳转代码实例
2019/09/19 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
[02:17]DOTA2亚洲邀请赛 RAVE战队出场宣传片
2015/02/07 DOTA
[01:28]一分钟告诉你DOTA2 TI9不朽宝藏Ⅱ中有什么!
2019/07/09 DOTA
python Django模板的使用方法(图文)
2013/11/04 Python
让python在hadoop上跑起来
2016/01/27 Python
python数据清洗系列之字符串处理详解
2017/02/12 Python
Python正则表达式经典入门教程
2017/05/22 Python
Python实现删除文件中含“指定内容”的行示例
2017/06/09 Python
python实现浪漫的烟花秀
2019/01/30 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
HTML5 Canvas——用路径描画线条实例介绍
2013/06/09 HTML / CSS
html5拖拽应用记录及注意点
2020/05/27 HTML / CSS
利物浦足球俱乐部官方商店(美国):Liverpool FC US
2019/10/09 全球购物
英国领先的在线高尔夫设备零售商:Golfgeardirect
2020/12/11 全球购物
前台文员的岗位职责
2013/11/14 职场文书
业务部经理岗位职责
2014/01/04 职场文书
《落花生》教学反思
2014/02/25 职场文书
《金孔雀轻轻跳》教学反思
2014/04/20 职场文书
大学生个人先进事迹材料范文
2014/05/03 职场文书
python接口测试返回数据为字典取值方式
2022/02/12 Python
日元符号 ¥
2022/02/17 杂记