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 相关文章推荐
新闻内页-JS分页
Jun 07 Javascript
javascript 有趣而诡异的数组
Apr 06 Javascript
javascript 匿名函数的理解(透彻版)
Jan 28 Javascript
javascript中字符串拼接需注意的问题
Jul 13 Javascript
javascript:window.open弹出窗口的位置问题
Mar 18 Javascript
Augularjs-起步详解
Jul 08 Javascript
jQuery Ajax File Upload实例源码
Dec 12 Javascript
Angular中管道操作符(|)的使用方法
Dec 15 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
Apr 10 Javascript
JavaScript实现简单的文本逐字打印效果示例
Apr 12 Javascript
Rollup处理并打包JS文件项目实例代码
May 31 Javascript
Vue2.0+Vux搭建一个完整的移动webApp项目的示例
Mar 19 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
JAVA/JSP学习系列之二
2006/10/09 PHP
php抓取https的内容的代码
2010/04/06 PHP
php操作excel文件 基于phpexcel
2010/07/02 PHP
PHP漏洞全解(详细介绍)
2012/11/13 PHP
ajax返回值中有回车换行、空格的解决方法分享
2013/10/24 PHP
php 启动时报错的简单解决方法
2014/01/27 PHP
php生成txt文件实例代码介绍
2016/04/28 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
Extjs中常用表单介绍与应用
2010/06/07 Javascript
jQuery中;function($,undefined) 前面的分号的用处
2014/12/17 Javascript
JS基于clipBoard.js插件实现剪切、复制、粘贴
2016/05/03 Javascript
require.js配合插件text.js实现最简单的单页应用程序
2016/07/12 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
详解ES6中的代理模式——Proxy
2018/01/08 Javascript
微信小程序如何调用图片接口API并居中显示
2019/06/29 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
解决在Vue中使用axios POST请求变成OPTIONS的问题
2020/08/14 Javascript
python数组过滤实现方法
2015/07/27 Python
浅谈Python中函数的参数传递
2016/06/21 Python
python学习笔记之列表(list)与元组(tuple)详解
2017/11/23 Python
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
Python基础之文件读取的讲解
2019/02/16 Python
python对象与json相互转换的方法
2019/05/07 Python
python启动应用程序和终止应用程序的方法
2019/06/28 Python
佳能法国商店:Canon法国
2019/02/14 全球购物
Monica Vinader官网:英国轻奢珠宝品牌
2020/02/05 全球购物
2014年庆元旦活动方案
2014/02/15 职场文书
房地产营销活动策划方案
2014/09/15 职场文书
家长意见书
2015/06/04 职场文书
教师节主题班会教案
2015/08/17 职场文书
纯CSS实现酷炫的霓虹灯效果
2021/04/13 HTML / CSS
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js
解析高可用Redis服务架构分析与搭建方案
2021/06/20 Redis
SQL注入详解及防范方法
2021/12/06 MySQL
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android