文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

web前端:原生js数值开根算法

lzzyok小精灵

lzzyok小精灵

2024-04-23 23:15

关注

  在程序语言设计中,常将一些常用的功能模块编写成函数,放在函数库中供公共选用。要善于利用函数,以减少重复编写程序段的工作量。函数分为全局函数、全局静态函数;在类中还可以定义构造函数、析构函数、拷贝构造函数、成员函数、友元函数、运算符重载函数、内联函数等。

  不借助Math函数求开根值

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

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

  比较mid^2与n大小

  =输出;

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

  <改变范围,left=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轴交点的值一定是全部大于或者小于解的,迭代下去只会逼近解

  <!DOCTYPEhtml>

  <html>

  <head>

  <metacharset="UTF-8">

  <title></title>

  <script>

  //普通迭代法,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;

  }

  elseif(initNum>result){

  leftNum=middleNum;

  middleNum=(leftNum+rightNum)/2;

  }

  else{

  rightNum=middleNum;

  middleNum=(leftNum+rightNum)/2;

  }

  }

  middleNum=middleNum.toFixed(saveNum);

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

  }

  

  //牛顿迭代法

  functionsqrt(initNum,saveNum){

  //当n>=1时,从n开始迭代;当n<1时,从1开始迭代

  letresult=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;

  }

  </script>

  </head>

  <body>

  <divclass="mui-input-row">

  <label>请输入</label>

  <inputtype="text"placeholder="开根值"id="inuptNum">

  </div>

  <divclass="mui-input-row">

  <label>保留</label>

  <inputtype="text"placeholder="几位小数"id="saveNum">

  </div>

  <divclass="mui-input-row">

  <label>结果</label>

  <inputtype="text"id="result">

  </div>

  <buttontype="button"class="mui-btnmui-btn-bluemui-btn-block"onclick="sqrt(parseInt(document.getElementById('inuptNum').value),parseInt(document.getElementById('saveNum').value))">计算</button>

  </body>

  </html>

  函数是指一段在一起的、可以做某一件事儿的程序。也叫做子程序、(OOP中)方法。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     442人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     206人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     169人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     248人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     77人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯