JS 求平方根,牛顿迭代。

简单阐述原理。

这里涉及到数值分析的知识:

假设 X_{k}  逼近与 X_{*} 那么通过X_{k}的导数(及 \left (X_{k} , f\left ( X_{k} \right ) \right )  该点所对应的斜率)我们能得到一个更加逼近于 X_{*} 的 X_{k+1}  

下图即为牛顿法的迭代公式。

 参考视频:【数值分析】速成牛顿迭代法|考试宝典|一定能听懂!!_哔哩哔哩_bilibili


下面我们就来套用下牛顿迭代的公式。

假设a * b = x^2(均>0的情况下),那么 (a + b)/2 更加逼近 x。

/**
 * @description: 牛顿迭代求平方根
 * @param {*} x  入参
 * @param {*} n  辅助参数,越逼近目标(即x的根)越好。
 * @return {*}
 */
function sqrt(x, n){
  //x/2 是个不错的辅助参数
  n = n || x/2;
  let res = ( x/n + n ) / 2;
  if(
      res * res == x ||           //得到精确结果
      res == ( x/res + res ) / 2  //或到达精度极限
    ) {
    return res;
  } else {
    return sqrt(x, res)           //迭代
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值