不借助Math函数求开根值

1、二分迭代法求n开根后的值

思路: left=0 right=n mid=(left+right)/2

比较mid^2与n大小

=输出;

>改变范围,right=mid,mid重新计算;

如此循环,不过只能是逼近,并不能完全正确,常识

2、牛顿迭代法求n开根后的值

1)理论上来讲,开根后的值为x,那么x^2=n,即可以将其转换为数学问题

2)令y=x^2-n,那么只需要求方程与x轴正方向的焦点就可以得出想要的结果

3)我们作x=a与方程交于(a^2-n),求得他的切线与x轴的交点(a,a^2-n),a一般从n开始

4)然后求得该点切线与x轴交点,此处需要了解切线公式:记曲线为y=f(x),则在点(a,f(a))处的切线方程为:y=f'(a)(x-a)+f(a),

5)重复步骤3,令x=步骤4的x值,如此循环即可逼近

有点绕,简单来讲就是设开根后的值为x,然后转换成方程,通过求切线与x轴交点值不断逼近方程的解,一般从x=n与方程交点的切线开始求,原因嘛:求根肯定是小于等于它自身的值,那么从n开始就没有疑问了,而且方程是曲线,方程一侧所有点切线与x轴交点的值一定是全部大于或者小于解的,迭代下去只会逼近解

//普通迭代法,initNum要开根的值 , 保留saveNum位小数,

functionsqr(initNum,saveNum){varleftNum=0;varrightNum=initNum;varmiddleNum=(leftNum+rightNum)/2;

for(vari=0;i<20;i++){varresult=middleNum*middleNum;if(initNum===result){

middleNum=middleNum.toFixed(saveNum);

document.getElementById("result").value=middleNum;

}else if(initNum>result){

leftNum=middleNum;

middleNum=(leftNum+rightNum)/2;

}else{

rightNum=middleNum;

middleNum=(leftNum+rightNum)/2;

}

}

middleNum=middleNum.toFixed(saveNum);

document.getElementById("result").value=middleNum;

}/*记曲线为y=f(x),则在点(a,f(a))处的切线方程为:y=f'(a)(x-a)+f(a)*/

//牛顿迭代法

functionsqrt(initNum,saveNum) {//当n>=1时,从n开始迭代;当n<1时,从1开始迭代

let result=initNum>= 1 ?initNum :1;//当迭代值^2与原值之差满足一个很小的差值时,即可认为逼近开根值

while(result*result-initNum> 1e-8)

result= 0.5 *(result+initNum/result);

result=result.toFixed(saveNum);

document.getElementById("result").value=result;

}

请输入

js开根号_原生js数值开根算法相关推荐

  1. js 控制鼠标_原生js实现改变视频播放速率

    前言:前几天考研成绩刚刚出来,有人欢喜有人悲,不管结果怎么样,只要努力过,就不存在遗憾一说.大家都知道考研复习的时候会有大量的时间用来看教学视频,就比如说"张宇高数"等等.考研复习 ...

  2. java使用重绘实现拖动_原生JS使用Canvas实现拖拽式绘图功能

    一.实现的功能 1.基于oop思想构建,支持坐标点.线条(由坐标点组成,包含方向).多边形(由多个坐标点组成).圆形(包含圆心坐标点和半径)等实体 2.原生JavaScript实现,不依赖任何第三方j ...

  3. js检测鼠标是否在操作_原生JS趣味demo:炫酷头像鼠标追随效果的实现

    我们常在一些网页中 可以看到鼠标追随效果 一个简单的图片.动画 甚至一小段文字 都可以作为鼠标跟随的载体 之前咱们的直播课中 老师也讲过相关的canvas追随粒子特效 今天 就让我们一起来用原生js ...

  4. animate用法 js原生_原生js实现jq的animate效果.js

    原生js实现jq的animate效果(有一定bug未修复,有时间补上) //原生js实现jq的animate效果 /** *@param obj 执行动画的元素 *@param css JSON数值对 ...

  5. animate用法 js原生_原生JS封装animate运动框架的实例

    如下所示: div { width: 100px; height: 100px; background-color: pink; position: absolute; left: 0; top: 5 ...

  6. 原生js清空上一个元素内容_原生JS实现动态添加新元素、删除元素方法

    1. 添加新元素 动态添加新元素 Coffee Tea Coffee Tea var child = document.getElementsByClassName("child" ...

  7. java实现选项卡定时轮播_原生js面向对象编程-选项卡(自动轮播)

    原生js面向对象编程-选项卡(自动轮播) }#div1 input{color:#fff;width:100px;height:40px;background:darkseagreen;border: ...

  8. java循环购物车结算系统_原生JS实现购物车结算功能代码

    html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD ...

  9. vue如何使用原生js写动画效果_原生js写一个无缝轮播图插件(支持vue)

    轮播图插件(Broadcast.js) 前言:写这个插件的原因 前段时间准备用vue加上网易云的nodejs接口,模拟网易云音乐移动端.因为想自己写一遍所有的代码以及加固自己的flex布局,所以没有使 ...

最新文章

  1. 计算机书籍-机器学习预测分析
  2. linux下的module_param()解释【转】
  3. java12章_【有书共读】java核心技术卷1--第12章
  4. Mac 使用SSH远程登录
  5. 使用 xCAT 简化 AIX 集群的部署和管理
  6. python k线合成_手把手教你写一个Python版的K线合成函数
  7. WSDM 2022 | 点击率模型特征交叉方向的发展及CAN模型介绍
  8. Bootstrap静态cdn
  9. 如何对Windows Server 2008上的ARP缓存进行管理
  10. Python机器学习(sklearn)——分类模型评估与调参总结(下)
  11. 这是一段有毒的js代码,求大神解释!!!
  12. struts2.0中struts.xml配置文件详解
  13. 第25版 OpenStack Yoga 已发布:稳定性与创新并重
  14. springboot+nodejs+vue+elementui教师下乡支教岗位申请系统java项目源码
  15. java 长链接转短链接_java长链接转短链接代码和如何跳转使用
  16. java工程设计选题管理系统_基于javaee的毕设选题测试及管理系统的设计与实现 毕设.doc...
  17. 东南大学计算机科学与网络,顾冠群
  18. Unity之EditorUtility-ProgressBar进度条-一
  19. php 连接数据库有很多notice,PHP Notice: undefined index 完美解决方法
  20. 两天价网站背后重重迷雾:做个网站究竟要多少钱

热门文章

  1. 电商平台后台管理系统--->操作方法说明
  2. android binder - 客户端(c++层) 调用 服务端(java层),服务端回调客户端 例子
  3. [ARC086]F - Shift and Decrement 位运算+数论+DP
  4. C++二叉排序树代码实现
  5. Codeforces Round #702 (Div. 3)---C. Sum of Cubes 两种方法 cbrt()函数应用
  6. 《易学C++(第2版)》——2.2 如何创建一个程序
  7. 十二星座物语,女生最喜欢的星座性格【1】
  8. 【Pyton安装】Python入门最详细的环境安装(附步骤),按照步骤点,几分钟就可以完成哦~
  9. MPB:南农韦中组-​​根际细菌产铁载体能力的高通量检测
  10. 推荐1个易上手代码开源的好用的H5网页编辑工具