js开根号_原生js数值开根算法
不借助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数值开根算法相关推荐
- js 控制鼠标_原生js实现改变视频播放速率
前言:前几天考研成绩刚刚出来,有人欢喜有人悲,不管结果怎么样,只要努力过,就不存在遗憾一说.大家都知道考研复习的时候会有大量的时间用来看教学视频,就比如说"张宇高数"等等.考研复习 ...
- java使用重绘实现拖动_原生JS使用Canvas实现拖拽式绘图功能
一.实现的功能 1.基于oop思想构建,支持坐标点.线条(由坐标点组成,包含方向).多边形(由多个坐标点组成).圆形(包含圆心坐标点和半径)等实体 2.原生JavaScript实现,不依赖任何第三方j ...
- js检测鼠标是否在操作_原生JS趣味demo:炫酷头像鼠标追随效果的实现
我们常在一些网页中 可以看到鼠标追随效果 一个简单的图片.动画 甚至一小段文字 都可以作为鼠标跟随的载体 之前咱们的直播课中 老师也讲过相关的canvas追随粒子特效 今天 就让我们一起来用原生js ...
- animate用法 js原生_原生js实现jq的animate效果.js
原生js实现jq的animate效果(有一定bug未修复,有时间补上) //原生js实现jq的animate效果 /** *@param obj 执行动画的元素 *@param css JSON数值对 ...
- animate用法 js原生_原生JS封装animate运动框架的实例
如下所示: div { width: 100px; height: 100px; background-color: pink; position: absolute; left: 0; top: 5 ...
- 原生js清空上一个元素内容_原生JS实现动态添加新元素、删除元素方法
1. 添加新元素 动态添加新元素 Coffee Tea Coffee Tea var child = document.getElementsByClassName("child" ...
- java实现选项卡定时轮播_原生js面向对象编程-选项卡(自动轮播)
原生js面向对象编程-选项卡(自动轮播) }#div1 input{color:#fff;width:100px;height:40px;background:darkseagreen;border: ...
- java循环购物车结算系统_原生JS实现购物车结算功能代码
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD ...
- vue如何使用原生js写动画效果_原生js写一个无缝轮播图插件(支持vue)
轮播图插件(Broadcast.js) 前言:写这个插件的原因 前段时间准备用vue加上网易云的nodejs接口,模拟网易云音乐移动端.因为想自己写一遍所有的代码以及加固自己的flex布局,所以没有使 ...
最新文章
- 计算机书籍-机器学习预测分析
- linux下的module_param()解释【转】
- java12章_【有书共读】java核心技术卷1--第12章
- Mac 使用SSH远程登录
- 使用 xCAT 简化 AIX 集群的部署和管理
- python k线合成_手把手教你写一个Python版的K线合成函数
- WSDM 2022 | 点击率模型特征交叉方向的发展及CAN模型介绍
- Bootstrap静态cdn
- 如何对Windows Server 2008上的ARP缓存进行管理
- Python机器学习(sklearn)——分类模型评估与调参总结(下)
- 这是一段有毒的js代码,求大神解释!!!
- struts2.0中struts.xml配置文件详解
- 第25版 OpenStack Yoga 已发布:稳定性与创新并重
- springboot+nodejs+vue+elementui教师下乡支教岗位申请系统java项目源码
- java 长链接转短链接_java长链接转短链接代码和如何跳转使用
- java工程设计选题管理系统_基于javaee的毕设选题测试及管理系统的设计与实现 毕设.doc...
- 东南大学计算机科学与网络,顾冠群
- Unity之EditorUtility-ProgressBar进度条-一
- php 连接数据库有很多notice,PHP Notice: undefined index 完美解决方法
- 两天价网站背后重重迷雾:做个网站究竟要多少钱
热门文章
- 电商平台后台管理系统--->操作方法说明
- android binder - 客户端(c++层) 调用 服务端(java层),服务端回调客户端 例子
- [ARC086]F - Shift and Decrement 位运算+数论+DP
- C++二叉排序树代码实现
- Codeforces Round #702 (Div. 3)---C. Sum of Cubes 两种方法 cbrt()函数应用
- 《易学C++(第2版)》——2.2 如何创建一个程序
- 十二星座物语,女生最喜欢的星座性格【1】
- 【Pyton安装】Python入门最详细的环境安装(附步骤),按照步骤点,几分钟就可以完成哦~
- MPB:南农韦中组-​​根际细菌产铁载体能力的高通量检测
- 推荐1个易上手代码开源的好用的H5网页编辑工具